Bir projenin özellikle karmaşık olup olmadığını veya onu almakta yavaş olup olmadığımı nasıl değerlendirebilirim?


16

Büyük bir projede çok az ilerleme kaydediyorum. Kaynak çok büyük, çok sayıda nesne katmanı, makarna kodu, çoklu kalıtımın çift elmas grafikleri, orijinal yazar ayrıldığında donmuş yarı pişmiş özellikler ve kimse neden bu kadar çok parçanın tasarlandığını bilmiyor.

Herhangi bir yetkili programcı, hataları düzeltmek, yarı pişmiş şeyleri bitirmek ve yeni özellikler eklemek için yeterince iyi anlamaya biraz sorun yaşayacağını düşünüyorum. Ancak, tipik bir programcıdan daha yavaş gittiğimi sanıyorum.

Kaynağın alışılmadık derecede kötü olup olmadığını nasıl değerlendirebilirim ve sadece yapabildiğim kadar iyi yapıyorum, kaynak böyle bir proje için tipik ve yavaş zekâlı veya yetersiz kaldım mı?


11
Başkalarının kodunu anlamak bir empati eylemidir. Ne kadar hızlı gideceğinizi unutun ve ayrıca bir sürü aptal m ********** rs kodu yazan insanların ne olduğunu unutun. Bunu anlamak esneklik için bir alıştırmadır. Kaynağın alışılmadık derecede kötü olduğunu ve aşırı derecede öldürüldüğünüzü varsayalım ve işe geri dönün ve bu aptal forumlara takılmayı bırakın. Bu benim için de geçerli ... Kavga için kodum var.
Dan Rosenstark

2
Özellikle adı geçen kişiler patron, patronun kardeşi, patronun patronu veya patronun 'patronu' yeğeni vb. Olduğunda "ne kadar ..." unu unutun!
DarenW

2
Ah, eksik "neden" ler. Onları çözerken onları yerine koymayı unutmayın.

@DarenW - makarna kodu değil, spagetti kodu: D (Üzgünüm, zorundayım).
Jas

1
@ Makarna kodu için Google google ... sadece spagetti ;-) den daha fazla makarna türü var
Jürgen A. Erhard

Yanıtlar:


6

Bu soruya karar vermenin tek yolu, aynı sorunu çözmek için çok daha fazla programcı edinmek ve daha iyi olup olmadıklarını görmek.

Bu elbette nadiren pratiktir, görev iyi benliğinize düştü ve bilginizin sizi nerede başarısız kıldığını araştırarak, üzerinde yapabileceğiniz en iyisini yapmanızı sağlayın. Karmaşıklığın sizi tiltiği yerde ayırmak ve kimin umurunda olursa olsun ilerlemenizden haberdar olmak. O zaman endişe etmem ve devam etmem.


16

Öncelikle, "yavaş zekâlı ya da yetersiz kalmış olabileceğinizden endişe etmek için çok fazla zaman harcamam. Bazı projelerin kavranması zordur ve büyük projelerin hızlanması genellikle biraz zaman alır. "Aptal" olduğunuzu veya göreve hazır olmadığınızı düşünmek size hiçbir şekilde yardımcı olmaz.

Kodla ilgili yardıma ihtiyacınız olduğu anlaşılıyor, bu yüzden kaynaklarınızı düşünün. Orijinal kodlayıcılara erişiminiz var mı? Eğer mevcutlarsa, bilgi için iyi kaynaklar olabilirler. Hangi belgeler mevcut? Belgeler azsa, bir not defteri çıkarın ve kendi kişisel belgelerinizi oluşturmaya başlayın.

Buradaki büyük fikir, bu sürecin zaman almasını beklemeniz ve zihinsel olarak kendinizi yenmek için ne kadar az zaman harcarsanız, kodu analiz etmek ve çözmek için o kadar fazla enerji harcamanız gerekir. İyi şanslar!


5
+1 Yetkin olacak kadar karmaşık sistemleri gerçekten tanımaya başlamak 6 aydan fazla sürebilir. Kod tabanı "iyi" olsa bile, farklı geliştiriciler ve ekipler farklı stillere sahiptir ve sadece yataklarınızı almak için zaman alır.
Ryan Hayes

3
@Ryan ve bundan 6 ay sonra, sorunun kendisinin bir parçası
olursun

@ Benjol Evet, ben oradaydım.
Ryan Hayes

