Sıkı bir son tarih ile karşı karşıya kalındığında başkasının kodunu temizlemek ne kadar önemlidir? [kapalı]


38

(HTML / CSS kodundan bahsediyorum (programlama dilleri değil) ancak programcılarla aynı sorunla karşı karşıya olduğumuzu düşünüyorum.)

Bir ekibin üst düzey ön tasarımcısıyım ve sık sık gençlerin çıktılarını sıkı teslim tarihlerinde yeniden çalışmak zorunda kalıyorum.

2 sorunla karşılaştım:

  1. Kodlama stilleri biraz karışıklık yaratıyor.
  2. Estetik iyi değil.

Kodlama stilleri, bulduğum gibi, uygun standart / standart olmayan karışık bir çanta. Kodu temizleme ya da sadece kendi kodlarıyla başa çıkma (hatta bir şeyi nasıl yaptıklarını kopyalama) arasında kalıyorum.

Kötü alışkanlıklar öğrenebileceğimi düşündüğüm için kodlama stillerini izlemenin sinir bozucu olduğunu düşünüyorum. Ancak bu, son teslim tarihine ulaşmanın en hızlı yoludur.

Daha fazla deneyime sahip olanlar için hangisi daha etkili? Temizliği sonraya saklamalı mıyım? Veya değişiklikleri yaparken yol boyunca temizlik?

(Kulağa küstah gelmek istemem ama gerçek bu. Daha iyi kod yazmaları daha uzun sürecek. Biliyorum, başladığımda dağınık kod yazdım.)


