Modası geçmiş yorumlar şehir efsanesi midir?


38

Sürekli olarak "yorumların modası geçmiş olma eğiliminde olduğunu" iddia eden insanları görüyorum. Mesele şu ki, kariyerim boyunca belki iki veya üç eski moda yorum gördüm. Ayrı belgelerdeki eski bilgiler her zaman olur, ancak benim deneyimlerime göre kodun eski modası geçmiş yorumları oldukça nadirdir.

Kimlerle çalıştığımda şanslı mıydım? Bazı endüstriler bu soruna diğerlerinden daha yatkın mı? Gördüğünüz son modası geçmiş yorumların özel örnekleri var mı? Yoksa modası geçmiş yorumlar teorik bir problem hakkında gerçek bir yorumdan daha mı fazla?


30
Kabul. Eski kod bir yorum yaptı, şimdi bu çok gördüğüm bir şey - ve daha azını görmek istiyorum.
pyvi

8
Her şeyden daha çok yorum eksikliği görüyorum. Kötü adlandırma kuralları ile birlikte çalıştığım bazı şeyleri okumayı denemek eğlenceli bir oyundur.
P.Brian.Mackey

2
Çok eski moda yorumlar gördüm, bazıları sadece kötü yanıltıcı oldu. Kesinlikle hayır efsanesi yoktur, ancak çoğu kişi tarafından ve / veya uzun bir süredir karmaşıklıkla güçlendirilen projeler için geçerlidir. Bununla birlikte, yorumlara değil, koda güvenmeyi öğrendim (birden fazla iki satırı geçmeleri durumunda neredeyse hiç okumamıştım).
MaR

Tüm kariyerim boyunca çoğunlukla eski bir kodla çalışıyordum. Garip bir 30 yıllık Fortan77 kodunda modası geçmiş yorumlarla ilgili ciddi problemler yaşadığımda, düzinelerce defalarca olmuştur, ancak yorumların yeterli olduğu kodun sıfıra yakın bir yüzdesiydi. Bu yüzden katılıyorum, bir problemin ölçeğinin abartılmış olması gerekir.
SK-mantık

Sadece şansım, bunu gönderdiğimden beri senede birkaç tane gördüm. Sanırım bilinçli olarak onlara uzun zamandır hafızama koyacak kadar düşünmeden, onlara güvenmemeyi, sonra düzeltmeyi ve devam etmeyi öğrenmiştim.
Karl Bielefeldt

Yanıtlar:


33

Sürekli

Modası geçmiş ve yanıltıcı yorumlar yapan tek kişi olduğuma inanamıyorum. Kapalı şansta bu anlamada yardımcı olur:

Muhtemelen en önemlisi kodun yaşına bağlıdır. Bir sonraki faktör personelin cirosu olacaktır.

Eşit Ar-Ge ve bakım işlerini yapıyorum. AR&GE yeni bir koddur, genel olarak dayak yolu kapalı olan bir şeydir. Meslektaşlarımın çoğu, zaten orada bir kütüphanesi olmayan bir şeyi denerken çok fazla yorum yapılan açıklamada bulunduğuna inanıyor. Yorum / kod oranı normalden daha yüksek olduğundan, işlerin senkronizasyondan çıkması için daha fazla fırsat vardır.

Bakım kodu ... 10 yaşından büyük ve 5 yaşından büyük bir sistemde aktif bir bakımciyim. 10 yıllık kod ve yorumlar beklediğiniz gibi acımasız. 10 yıldan fazla bir süredir kod temeli içinde çok fazla el ele geçiriyorsunuz ve hiç kimse her şeyin nasıl çalıştığını bilmiyor. Takımdaki ciro oldukça düşük olduğu için 5 yıllık kod ve yorumlar oldukça iyi.

Neredeyse tüm hizmetlerde çalışıyorum, ürünlerimiz bile belirli bir müşteriye göre özelleştiriliyor.

Özel örnekler:

  • Bellek içi kopyalardan kaçınmak gibi belirli bir metodoloji için performans geliştirmeyi açıklayan yorumlar. Pentium 2’de MB’li RAM’de bir üst uç makinede çalışırken bu artık bir sorun değil.

  • Todos

  • Yorumlar dahil kopyala yapıştırılmış kod blokları. Yorum orijinal konumunda bir anlam ifade etmiş olabilir, ancak burada pek bir anlamı yoktur

  • Yorumlanan kodun tepesine yorum blokları (Orada kaç yıldır bulunduğunu kim bilebilir).