FWIW, bu teknede bulunduğumda (birkaç kez!), Sık sık mola vermek için sadece kod üzerinde oturmaktan daha yararlı buldum. Mola verdiğinizde kalkın ve fiziksel olarak bilgisayardan uzaklaşın. Esnetin, pencereden dışarı bakın, neye baktığınızı düşünün, sonra geri dönün ve biraz daha bakın. YMMV, ama bunu yaptığım zaman kendimi çok daha iyi bir ilerleme kaydederken buldum. İyi şanslar!
TMN

Kendi kişisel belgelerinizi oluşturmak için +1. Bu işi yaptığımda, çok sayıda not (kodda veya kağıtta) yapıyorum ve çok sayıda diyagram çiziyorum (bu genellikle benim için sadece bir şey anlamına geliyor) yardımcı oluyor. Tüm bunlara ek bir artı, kavramların kendi zihninizde pekiştirilmesidir.
Andy Hunt

6

Öğrenme eğrisini gördüm. Öğrenme Curce

Teori, başlangıçta adım atmanın zaman aldığını söylüyor. Hüner, adım yukarı noktasını hızlı bir şekilde geçmek. Düzenli olarak takılırsanız, yöneticinizden yardım isteyin veya en azından karşılaştığınız sorunlar hakkında onu bilgilendirin. Sürece hiçbir sorun için zamanlama için Tamam.


2

Her seferinde bir kez parçalara ayır

Durumunuz çok yaygındır, "kavramak" diğerlerinin de belirttiği gibi zaman alır.

Bulduğum şey, eğer "bir seferde bir parça" ile mücadele ederseniz , bir projenin ne kadar karmaşık olduğuna bakılmaksızın, onu çözeceksiniz. Sadece bu konuda mantıklı olmalısın.

Düğmeyle başlayın, kaynak kodunu araştırın , kesme noktaları koyun, neler olduğunu adım adım görün . Yerine getirmeniz gereken iki şey var:

  • Üst düzey genel bakış.
  • Yukarıda istenen işlevselliği uygulayan azgın cesur detaylar.
  • bir kısmını anladıktan sonra yeniden çarpanlarına ayırın.

"Her seferinde bir parça" diğer projelerde işe yarayabilir, ancak bu diğerlerinden türetilen çok fazla sınıf var, arkadaş sınıfları, birbirlerinin doğuşlarına işaretçiler, bağımsız olarak anlaşılabilecek birkaç parça var.
DarenW

Eminim karmaşık bir labirent (zaman içinde "büyüdü" bir şey). Ancak bir işlevle başlarsanız, sonuna kadar izleyemediğinizi mi söylüyorsunuz?
Darknight

Örneğin kullanıcı bir düğmeyi tıklattığında veri akışını veya olay sırasını izlemek imkansız hale geldi.
DarenW

1

Farklı bir bakış açısı almaya ne dersiniz: Bu kod hakkında bilmeniz gerekenler ve bunu ölçmenin bir yolu var mı? Örneğin, bir hatayı düzeltmeye çalışıyorsanız, bu kodu bir dilden diğerine geçirmeye çalıştığınızdan farklı bir dalış gerektirebilir, örneğin VBScript'ten C #'a gitmek. Geçerli koddan tüm gereksinimleri almaya çalışıyorsanız, bu çoğu zaman bu tür bir sorun olurdu şüpheli olsa da biraz zaman alabilir.


Bu yorumu beğendim. Kişinin belirli bir hedefi olmalı ve bu (ve sadece o) hedefi gerçekleştirmek için çalışmalıdır. Aksi takdirde, kaybolursunuz - Bir harita şeyi gibi.
NoChance

1

Yeni bir şey öğrenirken, birçok öğrenci “Lanet olsun, bu benim için zor. Aptal olup olmadığımı merak ediyorum. ”
Daha ileri gitmeden önce, aptal olmadığından ve bazı şeylerin zor olduğundan emin ol. ...

Bay Aaron Hillegass akıllı sözlerle.

Aptal değilsin, yavaş değilsin ve yetersiz kaldın. Aynı gemideyim, yeni bir role girdim ve mevcut kod tabanı inanılmaz derecede büyük ve tekrar tekrar aşırı gelişmiş olma belirtileri gösteriyor, hatta aldığım gibi bir noktaya gelmem haftalar aldı tam hıza yakın. Projenin tamamen yeni bir dil öğrenmek gibi olduğunu düşünün, bir gecede olmaz, sabır ister.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.