1
Bu seçeneğe sahipseniz, proje genelinde deyimsel değişiklikleri çok az zaman yatırımıyla yapabilen JetBrains ürünlerine (C # için Re-Sharper, Java için IntelliJ ve hatta bazı 'dinamik' dillere) bakın. (Aynı zamanda, etkileşimli olarak çocuğa neyin komik olduğunu öğretmek için de kullanılabilir . Ancak siz ve proje için aynı ortamlar üzerinde hemfikir olduklarından emin olun. önemli ve kozmetik aynı taahhüdünde değişiyor),
David Bullock


2
Stil kılavuzu / minimanual uygulamak? Demek istediğim, bu daha iyi bir kod yazmaz , ancak herkes önemsiz şeyler tek bir şekilde yazmayı gerektiren yönergeleri izleyebilir.
Peteris

10
Burada zaten ekip çalışması eksikliği ile ilgili bir problemin olduğunu gördüm. Gençleri eğitmeli ve beslemelisiniz ; sadece kodunu yeniden yazmaktan ve şikayet etmekten ibaret değil.
James

3
@Türkiye'nin Turing Makinesi'ni tasarladığından beri sanırım. Fakat noktaya geri dönelim, eğer kıdemli olanları duyuyorsanız, gençlerin sizi duymasını sağlamalı. Onlara doğru (ya da convetion) şekilde nasıl yapılacağını öğretin. Ancak fikirlerini sormak önemlidir ve belki de işleri daha iyi yapmak için bazı fikirleri vardır. Ayrıca önemsiz olmayan herhangi bir proje için ham CSS kullanıyorsanız, yanlış yapıyorsanız, projenizi LESS veya SASS'ı benimsemeye çalışın.
Hoffmann

Yanıtlar:


79

Soruna yanlış yoldan baktığınıza inanıyorum - çocuklara nasıl daha iyi kod yazmaları gerektiğini öğretme fırsatını kaçırıyorsunuz.

Alışkanlık kurallarını tekrar yazıyorsanız, küçüklerinize çalışmalarına değer vermediğiniz, morallerini düşürecekleri ve bir dahaki sefere daha iyi kodlamalarına yardımcı olmadıkları izlenimini verebilirsiniz.

Daha iyi bir yaklaşım, ekibinizin gelişim sürecine bir kod gözden geçirme görevi eklemek olduğuna inanıyorum. Her bir taahhüt edilmiş kodla ilgili olmak zorunda değildir ve (sizin yapmamalıydı diye düşünmemeliyim) sadece sizin tarafınızdan yapılmak zorunda değildir - ne zaman bir ekibin üyesi yeterince büyük bir işi bitirdiğinde Takım arkadaşlarından biri (veya daha fazlası) ile eşleşin, kodu onlara açıklayın ve tasarımı, kodlama tarzı, olası hatalar ve güvenlik sorunları, vb. hakkında yapıcı fikir ve eleştiriler alın.

Kod gözden geçiren takım arkadaşı siz olduğunuzda, uzmanlık alanınızdan çok daha fazla şey öğrenecekler, kodlarını tekrar yazdığınızda ( kodun değiştirilmesinin nedenini duyma şansı yakalarlar) ve daha az suç işleyebilirler.

Onlara ayrıca kod incelemeleri yapma şansı vermek, başkalarının nasıl kod yazdığını ve neden yazdıklarını görerek yeteneklerini daha da arttıracak ve özgüvenlerini artıracaktır.

Onlara gözden geçirmek için bir şans verirsen Onlar da çok şey öğreneceksiniz senin kodu. Siz de bir şeyler öğrenebilirsiniz - bu yüzden sadece gösteri için yapmayın!


% 100 sizinle aynı fikirdeyim, ancak bunun için son tarihlerin varlığında nasıl uygulanacağını merak ediyorum. Değerli sınırlı zamanımızın çoğunu emebilecek olsalar bile kod incelemeleri yapmanızı öneriyor musunuz (hem inceleme sürecinde hem de inceleme sonrasında yapılan düzeltmelerde)?
Phil

3
Bir ekip üyesinin işbirliği / rızası olmadan başka bir ekip üyesinin işini değiştirmesi gerektiğini düşünmüyorum. Kodu yazan kişi bundan sorumlu olmalıdır ve kod kritik bir hata içermedikçe ve orijinal yazar kullanılamıyorsa, sıkı bir programda olmak başka birinin kodunu değiştirmek için bir neden değildir. Kodu çok dağınık bulursanız, geliştiriciyle iletişim kurun ve bir sonraki sürüm için temizlemesini söyleyin.
Uri Agassi

23
@Phil Bir son tarih hesaplarken, kod inceleme oturumları için zaman dikkate alınmalıdır. Geliştirme sürecinin tepesinde fazladan bir adım değildir - gelişim sürecinin ayrılmaz bir parçasıdır.
dj18

2
Ayrıca, kod incelemesi yoluyla gençleri eğitmek artık belli bir zaman maliyetine sahip olabilir (dj18'in dediği gibi son teslim tarihine ve tahminlerine göre belirtilmesi gerekir), ancak sizi çoğu zaman serbest bıraktığı için zaman içerisinde iade edilecektir. daha özgün iş. Son başvuru tarihleriniz o kadar sıkıysa, asla bunu yapma şansınız olmazsa, ölüm spirali yerine kokuyor ...
Julia Hayward

2
@JustinPaulson beni yanlış anlamayın - birisinin bazı kodlar yazması, bu kodu "onun" yapmaz. Bir hafta sonra başka bir ekip üyesi bu kodu değiştirmesini gerektiren bir görev alacak ve kesinlikle ihtiyaçları için kodu değiştirmesi gerekiyor. Bununla birlikte, birisinin temizlik yapmak için bir başkasının kodunu 'temizlemesi' gereken bir kullanım durumu görmüyorum, özellikle de sıkı bir tarihte son dakika olarak.
Uri Agassi

29

Bunu daha önce de söyledim ve tekrar söyleyeceğim: "çalışma kodu güzel koddan daha değerli".

Kod değiştirirseniz, davranışını değiştireceğiniz için şansınız yüksektir, eğer bu test edilmiş kodsa, o zaman tüm test çabalarını geçersiz kıldınız ve testleri tekrarlamanız gerekecek.

Elbette gençleri temiz bir anlaşılır kod yazmaya teşvik et, ama yazdıkları her şeyi tekrar yazacak olursan, işverenlerini birkaç kez harcıyorsun. Gençlerinizin parasını ödemek zorundalar, daha sonra gençlerinize yapmaları için zaten ödemiş oldukları şeyi yapmaları için para ödüyorlar ve sonra sizi gerçekten işe aldıkları işi yapmak için bir kez daha ödüyorlar.


11
"eğer bu test edilmiş kod ise, o zaman tüm test çalışmalarını geçersiz hale getirdiniz ve testleri tekrarlamanız gerekecek." Hayır, herhangi bir test çabasını geçersiz kılmadınız. Yine de her bir iş için yapman gereken testleri tekrar yapman gerekecek . Bu çok uzun sürerse, olanaksız olduğu kabul edilirse, testler saçmadır ve düzeltilmelidir.
l0b0

7
"Çalışması" için sürekli özensiz kod yazmanın büyük çamur topuna yol açacağına dikkat etmek gerekir . Kural dışı bir istisna olup olmadığı iyidir. Kural haline gelirse, patronunuzla konuşmanız ve son teslim tarihlerinin dikkate alınması gereken tek şey olmadığını söylemelisiniz.
Neil

20
Sorun şu ki, çirkin kod hızlı bir şekilde bozuk koda dönüşüyor.
Telastyn

1
@ramhound - elbette, ancak OP (ve hemen hemen herkes) sadece eski standartları kullanan kodlardan bahsetmiyor - garip, tutarsız, küfürlü koddan bahsediyorlar.
Telastyn

1
@JamesAnderson Bu son derece kısa görüşlü bir bakış açısı. Kod bir kez yazılır, ancak ürünün ömrü boyunca korunur. Kodlamanın çoğu yeniden düzenleniyor. Gerçekte ne zamandan beri boş bir ekrana kod yazıp, daha sonra düzenlemiyorsunuz ve beklendiği gibi çalışıp çalışmadığını görüyorsunuz? Bu nedenle, yeni bir sınıfa başladıktan sonraki ilk bir saatte bile yeniden canlanıyorsunuz. Sonraki hata düzeltmelerinde ve geliştirmelerde çirkin kodun yeniden düzenlenmesi maliyeti, kod incelemeleri ve ekibi net bir standarda götürmek için harcanan az bir zamanın maliyetinden daha yüksek olacaktır.
Scott Shipp

16
  • Kısa cevap: hayır. Zaman zor olduğunda, bazen kafanı eğip estetik mermiyi almalısın. ;)

  • Daha pragmatik bir cevap zaman kutulamaktır. Kodun belirli bir özelliğini gözden geçirmek ve temizlemek için bir saat bütçeleyin. O zaman kontrol et ve gerçek bir iş yap. Ancak bunu kısıtlama konusunda kendinize karşı dürüst olun.

  • Bazen, biraz da olsa temizlik işleri daha hızlı yapar. Bazı hızlı arama ve değiştirme türü değişiklikleri bile her şeyi daha erişilebilir hale getirir.

  • Stil savaşlarına karşı dikkatli olun. Özellikle, son başvuru tarihi olan bir durumda, diğer programcının yapacağı bazı stilistik tercihleri ​​geri alacaksanız, o zaman bu soruları nasıl ele almak istediğinize karar vermek için zamanınız olana kadar beklemeniz daha iyi olacaktır. stilistik konular işbirliği içinde. (Bu, bazıları vermek ve almak anlamına gelir.)

Ancak cevabında bir yargı değeri var. “Orta derecede” önemli olduğunu söyleyebilirim. Temiz kod gerçekten çalışmanın daha hızlı çalışmasını sağlayabilir ve sonuçta kod kalitesi teslim edilebilir bir parçasıdır. Temizleme için biraz zaman harcamadan koda (kendi koduma bile) dokunabileceğimi sanmıyorum. Ancak, stil ve format ile uğraşmanın ve stil savaşlarının, kodu üretime almaktan daha önemli olmadığından emin olun .


9

Kodu düzeltirken ve son tarihi alırken normal olarak iki kural kullanırım:

Kod korkunç ama makul bir zamanda bir sorun bulmak ve düzeltmek mümkündür

Bir sorunu çözdüm ve gerisini sağlam bıraktım .

Kod o kadar dağınık ki orada bir sorun bulmak gerçekten zor. Bir şeyi tamir etmek derhal başka bir şeyin kopmasına neden olur. Bu kodu sıfırdan yazmak, düzeltmekten daha hızlı olacaktır.

O zaman , kodu yerelleştirmek ve düzeltmek için yeterince temiz olana kadar yeniden yazma / refaktör dışında başka seçeneğim yok .

Sınırda geçerlidir:

Kod dağınık ve gerçekten kötü. Bir hatayı makul bir sürede düzeltmek hala mümkündür, ancak kod yapısı bakımını gerçekten zorlaştıracaktır. Herhangi bir yeni özelliğin yeni hatalar ortaya koyması veya önemli performans düşüşüne neden olması çok muhtemeldir.

Bu durumda, kod düzeltilmelidir, ancak yalnızca yeni özellikler uygulanacaksa, boşta kalma süresi boyunca, son teslim tarihine kadar hiçbir zaman hata düzeltme zamanında!


“Sınırda durum” ile ilgili sorun, diğer modüllerin bu kodu kullanan yaylanma eğiliminde olmalarıdır. Diğer modüller artık “yanlış / istenmeyen” davranışa bağlı olabileceğinden, bu durum çok riskli hale geliyor. Bu yüzden, onu her gördüğünüzde sizi cızırdatan ve iş için başka bir yere gitmek istemenizi sağlayan, bakımı zor olan bir kodla sıkışıp kalıyorsunuz. En azından, kötü kodun ne yaptığını bilen biri tarafından duvardan kaldırılması gerekiyor. Bu şekilde, daha sonra, birisinin etrafta dolaşmak için vakti olana kadar bırakma riski kadar riske girmeden düzeltilebilir.
Dunk

6

Prosesinizin hangi noktasında bu problemi bulduğunuzu bilmek isterim?

Hiç kuşkusuz, hiçbirimizin içinde bulunmadığı, tanıtılan ya da konuşlandırılan tüm kodların mükemmel olmadığı bu büyülü ideal dünyada. Öyle değil, pragmatik olmanız gerekiyor.

Ancak, bir kod inceleme süreciniz varsa, test etmeden önce bunu vurgulamanız gerekir. Son teslim tarihlerine karşı sürekli olarak çalışıyorsanız, teslimatla ilgili tahminler herhangi bir geliştirme sürecinin önemli bir bileşeni - yani - kod incelemesi - boğulma anlamına mı geliyor?

Gençler asla arkanıza yaslanmayı öğrenmeyecekler ve bir şeyleri yapmak için zaman ayırmazsanız, öğrenmek için dev sürecinin bir parçası olacaklarsa, daha iyi şeyler yapmayı öğrenemezler. Bana öyle yapmıyormuş gibi geliyor.


4

Genel kültüre bağlı. Sıkı son tarihler sporadik ise, daha sonra temizlik yapmanız gerekeceğini kabul edin. Eğer sabitlerse, yapısal olarak teknik borç yaratıyorsunuzdur ve sorunu yönetimle birlikte üstlenmelisiniz. Endişelerinizi ele almazlarsa, şirket kültürünün büyük olasılıkla yakında Darwin prensipleriyle buluşması nedeniyle başka bir iş fırsatı aramaya daha iyi başlayın.


3

Gelecekte sorunu gidermeye yardımcı olmak için, tüm çalışanların izlemesi gereken bir iç Kodlama Standartları ve Uygulamaları belgesi hazırlayın.

Geçerli toplu iş için, kodu yeniden düzenlerken S&P belgesine göre kodu temizleyin, ancak yalnızca yeniden denetlerken.


Kodlama standartlarının ve uygulamalarının karşılanmasını sağlamak için oooooodles para harcamak isteyen büyük, süreç odaklı şirketler için çalıştım. Otomatik araçlar onları zorlamaya başlayana kadar ASLA ÇIKTI.
Dunk

@Dunk ABD ordusu "büyük ve süreç odaklı" sayılıyor mu? Her zaman S & Ps kullanıyorlar: stroustrup.com/JSF-AV-rules.pdf
Casey,

Muhtemelen kodlama standartları ve uygulamalarında altın standart olarak sayılırlar. Her sözleşme onları gerektirir. Ancak, şirketler standartlarına ve uygulamalarına uymaya çalıştıkları için, güvenilir ve tutarlı bir şekilde gerçekleşmez. Sadece çok fazla oluyor. Bu nedenle, önerinize "must" kelimesini de eklemek isterseniz otomatik araçlar gereklidir. DOD, manuel yollarla standartlara uymanın imkansızlığını kabul etti ve kongre, 2011 yılında savunma müteahhitlerinin bu kontrolleri yapmak için otomatik araçlar kullanmaya başlamasını gerektiren bir yasa çıkardı.
Dunk

BTW, kodlama standartlarına ve uygulamalarına gerek olmadığını söylemiyorum. Kesinlikle bir ihtiyaç var. Bunu otomatik araçlarla uygulamaktan da bahsetmediğiniz sürece, "tüm çalışanlar takip etmeli" kısmına karşı çıkıyorum.
Dunk

@Dunk JSF-AV ekibi bunu kabul etmiş olmalı, belgede S & Ps'i uygulamanın bir yolu olarak otomatik araçların kullanılmasından bahsedilmiştir (2005'te geri)
Casey,