Tüm bunlarda, yorum ve kodları yazılımla aynı seviyede tutmama eğilimini görürsünüz. IDE'ler ve temel geliştirici alışkanlıkları bu konuda yardımcı olmuyor, gözüm onları geçme konusunda eğitildi. Bence eskiliğin yorumu yeşil alan ve aktif projelerden kaçınmak için nispeten ucuz. Kod / yorum oranını yüksek tutabiliyorsanız, güncel tutmak için çok önemli değil. Bir üretim sisteminde bir hata düzeltmesi için x saat bütçelendiğinizde, bu şeyleri avlamakta haklı çıkmanız biraz zor.


Yani temel olarak, yorumları tamamen görmezden geldiğinizi söylüyorsunuz, çünkü bu zaten çok büyük bir karmaşa, durumunuzu daha da kötüleştiriyor. Şaşırtıcı değil.
Steven Jeuris

5
@Steven - Ben şahsen, hayır. Artımlı gelişim için büyük bir inancı duyuyorum. Tamamen çözülemeyen kod tuzaklarının yeterince aşamalı bir çaba ile oldukça iyi bir şeye dönüştüğünü gördüm. Ancak, görmezden gelmek kesinlikle benim deneyimimdeki norm. Birkaç iç içe geçmiş 10000 çizgi sınıfına rastladığınızda haftalarca kataloglanmaya değecek bir problemle karşılaşırsanız, modası geçmiş yorumlar öncelik listesinin en altına düşme eğilimindedir.
Steve Jackson

1
@ Steve: Sizin durumunuzda o zaman tüm yorumları kaldıran bir betik oluşturacağım ve gerektiğinde sıfırdan yorum yapmaya başlayacağım. :)
Steven Jeuris

1
Eskiden çalıştığım ana kod üssü en az yarı yorumdu ve nadiren kod yorumladı. Eski yorumlar yaşamın bir gerçeği idi, doğru yorumlar son derece nadirdi ve belgeler hakkında yorum yapmaya bile başlamayacağım !!! görme ... Bu işten sonra daha azının iyi olduğunu öğrendim, kodun yoruma ihtiyacı varsa, muhtemelen daha açık bir şeyler yapmak için bir
refaktöre

4
Bazı korkunç örnekler gördüm Blocks of copy-pasted code including comments. Comment may have made sense in its original location, but hardly makes sense here. Örneğin, sınıf seviyesindeki yorumlar farklı bir sınıf hakkında konuşur.
Peter Taylor

18

"yorumlar modası geçmiş olma eğilimindedir."

Bunun bir problem olabileceğini bilmek için yeterince sık olduğunu gördüm.

Mesele şu ki, kariyerim boyunca belki iki veya üç eski moda yorum gördüm.

Herkesin yorumlara yeterince özen gösterdiği ve bakımını yaptığı bir ortamda çalışmak mümkün olacağına inanıyorum. Düzenlemekte olduğunuz kodun yakınındaki yorumlara bakmak ve uygun olduğunda güncellemek için küçük bir çaba. Yorumlar çok uzaktaysa, onları hemen farketmezsiniz, yine de kötü yorumlardı ve ilk etapta (ya da en azından oraya) eklenmemeliydiler.

Ayrıca, genellikle yorumların modası geçmiş olma eğiliminde olduğu ifadesiyle birlikte, bunun okunabilirliği azalttığı ve insanları şaşırtdığı ifadesini izler. Bu henüz deneyimlemediğim bir şey. Her zaman eski bir yorumla karşılaştığımda, neyin değiştiğini açıkça görüyorum ve yeni bir kodu belirtmek için, ek bir çaba göstermekle birlikte, yorumu uygun şekilde güncellemekteyim.


Tarafından yapılan son çalışmada Roehm ve arkadaşları. 2012 aşağıdakileri gözlemler:

21 katılımcı [28 kişiden] ana bilgilerini kaynak kodundan ve satır içi yorumlardan aldıklarını bildirirken, yalnızca dördü belgelerin ana bilgi kaynağı olduğunu belirtti.

Bu, kodun kendisinin genel olarak yorumlarının hala çok faydalı olduğu düşüncesine paraleldir. Bu, eski belgeler ve eski yorumlar arasında net bir çizgi çizilmesi gerektiğini gösterir .

Roehm, T., Tiarks, R., Koschke, R., & Maalej, W. (2012, Haziran). Profesyonel geliştiriciler yazılımı nasıl kavrar? 2012 Uluslararası Yazılım Mühendisliği Konferansı Bildirilerinde (s. 255-265). IEEE düğmesine basın.


Daha iyi hale geldikçe, tipik plug n chug kodunda hangi kodun yapıldığını anlamak için daha az yoruma ihtiyacım olduğunu öğrendim.
Paul Nathan

3
@ Paul Nathan, yorumlar hiçbir zaman kodun ne yaptığını açıklamamalıdır - kod daha iyi açıklar. Yorumlar , kodun yaptığı şeyi neden yaptığını açıklamak için vardır .
SK-mantık

