Kod yorumlarında başlık yazıyor musunuz? [kapalı]


17

Yazdığım bazı eski kodlara göz atıyordum (üniversitede ilk yıl) ve kodun çeşitli bölümlerinden önce yorum başlıkları yazdığımı fark ettim. Gibi şeyler (bu bir Tekel oyunundan):

/*Board initialization*/
...code...

/*Player initialization*/
...code...

/*Game logic starts here*/
/*Displaying current situation*/
...code...

/*Executing move*/
...code...

/*Handle special event*/
...code...

/*Commit changes, switch to next player*/
...code...

Bu kod gerçekten süper açıksa gereksiz ve tartışmasız gereksiz olabilir, ancak dosyada tarandıkça, gerçek koda pek bakmama rağmen ne olduğunu ne kadar güçlü hissettim beni şaşırttı. Bunu kesinlikle belirli koşullara uygun olarak görebiliyorum, o yüzden merak ediyorum. Sizce bu iyi bir fikir mi? Yoksa çok mu?

Yanıtlar:


24

Bu bir kod kokusudur. Bu ne diyor, neden değil .

Bu gerekliyse, kodu küçük işlevlere bölün.


4
Fonksiyonlara sahip fonksiyonlara sahip olmanın bir anlamı yoktur.
Paul Nathan

30
doğru: kod gibi bir yorumu hak ediyorsa /*Board initialization*/, muhtemelen adlı bir işlevde olmalıdır InitializeBoard. Kod yapınız yeterince açıksa yorum yapmanız gerekmez.
Tim Robinson

3
"Ne" bilmek iyidir ve genellikle koda bakmakta belirgin değildir. Bu yorumlar genel amacı açıklığa kavuşturmaktadır.
DarenW

4
@DarenW - ancak işlevler / prosedürler / yöntemler de geçerlidir. Ve daha sonra , kodu modüle etmenin ek faydası vardır, bu da anlaşılmasını kolaylaştırır .
Stephen C

3
Bunun bir başka yararı InitializeBoardda InitializePlayer, çoğu IDE'nin işlev / modül / sınıf tarayıcı listelerinde veya gibi işlevlerin görünmesi, ancak yorumların görünmemesidir. Daha kolay gezinme.
Steve Fallows

13

Bunu her zaman yaparım. Her ikisi de kodun ne yaptığını işaretlemek ve muhtemelen daha da önemlisi, dediğin gibi, bir kod parçasını taramayı ve bulmayı kolaylaştırmak için. Bazen de, yorumlarda yer alan bir süreci yazacağım ve yorumların altındaki kodu 'giderim'.


7
+1 - netlik iyi bir şeydir. Bunun bir kod kokusu olduğunu söyleyerek onaylanan cevaba katılmıyorum. Netlik eklerse - yapın.
hızla

2
OAOO'yu ihlal ederse yapmayın. Gereksizdir ve belgelediği kodla senkronizasyondan çıkma eğilimindedir. Kodu bir işleve yerleştirin ve işleve yaptığı işle adlandırın. Modern IDE'ler işlev adını değiştirmeyi ve tüm referansları güncellemeyi kolaylaştırır. Bu şekilde tüm örnekler güncel kalır.
Scott Whitlock

3
Benden +1. Büyük kod dosyalarında, mantıksal bölümleri ayıran boşluktan daha fazlasına sahip olmayı seviyorum. Evet, eğer fonksiyonunuz loooooong ise, onu bölmeniz gerekir, ancak parçalar yorumlarla ayrılırsa okumayı çok daha kolay buluyorum.
Anthony

6

Nedenini açıkça ifade etmeden kaç kişinin uygulamayı beğenmediğini ilginç buluyorum. Bunun gibi yorumların kaşlarını çatmasının nedeni, tek sorumluluk ilkesini ihlal ettiğinizin bir işareti olmasıdır.. Bu özel isim genellikle sadece OO bağlamında kullanılır, ancak genel konsepte uyum da denir ve diğer paradigmalar için de geçerlidir. Okullar, genellikle bir derece programının sonuna kadar bu tür tasarım ilkelerini öğretmezler. Aslında, bazı öğretmenler her şeyi tek bir dosyaya sıkıştırarak şeylerin daha kolay derecelendirilmesini sağlamak için ihlalini zorunlu kılar. Bu nedenle, birinci sınıf cehaletiniz mazur görülebilir ve "bir şey" yanlış olduğunu fark ettiğiniz ve yorumlarla açıklığa kavuşturmaya çalışmanız, koşullar altında bile övgüye değerdir, ancak genel olarak, yorumlarla kâğıt üzerinde çalışmak yerine belirsiz bir tasarımı düzeltmek daha iyidir.


4

Bu şeylere kodu daha açık veya açık hale getirmenin bir yolu olarak bakıyorum. Her tarafı nedir dosyasındaki yöntemlere dayalı ebilmek söylemek o zaman ancak eğer gerek yoktur var o zaman yararlı olabilir çoklu bölümleri için. Belki bir kod dosyası çok büyük olduğunda, bu tür yorumlara olan ihtiyacı azaltabilecek şekilde parçalanması gerekir.

Eğer bir takım içinde bir standart ile gelip böylece en azından aynı şekilde kodlama ve yorum böylece kod bakmak daha kolay olur yorum yapmak eğer söyleyebilirim.


3

Bunu yapıyorum çünkü sık sık kendime niyet veriyorum ya da "Veri temizleme burada başlıyor" gibi şeyler için uygun bir yer imi koyuyorum. Genellikle bu başlık altında ne yaptığım ve neden yaptığımın mantığı hakkında kısa bir bilgi vereceğim.

Artıklığı severim. Laboratuvar defterimi bir sebepten ötürü kaybedersem veya yıllar önce yazdığım kodu tekrar gözden geçirmem gerekirse, yaptığım şeyi ve neden yaptığımı bir araya getirmekten hoşlanmıyorum. Bu mantığın en azından bir kısmı kodda ise, en azından onunla tekrar çalışabilmem için yeterince belgelenmiştir.

Sanırım ona olan eğilimimin bir kısmı, programlamamın adil bir miktarıdır ve bu nedenle istatistiksel olarak tekrarlayıcıdır. Aramak için yararlı bir şekilde adlandırılmış bir işleve sahip olduğum birkaç parça kod olsa da, genel bir doğrusal model işlevi gibi bir şeyin birkaç düzine oldukça benzer kullanımına sahip olabilirim. Bunlardan hangisinin "Seçim A veya Seçim B veya C'ye karşı sonuçlar ne kadar hassas olduğunu" ve hangisinin başka bir şey olduğunu bulmak yararlıdır. Bu genellikle başlıklarla hızlandırılır.


İş amacını / üst düzey amacını belirten yorumlar çok değerlidir. Onay ve destek anlayışını sağlarlar. Birim testlerinin de gereksiz olduğu iddia edilebilir - belgeleme ve anlama kodunun en azından test etmek kadar önemli olduğunu öneririm.
Thomas W

2

Bunun, düzinelerce işlevi olan devasa kaynak dosyalarınız olduğu ve bunları böyle parçalar halinde gevşek bir şekilde düzenleyebileceğiniz durumlarda yararlı olduğunu düşünüyorum. Ancak bunu daha küçük, daha odaklanmış kaynak dosyalardan daha iyi sevdiğimi söylemiyorum ...

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.