2

Programlama konusunda oldukça deneyimsizim. Bununla birlikte, bir öğrenci olarak, çoğu zaman akran değerlendirmesini ve projeler üzerinde ortaklıklar kurmayı taahhüt ediyorum. Bir projeyi bitirmek için yeterli zaman varsa, devam edeceğim ve bir takım üyesinin açıklık ve okunabilirlik kodunu temizleyeceğim. Sık sık değil, ilk 100 satır boyunca elemeyi bile zor bulacağım. Bu gibi durumlarda, bir programcıya daha iyi alışkanlıklar ve kodlamalar öğretmek için yardım etmek için elinizi uzatmaya istekli değilim. Yeterli zaman yoksa, basitçe kopyala / yapıştır yapıyorum ve projelerimi, zayıf arayüzleriyle başa çıkmak için büyük resme dahil ediyorum. Daha sonra, kodlama tekniği hakkında birçok öneride bulunacağımdan eminim. Akran incelemesi söz konusu olduğunda, yapıcı eleştiri (ne kadar istenmeyen olursa olsun) sadece uzun vadede hem kendimize hem de kendime yarar sağlar.

Genel olarak, eğer ayıracak vaktiniz varsa, yeni gelenlerinize çalışmalarını nasıl yürüteceklerini öğretin ki herkesin yararına olacaktır. Bir dakikanızı ayırın ve onlara neyin işe yaradığını ve neyin işe yaramadığını öğretin. Vaktiniz yoksa, şimdilik çalışmaları ile çıplak olun ve şansınız olduğunda onlara geri döndüğünüzden emin olun. Bir şeyleri yapmanın daha iyi yolları olduğunu bilmelerini sağlayın, özellikle gelecekte onlarla birlikte çalışacaksanız.