2
@ SK-mantık: Argümanı anlasam da çok geniş olduğuna inanıyorum. Bir fonksiyonun yorumları (veya kod paragrafı / bloğu), fonksiyonun ismini ne yaptığını çok daha fazla (ve daha hızlı) netleştirebilir. Bu, özellikle halka açık fonksiyonlar için gereklidir. Kodun okunması ne kadar kolay olsa da, 10'luk kodun iki satırlı açıklamasını okumak hala daha hızlıdır. " API " belgesine sahip olmayan en sevdiğiniz API ile çalıştığınızı hayal edin . İşlevselliğinden çok daha az emin olabilirsin.
Steven Jeuris

evet, bir dokümantasyon eklemedim (örneğin Javadoc) - sadece " yorum " olarak adlandırılmayacak kadar yapılandırılmış .
SK-mantık

17

Eski yorumlar bir iş kokusudur. Modası geçmiş veya ihmal edilmiş ünite testlerine sahip olmak gibidir - bir zamanlar dükkanda aktif olan iyi işlemlerin kovboy kodlamasına dönüşmekte olduğunu gösterir. İşleri düzgün yapmak için zaman ayırmanın doğru "mühendislik kültürü" bozuldu. Proje / şirket muhtemelen teknik borca ​​giriyor.

Kısacası, evet, şanslıydınız. Kariyerinizde şu ana kadar oldukça iyi işletilen bir mağazaya sahipseniz, bunu görmemek oldukça mümkün. Fakat daha tipik, daha az iyi çalışan mağazalarda, bu kaosun geri kalanına paralel olarak gerçekleşir.


"Eski yorumlar bir iş kokusudur." Çok iyi koymak! Aynı şekilde kendi kendini belgeleyen kod da sadece yorum yapmadan çözüm değil, tembel bir 'kesmek'.
Steven Jeuris

10

Yorumlar testler gibidir, güncel olduklarında çok iyidirler, ancak yoksa kodun anlaşılmasını zorlaştırabilir.

Eski moda bir yorum hiç görmediyseniz, çok şanslıydınız.

Çalıştığım kod tabanlarının çoğu modası geçmiş yorumlarla doluydu ve genellikle yorumlar yerine genellikle karışıklık kaynağı oldukları için yorumları kesinlikle göz ardı ediyorum.


Hangi sektörlerde çalıştığınızı sorabilir miyim? Bunun diğerlerinden daha yaygın olup olmadığını merak ediyorum.
Karl Bielefeldt

Avrupa'da 3 farklı ülkede, daha çok büyük bir şirketin ve küçük bir şirketin danışmanı olarak çalıştım. Son zamanlarda bir SaaS geliştirme evinde.
Kim.Net

ayrıca bakınız: “Yorumlar bir kod kokusu”
gnat

10

Eski yorumlar genellikle JavaDoc'ta görünür:

  • Artık var olmayan argümanları listeleme
  • Tüm argümanları açıklamamak (eksik olanlar muhtemelen daha sonra eklenmiştir)
  • İstisnalar, vb. İçin benzer şeyler.

Ek olarak, bazen yorumlar, çoğu performans konusu kodun kendisinden daha çabuk bayatlanma eğiliminde olduğunda “bunu performans için burada yapın” gibi şeyler belirtir.


3
(Bir eleştiri değil - sadece bir çözüm sunmak) IDE'nin uyarıları bunun önlenmesi konusunda uzun bir yol kat edebilir. Daha sert önlemler alınması gerekiyorsa, bir javadoc derleme uyarısı / hatası ile derlemede başarısız olun.
Michael K,

1
Bu neden çok fazla görmediğimi açıklayabilir. JavaDoc tarzı yorum kullanan hiçbir yerde çalışmamıştım.
Karl Bielefeldt

4
@ Michael, IDE uyarıları hafif durumlarda yardımcı olur. Eski kod tabanımız, 20.000'den fazla Checkstyle uyarısı üretiyor, bu da dikkat etmeyi bırakmanın sınırını aşıyor: - (((IDE'ler kötü kullanıldığında, Javadoc'un mutsuzluğuna önemli ölçüde katkıda bulunabilir. Kod veritabanımızdaki saçmalıkların çoğu açıkça kodlanmış.)
Péter Török

4

Zaman zaman modası geçmiş yorumlarla uğraşıyorum. Bu kesinlikle bir şehir efsanesi değildir. İnsanlar en kötü uygulama listelerinde belirtmezler, çünkü size çok sık vururlar, çünkü bunu yaparken genellikle size zaman ve emek harcar.

Kod tabanında, en eski yorumların çoğu, çağrısına yakın olan ve yöntem bildiriminin yakınında olmayan, davranış davranışını tanımlayan (anti) modelin kullanılmasından kaynaklanır. Birisi uzun bir kod parçasını şu anda yalnızca bir kez çağrılan ve daha sonra yöntem çağrısını yorumlayan bir yönteme çıkardığında olur. Böylece böyle bir şeyle sonuçlanır:

