Yorum yazma ve dokümantasyondaki en iyi uygulamalar


20

Bugünlerde yorum yapmak her zamankinden daha kolay. Java'da, yorumları sınıflara bağlamak için bazı güzel teknikler vardır ve Java IDE'leri sizin için yorum kabukları yapmakta iyidir. Clojure gibi diller, işlev kodunun kendisinde bir işlevin açıklamasını bağımsız değişken olarak eklemenize izin verir.

Bununla birlikte, hala iyi geliştiriciler tarafından yazılan eski veya zayıf yorumların olduğu bir yaşta yaşıyoruz - Yorumlarımın sağlamlığını ve kullanışlılığını iyileştirmekle ilgileniyorum.

Özellikle burada Java / Clojure / Python ile ilgileniyorum, ancak cevapların dile özgü olması gerekmez.

Yorumları doğrulayan ve otomatik olarak "dayanıksız" yorumları (örneğin, sihirli sayılar, eksik cümleler vb.) Veya yanlış yorumları (örneğin, yanlış yazılmış değişkenleri veya benzerlerini algılama) algılayan herhangi bir yeni teknik var mı?

Ve daha da önemlisi: Kabul edilmiş "yorum politikaları" veya stratejileri var mı? Kodlama konusunda çok sayıda tavsiye var - ama "nasıl yorum yapılır?"

Yanıtlar:


40
  • İsimler / belgeler size ne yaptığınızı söylemelidir .

  • Uygulama size bunu nasıl yaptığınızı söylemelidir .

  • Yorumlar size bunu neden yaptığınız şekilde söylemelidir .


6
Eğer neden yorumlar da söylemeliyim değil Başka bir yapıyor - yani önemli tasarım seçimler - Gelecek sürdürücüler aksi takdirde bu bilgileri olmaz çünkü.

2
Bir yorumun ne yaptığınızı söylemesi gereken birçok kez olduğuna inanıyorum. Bu sadece "neden" yorumları fikri bence bir anti-kalıptır. Tüm kodları herhangi bir programcının bir bakışta anlayabileceği kadar açık bir şekilde yazabileceğiniz bir efsanedir ve benim deneyimim, temiz kod yazmadığını düşünen çoğu programcıdır. "Herkes bu işlevi tanımlayıcı olarak adlandırmak zorunda değilim çünkü herkes ne yaptığını görmek için işlevdeki kodu okuyabilir" demekle aynıdır. - bu da mantıklı değil, değil mi?
dallin

2
@dallin kodunuz ne yaptığı konusunda net değilse; yeniden düzenlemeyi düşünün. aksi halde neden bu şekilde uygulandığını açıklayan bir yorum ekleyin (bu da ne kadar iyi olduğunu açıklar). Açıklayıcı adlarla karşılaştırmanız elma / portakaldır, açıklayıcı bir ad işlevin nerede kullanıldığını netleştirir ve işlevin kaynak koduna erişiminiz olmayabilir.
cırcır ucube

@dallin: "Tüm kodları herhangi bir programcının bir bakışta anlayabileceği kadar açık bir şekilde yazabileceğiniz bir efsanedir", Bob Amca sizinle bir kelime konuşmak ister. - "Bu işlevi açıklayıcı olarak adlandırmak zorunda değilim, çünkü herkes ne yaptığını görmek için fonksiyondaki kodu okuyabilir." yapıyor!
klaar

14

Bu tartışmalı olabilir, ancak tavsiyem mümkün olduğunca FEW yorumları yazmak olacaktır. Bunun yerine güzel, açık sınıf adları, değişken adları ve yöntem adları kullanın. Kodunuzu olabildiğince açık bir şekilde yazın; ve bunu kodunuzun en önemli özelliği olarak kabul edin (gereksinimlerini karşılaması dışında). Yalnızca mümkün olduğu kadar açık bir yöntem yaptıysanız ve yine de daha fazla açıklama gerektirdiğini düşünüyorsanız yorum yazın.

Ve herhangi bir şekilde bir sınıfı değiştirdiğinde, yorumların hala doğru olduğundan emin olmak zorunda oldukları örgütsel bir pratiğe sahip olun.


1
Bu iyi bir başlangıç, ama OP'nin sorusunu tatmin etmek için otomatik doğrulama ile ilgili gerçek endişelerini ele alan bir şey yazmanız gerektiğini düşünüyorum.
Robert Harvey

2
+1 - Yorumların yalnızca kodun neden yazıldığını açıklamak için kullanılması gerektiğini düşünüyorum . Ne yaptığını biliyorum if (a == b) then c();, ama neden yaptığını bilmiyorsam - o zaman bir yorum kullanılmalıdır :)
Deco

Deco - Tamamen katılıyorum. Belirli bir yöntemin bir bütün olarak sürece nasıl uyduğunu anlamak istediğimde yorumlar iyi. Başka bir deyişle, NEDEN bu yöntemi çağırırsınız veya neden yaptığını yapar.
Dawood diyor Monica

Yazılı kodu netleştirmenin yanı sıra, TODO yorumlarını kullanarak (kod düzeyinde) fikirleri, düşünceleri vb. Sakladığınızdan da emin olmalıyız. Örneğin, bir işlev / sınıfın geçerli veri boyutunu düzgün işleyebildiğini görürseniz, ancak 2 yıl sonra yükü kaldıramayacaksa, gözleminizi buraya TODO yorumunu kullanarak yazdığınızdan emin olun. Gelecekteki geliştiriciler gerçekten çabalarınızı takdir edecektir. Kod yazarken bunları asla ayrı bir txt / word belgesinde not etmeye çalışmayın, hiç kimse gerçekten bu tür belgeleri referans göstermez.
TechCoze