2

Genel kaliteyi arttırmak, daha büyük bir grup için tek bir kişiyi "filtre" olarak kullanmaktan çok daha üstündür. Bu notta:

  • İkili programlama , nasıl geliştirileceğini anlamak için kod gözden geçirmenin karmaşık bir sürümü gibi çalışır - bu, okumak ve yapmak, anlatmak ve göstermek arasındaki fark gibidir. Kodları izlemek ve değişiklikleri hızlı bir şekilde tartışmak, sadece nasıl yapıldığını değil yeniden yapılanmanın ve iyi kodun nedenini anlamak için son derece faydalıdır. Tecrübelerime göre, tek başına gelişmekten daha hızlı , çünkü fikirler sürekli olarak atılıyor, genel olarak daha yüksek kaliteli bir sonuçla sonuçlanıyor ve hem kod hem de diğer kişinin düşüncesini daha iyi anlıyoruz.
  • Kaplama araçları kodlama stilinin izlendiğini doğrulayabilir. Bu, herkese kodun nasıl biçimlendirileceğini öğretir ve geliştiriciler standardı hatırladıktan sonra hatalar hızla düşmelidir.
    • Yapmadan önce sabit olduğundan emin olmak için derleme işleminin bu bölümünü yapın.
    • CSS, HTML, JavaScript ve sunucu tarafı kodunuzun ayrı ayrı kontrol edilebildiğinden emin olmak için dil şablonlarını kullanın.
  • Doğrulama araçları , üretilen çıkışın aklı başında olduğunu kontrol edebilir. Bunlar aynı zamanda derleme sürecinin bir parçası olmalıdır.