featureList = GetFeatures();

// Sorting features and deleting empty ones from the list...
ProcessFeatures(featureList);

Ve yöntem yorum yapılmadan aşağıda bir yerde ilan edilir. İnsanlar, yıllar içinde, teknik özelliklerin ve hataların düzeltilmesiyle uğraşan bu yöntemlerle uğraşıyorlar ve sonunda listeyi sıralamamış ve boş özelliği bulduğunda bir istisna atan bir yöntemle karşılaşıyorsunuz. Bu yüzden yukarıdaki yorum, hata ayıklayıcıda bir süre size mal olacak eski bir yorumdur. Bunlar bazı kod tabanlarında oluyor.


3

Bunu kendine sor. Hiç bir kod satırını değiştirdiniz, ilgili yorumları değiştirmediniz veya yenilerini eklemediniz mi?

Çok sayıda eski kodla çalıştım ve yorumlar bazen ilgili bile değil.


2

Çoğunlukla, deneyimlerim seninkilerle eşleşiyor, ama kod üssünde bunun doğru olduğu bir davaya girdim. Yıllar önce müşteri ile "iyi şartlarda" olmayan bir danışmanlık mağazası tarafından yazılmış bir uygulama idi.

Şirket kodu yorumlayan istisnai bir iş yaptı, ancak orijinal devir işleminden bu yana sürdüren programcılar, kendileri için fena olmayan “sadece kesinlikle neyin değiştirilmesi gerektiğini değiştir” zihniyetinin bir parçasıydı. Ne yazık ki, yorumlara karşı da aynı tutumu korudular ve yorumlar ile zaman içinde kod arasında oldukça büyük bir bağlantı kopmasına yol açtılar.


2

Eskiden çok fazla açıklayıcı yorum görmüyorum, ancak yıllardır orada olan birçok TODO yorumu görüyorum. Keşke zaman kapsülleri gibiyse ve şöyle bir şey söyleseydi:

//TODO: In 15 years AND NO SOONER... actually implement this method.

1
Bu durumda sorun muhtemelen TODO'ların kötüye kullanılmasıdır. TODO'ların yalnızca kod gerçekten işlevsel olduğunda kullanılması gerektiğine, ancak daha sonra iyileştirmeler yapılabileceğine inanıyorum, bu nedenle TODO: implementtür yorumlar olmamalı ve gerçekte kimsenin geri dönmemesi önemli değil. Ne yazık ki, pek çok insan bu kurala uymuyor ve bir noktada bazı üretim kodlarında sizin gibi bir yorumda bulunmak istiyorum. Günümü gün ederdi.
Pwny

1
C # NotImplementedException bu amaçlar için kullanıyorum.
Steven Jeuris

2
Pwny, TODO'ları yalnızca kontrol etmeden önce yazmayı planladığım ve yazmamı düşündüğüm şeyler üzerinde kullanıyorum. Bundan daha uzun vadeli olan herhangi bir şey, bunun yerine, bir hata izleyiciye ait olduğunu düşünüyorum.
Karl Bielefeldt

@Karl Bielefeldt Bu da çok mantıklı.
Pwny

2

Üzerinde çalıştığım son 3 projede, her biri modası geçmiş, yanıltıcı ve sadece kod tabanından yararsız yorumların kaldırılması için birkaç gün geçirdim. Mümkün ve gerekli olduğunda, onları daha uygun yorumlarla değiştiririm, ama çoğu zaman bu sadece yorumu silmek ve devam etmekle ilgili bir soru.

Aynısını, diğerlerinden üstlendiğim her kod tabanında hemen hemen yaptım, genellikle bir süre bakımsız kaldıktan sonra ve orijinal sahipler çoktan gitti ve / veya uygun bir devir yapmak konusunda isteksiz veya yeteneksiz.


1

Yorum kullanımındaki düşüş olabilir. Birinin kodunun ne kadarı kalifiye? Birincisi, birisi aslında eski olmaları için yorum içermelidir. İkinci olarak, yorumlanan kod değiştirilmelidir. Yüksek bir kod yüzdesinin uygun olduğundan emin değil.

Büyük bir başvuruyu mahvetmek ve zamanınızı çok fazla harcamak için yalnızca bir yoruma güvenmek zorundasınız.


0

Çok fazla kod alan bir kuruluşta, yorumların senkronize edilmesini sağlamak zordur. Neler olduğunu anlamanın en iyi yolu, üzerinde çalıştığınız modülün kontrol akış diyagramını çizen yazılımları kullanmaktır. Yazılımın ne yaptığı hakkında bir fikir edinmenin tek yolu budur.

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.