5

Diğer dillerden emin değilim, ancak python , kendini doğrulayan bir yorum türü olan doctestler yazmanıza izin veriyor . Tabii ki, gerçek birim testi yerine kullanılmamalıdırlar, ancak olması gerektiği kadar açık olmayan belirli işlevleri belgelemek için hızlı ve kolay bir yöntemdir. Yorumların hala doğru olduğunu (en azından test içeren kısmı) doğrulamak için yorum testlerini yürütebilmenin ek bir yararı vardır.


1
Sphinx, kapsam metrikleri sağlamak için kodu dokümanlarla karşılaştırır.
S.Lott

3

Belgeyi otomatik olarak oluşturmak için kod yorumunun nasıl kullanılacağını bulmak için en yetkili yerlerden biri kesinlikle doxygen'tir . Yine de bu tür araçlardan daha fazla olabilir.

Bu, belgeleri otomatik olarak oluşturmak için izlenmesi gereken yorum yazma standardını tanımlar . Bununla birlikte, bu daha fazla yapı verir, ancak anlamsal olarak doğrulamaz; örneğin bir fonksiyonun amacını tanımlamak için yanıltıcı ingilizce kullanıp kullanmadığınızı kontrol edemez!

Bu yorum yapılandırılmış kılan en iyi şey olsa da, şahsen ben kod gibi daha sürdürülebilir hale getirmek için gerekli daha fazla belge olduğunu hissediyorum. Bir süre önce P.SE'de bir soru vardı. Kod açık kaynak geliştirici araçlarındaki belgeler olabilir mi? Ne sıklıkla? Tabii ki, bu açık kaynaklı olmayan projeler için de geçerlidir.

Kodu daha sürdürülebilir hale getirmek için - kodun nasıl ele alınacağının yapısının oluşturulmasına yardımcı olan harici bir dokümantasyonun bulunması ve kodun içindeki yorumların görülmesi kısıtlanmalıdır.

Yorum yazmak için politikaları tanımlamak istiyorsanız , kodlama standardında yer alan bütünsel bir yaklaşım olarak yer almalısınız. Şuna bakın: Bir geliştirme ekibinde bir stil rehberi ve dokümantasyon yazılımı oluşturma konusunda bazı sorunlar neler olabilir?

Genellikle bir yorum, kodun% 5'inden daha azını oluşturur. Ve uygulamada, kod incelemelerinin kendisi daha az dikkat çekerken (gelişimin diğer yönlerine göre) yorumların da gözden geçirilmesi pratik olarak zordur.


1
Buradaki son cümleye katılmıyorum. Çok detaylı incelemeler yapan bir ekip lideri altında çalışarak bir sözleşmeyi yeni bitirdim. İncelemeleri her zaman yorumları içeriyordu - nasıl ifade edildiğini, değişken adlarının doğru olup olmadığını, gelecekteki bir geliştiricinin bilmek isteyebileceği tüm bilgileri içerip içermediklerini içeriyordu. Çok geçmeden, her yorumda ne görmeyi beklediğini biliyordum ve standardına göre yorumlar üretebildim. Bu nedenle, kod incelemelerine sahip olmak ve kod incelemesine yorum eklemek kuruluş politikasının geçerli olması koşuluyla gerçekleşir.
Dawood, Monica'yı

Bu genellikle yazdığım tek tür yorumdur, özellikle de içeri giren ve çıkanları belgelemek için yöntemler (gevşek yazılan dillerle çalışıyorum).
DanMan

2

Yorumları doğrulayan ve otomatik olarak "dayanıksız" yorumları (örneğin, sihirli sayılar, eksik cümleler vb.) Veya yanlış yorumları (örneğin, yanlış yazılmış değişkenleri veya benzerlerini algılama) algılayan herhangi bir yeni teknik var mı?

İyi bilinen bir teknik var - buna "kod inceleme" denir ve "çift programlama" adında bir kız kardeşi vardır. Burada "otomajik" bir şey beklemeyin.

Ve daha da önemlisi: Kabul edilmiş "yorum politikaları" veya stratejileri var mı? Orada nasıl kod --- hakkında tavsiye bol ama ama "nasıl yorum?"

"Kod tamamlandı" yalnızca kodlamanın nasıl yapılacağı hakkında değil, aynı zamanda "nasıl yorum yapılacağı", özellikle de kendi kendini belgeleyen kodun nasıl yazılacağı ile ilgili bölümleri de içerir.


Kod Tamamlandı için +1. Robert Martin tarafından Temiz Kod da yararlı övgüler yazma konusunda iyi bir bölüm var. Java dünyasından emin değilim ama .NET dünyasında, yorumlarda kod öğelerine referansları 'otomatik olarak' doğrulayabilen Resharper var :)
MattDavey

0

Ben memnun kaldım Java bir kaynağa Özgül Oracle'ın olan Javadoc Aracı için Doc yaz nasıl :

Bu belgede, Java Software, Sun Microsystems'da yazılmış Java programlarının dokümantasyon yorumlarında kullandığımız stil kılavuzu, etiket ve görüntü kuralları açıklanmaktadır.

Ve Madde 44: Tüm açık API öğeleri için doc yorumları yazın :

Bir API kullanılabilirse, dokümante edilmelidir. Geleneksel olarak API belgeleri manuel olarak oluşturuldu ve kodla senkronize tutulması bir işti. Java programlama ortamı bu görevi Javadoc yardımcı programıyla kolaylaştırır. Javadoc, daha yaygın olarak doc yorumları olarak bilinen özel olarak biçimlendirilmiş belge yorumlarıyla kaynak belgelerinden otomatik olarak API belgeleri oluşturur.

dan Etkili Java 2nd Edition .

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.