2

En iyi uygulama, kodlama stilinde bir kılavuza sahip olmak ve düzenli incelemelere sahip olmaktır, böylece bir son teslim tarihine yaklaşırken bu sorunla karşılaşmazsınız.

Tavsiyem size liderlik göstermeniz ve düzenli kod incelemesine öncülük etmektir. Düzenli kod incelemelerinin gerçekleşmesini sağlamak için yönetim en baştan itilmez, ancak deneyimlerim bir programcının düzenli kod incelemeleri planlamak ve düzenlemek için adım atarken etkilenecek olmalarıdır.

Çalışanlarınız için birçok faydası vardır:

  • daha iyi stil öğrenmek
  • daha iyi uygulamaları takip et
  • ne yaptıklarını araştırmayı öğrenmek

Ve kendinize bazı faydalar, olacaktır:

  • son dakika hata ayıklamaları sırasında daha verimli (ki her zaman olacak)
  • Hem ekibiniz hem de yönetiminiz tarafından hem uzman hem de lider olarak tanınmak

1
Kodlama tarzı kılavuzlarındaki sorun, kitap haline gelme eğiliminde olmalarıdır. Çoğu insan oldukça mütevazı bir kurallar dizisi öğrenmeye ve takip etmeye isteklidir. Ne yazık ki, bir noktada bu rehberler daima insanların tüm kuralları öğrenme ve hatırlama yeteneklerinin ötesinde büyür. Stil kontrollerini otomatik olarak yapacak bir araca ihtiyacınız var. Kod incelemeleri dilbilgisi kontrolleri yapmak için olmamalı, hatalar ve yanlış anlaşılmalar bulmak için yapılmalıdır.
Dunk

Bir Python programcısı ve kod inceleme lideri olarak, PEP 8'i ve Google'ın Python Style rehberini en az bir düzine kez geçtim. Programcılar onlardan öğrenmeyecekleri şeyleri, kendilerini yapanların arkasına düştüler. Bununla birlikte, bir stil denetleyicisinin de uygulayabiliyorsanız iyi bir uygulama olduğuna katılıyorum.
Aaron Hall

Python kullanmıyorum, bu yüzden mevcut araçları tanımıyorum, ancak stil kurallarınızı uygulamak için kod incelemelerine güveniyorsanız, o zaman sen yüzlerce (binlerce değilse) saatlerce harcıyorsunuz. aslında hiçbir zaman maliyeti için sizin için yapılabilir. Kesinlikle devam edemem ve evde yetiştirilen bir versiyonunu uygulayamam. Parayı, evde yerleşik olan herhangi bir şeyden daha iyi olacak şekilde, WAY olacak ticari bir versiyon satın almak için harcıyorum. Pahalı aletler bile defalarca kendilerine ödeme yapacak.
Dunk

Olduğu gibi açık kaynaklı bir bereket olan Python, binlerce geliştiriciye sahip olduğumuzdan beri gerçekten iyi ölçeklendirilen, bazıları birleştirip geliştirdiğimiz her türlü ücretsiz araca (pylint, pep8, pyflakes) sahiptir.
Aaron Hall

1
: "Bunu uygulayabilirseniz" snippet'inden bahsediyordum. Stil denetleyicisi alabilseydin, o zaman gitmenin yolu budur. Ekibinizin makul bir sürede bu kadar yararlı bir şey yapmasını sağlayabiliyorsanız, zaten yapmış bir şirket / açık kaynak olması gerekir. Bu yüzden sadece satın almak çok daha düşük maliyetli olacaktır. Eminim ki "üretilmemiş" bir ev yapımı versiyondan daha güncel ve daha güncel olacaktır. Binlerce geliştiriciniz varsa, otomatik bir stil / güvenlik kontrol aracının sağlayacağı tasarruf miktarını büyük ölçüde hafife aldım.
Dunk

2

Sebebini, “neyin işe yaramadığını” ve “müşteri için önemli olmayan şeylere zaman kaybetmeyin” cevaplarını görebiliyorum. Başbakanlar riskler konusunda endişeli ve bu iyi.

Ayrıca, çoğu insanın bu tür bir sorunu çözmediğini de biliyorum. Bunu da anlıyorum.

Ben, çoğu tarihin yapay olduğuna inanıyorum. Gerçek sistemler, teslim tarihlerinden daha fazla yaşar ve bugün yaptığınız kötü tasarım sonsuza dek size karşı savaşacaktır. İnsanlar birkaç ay içinde bir şeyler teslim etmek için koşuyorlar ve bundan birkaç yıl sonra, üretimde yürütülen bir koddaki bazı kötü kararları düzeltmek için harcıyorlar.

Teknik borç kelimesidir. Bir gün geri gelecek ve birileri bunun için para ödeyecek.

IMO, bence kırılmış tasarımı düzeltmekte haklısın ve profesyonel olmak (özellikle gençler için) aynı zamanda kibar olmasa bile nasıl eleştiri alacağınızı ve ondan nasıl öğreneceğinizi bilmeniz gerektiği anlamına geliyor. Aslında, hayatın çoğu zaten kibar değil.


0

Herhangi bir düz cevap aşırı olacak. Açıkça, son tarihin çok çirkin olduğu ve çirkin kod kullanmanız gereken durumlar olduğu ve kodun o kadar çirkin olduğu durumlarda, onu geliştirmek için son tarihi kaçırmaya değecek durumlar vardır. İhtiyacınız olan, hangisinde bulunduğunuzu yargılamaya yönelik yöntemler ve belki de daha iyi kod yazmak için zaman kazandıracak gerçekçi tarihler belirleme yöntemleridir.

Temizliği daha sonra saklamayın. Alışılmadık bir şekilde, yeniden yapmaktan başka bir işe yaramayan dönemleriniz olmadıkça, kodu düzeltmenin bir şekilde şu anda olduğundan daha yüksek önceliğe sahip olacağı "daha sonra" yoktur. Rutin "kırmızı, yeşil, refactor", "kırmızı, yeşil değil, iki hafta boyunca tamamen farklı bir şey yap, refactor". Gerçekçi olarak, bir dahaki sefere başka bir sebepten dolayı tekrar ziyaret edene kadar kodu değiştirmeyeceksiniz ve muhtemelen o zaman da bir son teslim tarihi alacaksınız. Gerçek seçenekleriniz şimdi düzeltmek veya bırakmak.

Tabii ki, iyi biçimli kod, bir daha okumayı planladığınızı varsayarsak, kötü biçimli koddan daha iyidir. Bir daha asla okumamayı planlıyorsan, toparlama . Testleri geçen ilk şeyi gönder. Ancak bu oldukça nadir bir senaryo, çoğu programcı için yaklaşık olarak hiç gerçekleşmiyor. Bu durumu gözardı ederek, düzeltmek için maliyeti ne kadar olacağına (gelecekteki bakımın artması durumunda) düzeltmemenin ne kadar masraflı olduğuna karar vermek için yalnızca gerçek davanızın ayrıntılarına sahipsiniz.

Kodun bakım gerektirdiği noktada düzeltilmesi zor olmayan bazı şeyler var, düzeltmek için olduğundan daha fazla. Bunlar şimdi düzeltmek için size pek faydası olmaz. En belirgin olanı düzeltmek için önemsizdir (boşluklar ve benzeri hatalar) ve bu nedenle bu soruyu sormak için zamanınız olduğunu, ama onları düzeltmek için zamanınız olmadığını hayal etmek zor ;-) Önemsiz olmayan ve bu türden iyi olanlar için Tamam İdeal olmayan bir kodunuz var ama pragmatik olmalısınız. İşe yarıyor ve son teslim tarihindesiniz. Kullanın.

Şimdi düzeltilmesi oldukça kolay olan bazı şeyler var, (a) herkesin kafasında o kadar taze değillerse; (b) onlara güvenen veya taklit eden başka şeyler de yazılmıştır. Bunlar şimdi düzeltmek için çok daha değerlidir, bu yüzden onları önceliklendirin. Bunları düzeltmek için son tarihlerinizde zamanınız yoksa, daha uzun süreler için elinizden geldiğince zorlamanız gerekir, çünkü kod üssünüzde borç biriktiriyorsunuzdur, muhtemelen bir dahaki ziyaretinizde ödemeniz gerekecek kod.

Tercih edilen kod sabitleme yöntemi bir inceleme sürecidir. İçinde bulunduğun problemleri yorumla ve değiştirmek için çocuğa geri gönder . Ne demek istediğine dair örnekler verebilir ve başvuruda bulunduğu koddaki tüm vakaları bulması için küçük çocuğa bırakabilirsin, ancak sadece onlar için kodlarını bitirmeyin. Bunu yaparsanız, onları geliştirmek için hiçbir araç vermeyin.

Sık karşılaşılan sorunları “bunu yapma, onun yerine yap” diyen ve nedenini açıklayan bir stil kılavuzuna yazmalısınız. Sonuçta bunun sebebi, "kodumuzu estetik olarak tutarlı hale getirmek için" olmaktır, ancak kurallarınızı bir gerekçeyle yazmaya hazır değilseniz, o zaman muhtemelen onları da zorlamamalısınız. Her programlayıcıyı seçmekte serbest bırakın.

Son olarak, süresiz olarak işleri ince ayar yapma eğilimine dikkat edin. Getiriler azalıyor ve hala iyi oldukları deneyimlerle öğrenmeniz gerekiyor. Yeterince neyin iyi olduğuna dair gerçekçi bir fikir edinmeniz kesinlikle şarttır, aksi takdirde, son tarihlerinizin size "yeterince iyi" bir kod oluşturmak için zaman tanıdığından emin olduğunuz pazarlığı yapamazsınız. Vaktini yeterince iyi olmayan şeyler için harca.


0

Birçoğunun daha önce de söylediği gibi, havaya attığınız şey her zaman aşağı iner. Bir kod tabanında güçlü bir tek biçimliliğe inanırım. Elbette bazı şeyler gerçekten o kadar önemli değil. Örneğin, yerel değişkenlerle ilgili kuralları bir prosedürde adlandırma. Bununla birlikte, yapısal bir şey için, derhal ana gövdeye birleştirilmeden önce sabitlenmesi gerekir. Bireysel prosedür veya sınıfa baktığınızda sadece biraz çirkin olabilir, ancak herkes "biraz çirkin" bir kod yazdığında, gerçekten hızlı bir bütün olarak gerçekten çirkin hale gelir.

Genellikle çalışan çirkin kod, zamanın% 90'ında iyi çalışır ancak kenarlarda dağılır. Sadece birkaç basit kurala uyarak genellikle yeterince basit olmadığından emin olmak. İlk olarak, her programcının ürettikleri her prosedür veya işlevsel blok için kesin kısıtlamaları tanımlaması ve belgelendirmesi zorunlu olmalıdır.

İkincisi, her prosedür için bu kısıtlamalara karşı bir test yapılmalıdır. Bu, programcının, taahhütte bulunmadan önce kendi prosedürüne karşı yerel olarak koşabileceği (ve yapması gereken) basit bir birim testi olmalıdır. Açıkçası, bunun uygun bir test takımıyla yönetilmesi daha kolay, ancak bir test yapılmadan bile yazılması ve muhtemelen yapıdan çıkarılabilecek bir kısmi sınıfta işlenmesi gerekir.

Üçüncüsü, önceden yapılandırılmış araçlarla ayarlanmış bir standart geliştirme ortamları paha biçilmezdir. Bir TS sunucusu bunun için mükemmel. Herkes aynı araçlara (ve sürümlere), aynı yapılandırmalara ve aynı güncellemelere sahiptir. Standartlarınıza göre önceden yapılandırılmış olan CodeRush veya Resharper gibi bir yeniden düzenleme aracı takın ve programcılara hala uyarıları olan tüm taahhütleri reddedeceğinizi söyleyin. Artık ekibinizin kod gözden geçirme zamanını gerçekte onların geri bildirimlerinden belirlenen kurallarınızı geliştirmek için kullanabilirsiniz ve ekibiniz daha sonra sürekli temizlik yapmak zorunda kalmadan kendilerini mutlu bir şekilde düzeltmektedir. Bir programcının kod eleştirisini, düzgün bir şekilde yapılandırılmış bir araçtan, standartların keyfi bir şekilde tanımlandığı veya doğru anlaşılmadığı bir meslektaşımdan veya patrondan alması daha kolaydır. Eğer IDE size kodunuzun yetersiz olduğunu söylerse, kimse onunla tartışmayacak ve düzeltilecek. Kod kalitesinin çarpıcı biçimde artacağını göreceksiniz ve takım bir bütün olarak birkaç hafta sonra refactoring ve temizlik için çok daha az zaman harcayacak. Programcılar ayrıca kurallara alışacaklar ve crap kodu yazmayı bırakacaklar.

Son olarak, buradaki basit düzeltme, programcılara iyileştirmeleri için bir teşvik vermektir. Programcılar tanım gereği rekabetçidir. Herkes en güzel veya en hızlı koda sahip olmak ister. Herkesi motive etmenin, üretkenliği arttırmanın ve beceriksizliği ortaya çıkarmanın iyi bir yolu, herkes için haftalık ağırlıklı bir puan kartı hesaplamak, örneğin reddedilen taahhütler ve kırılmış tarihler için puanlar almaktır. Haftalık ekip toplantısında ilk N'i gösterin, hatta ayın ortalamalarında ilk olanlara öğle yemeği bile verin.


0

Bir inceleme aracı kullanmanızı öneririm. Git tabanlı bir havuzunuz varsa, Gerrit inceleme aracını kullanabilirsiniz. Bir kaç reddedilen komisyonun ardından, takım takip etmek istediğiniz standartları öğrenecek ve gelecekteki taahhütler sizden ek bir çalışma gerektirmeyecektir.

Kararınız kabul edilmenizi bekleyecektir. Yeniden yazılması gereken herhangi bir satır görürseniz, yorum yazabilir ve ekip arkadaşlarınız kodu gereksinimlerinize göre kendi başlarına düzeltebilir. Standartları kodlayan ekip üyelerini öğrenmek için gerçekten iyi bir yol .

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.