Aşağıdaki ifadelerin bazıları, bazı gerekçelerle de olsa oldukça kişiseldir ve bu şekilde olması amaçlanmıştır.
Yorum Türleri
Kısa versiyon için ... Şunun için yorum kullandım:
- veri yapılarında alanları açıklayan izleyen yorumlar (bunlardan başka tek satır yorumlar yapmıyorum)
- blokların üzerinde istisnai veya amaca yönelik çok satırlı yorumlar
- kaynaktan oluşturulan genel kullanıcı ve / veya geliştirici belgeleri
Ayrıntılar ve (muhtemelen belirsiz) sebepler için aşağıyı okuyun.
İzleyen Yorumlar
Dile bağlı olarak, tek satırlı yorumlar veya çok satırlı yorumlar kullanarak. Neden buna bağlı? Bu sadece bir standardizasyon sorunu. C kodunu yazarken, eski moda ANSI C89 kodunu varsayılan olarak tercih ediyorum, bu yüzden daima sahip olmayı tercih ederim /* comments */
.
Bu nedenle, çoğu zaman C'de olur ve bazen C benzeri bir sözdizimi olan diller için (kod tabanının tarzına bağlıdır):
typedef struct STRUCT_NAME {
int fieldA; /* aligned trailing comment */
int fieldBWithLongerName; /* aligned trailing comment */
} TYPE_NAME;
Emacs güzel ve benim için bunu yapıyor M-;
.
Dil tek satırlı yorumları destekliyorsa ve C tabanlı değilse, tek satırlı yorumları kullanmaya daha fazla hevesliyim. Aksi takdirde, korkarım şimdi alışkanlık aldım. Bu mutlaka kötü değil, çünkü özlü olmaya zorluyor.
Çok Hatlı Yorumlar
Bunun için tek satırlı yorumlar kullanmaktan kesinlikle vazgeçtim, bunun için görsel olarak daha çekici. Bunu kullanıyorum:
/*
* this is a multi-line comment, which needs to be used
* for explanations, and preferably be OUTSIDE the a
* function's or class' and provide information to developers
* that would not belong to a generated API documentation.
*/
Veya bu (ama kişisel kod temeli dışında veya çoğunlukla telif hakkı bildirimleri dışında pek fazla bir şey yapmam - bu benim için tarihseldir ve eğitim geçmişimden gelir. Ne yazık ki, çoğu IDE otomatik formatı kullanırken bunu mahveder) :
/*
** this is another multi-line comment, which needs to be used
** for explanations, and preferably be OUTSIDE the a
** function's or class' and provide information to developers
** that would not belong to a generated API documentation.
*/
Gerçekten de gerekirse, izleyen yorumlar için daha önce söylediklerimi kullanarak satır içi yorum yapardım, eğer izleyen bir konumda kullanmak mantıklıysa. Çok özel bir dönüş durumunda günü, örneğin, ya da belge a kadar switch
'ın case
ifadeleri (nadir, ben kullanımı genellikle geçmiyoruz), ya da ben bir şube belgelemek zaman if ... else
kontrol akışı. Eğer bunlardan biri değilse, genellikle fonksiyon / yöntem / blok adımlarını gösteren kapsam dışında bir yorum bloğu benim için daha anlamlı olur.
Bunları istisnai olarak kullanırım, dokümantasyon yorumlarını desteklemeyen bir dilde kodlama dışında (aşağıya bakınız); bu durumda daha yaygın hale gelirler. Ancak genel durumda, bu sadece diğer geliştiricilere yönelik olan şeyleri belgelemek içindir ve gerçekten öne çıkması gereken dahili yorumlardır. Örneğin, bir "zorunlu" catch
blok gibi zorunlu bir boş bloğu belgelemek için :
try {
/* you'd have real code here, not this comment */
} catch (AwaitedException e) {
/*
* Nothing to do here. We default to a previously set value.
*/
}
Bu zaten benim için çirkin ama bazı durumlarda tahammül edeceğim.
Belge Yorumları
Javadoc ve ark.
Bunları genellikle bir genel API için geçerliyse bir özellik tanıtan (veya değiştiren) sürümleri belgelemek ve bazı örnekler sunmak için (net giriş ve çıkış durumları ve özel durumlar ile) bunları genellikle yöntemler ve sınıflar üzerinde kullanırdım. Her ne kadar bazı durumlarda bir ünite vakası bunları belgelemek daha iyi olsa da, ünite testleri mutlaka insan tarafından okunabilir değildir (hangi DSL kullanımını kullanırsanız kullanın).
Bunun için takip eden yorumları tercih ettiğim için alanların / özelliklerin belgelenmesi konusunda beni biraz rahatsız ediyorlar ve dokümantasyon oluşturma çerçevesinin tamamı dokümantasyon yorumlarını desteklemiyor. Doxygen, örneğin, fakat JavaDoc yapmıyor, bu da tüm alanlarınız için bir üst yoruma ihtiyaç duyduğunuz anlamına geliyor. Yine de, Java çizgileri çoğu zaman göreceli olarak uzun olduğu için hayatta kalabiliyorum, bu yüzden takip eden bir yorum, çizgiyi tolerans eşiğimin ötesine uzatarak beni eşit derecede korkuturdu. Javadoc bunu geliştirmeyi düşünürse, ben daha mutlu olurdum.
Yorumlanan Kod
Tek satırlık yalnızca bir nedenden ötürü, C-benzeri dillerde (katı C için derleme dışında, onları gerçekten kullanmadığım yerler hariç) kullanıyorum: kodlama sırasında bir şeyler yorumlamak için. Çoğu IDE'nin tek satırlık yorumlar için geçiş yapması gerekir (girinti veya sütun 0 ile aynı hizada) ve bu benim için durum için uygun. Çok satırlı yorumlar için geçişi kullanmak (veya satırların ortasındaki bazı IDE'ler için seçmek) yorum / yorum arasında kolayca geçiş yapmayı zorlaştırır.
Ancak SCM'deki yorum koduna karşı olduğum için, genellikle çok kısa sürdü çünkü taahhütte bulunmadan önce yorumlanan parçaları sileceğim. ( Bu soruya cevabımı "yorumlar doğrultusunda ve SCM'lerde düzenlendi" ) oku.
Yorum Stilleri
Genelde yazma eğilimindedir:
- Daha sonra bir API belgesinde veya hatta üretilen bir el kitabının bir parçası olarak okunması gerektiği gibi, dokümantasyon yorumları için doğru dilbilgisi (noktalama işaretleri dahil) ile cümleleri tamamlayın.
- iyi biçimlendirilmiş ancak çok satırlı yorum blokları için noktalama işaretleri / büyük harfler üzerinde daha fazla gevşek
- noktalama işaretsiz bloklar (boşluk nedeniyle ve genellikle yorum parantezli bir ifadeye benzer şekilde okunan kısa olduğu için)
Okuryazar Programlama Üzerine Bir Not
Donald Knuth'un bu makalesinde anlatıldığı gibi , Literatür Programlaması ile ilgilenmek isteyebilirsiniz .
Okuryazar programlama paradigması, [...], programların bilgisayar tarafından emredildiği biçimde ve sırayla program yazma sürecinden uzaklaştığını ve bunun yerine programcıların düşüncelerinin mantığı ve akışının talep ettiği sırada programlar geliştirmesini sağlar. 2 Literatür programları, bir makalenin metni gibi, sıradan bir insan dilinde kesintisiz bir mantık sunumu olarak yazılmıştır [...].
Okuryazar programlama araçları, okuryazar bir kaynak dosyadan iki gösterim elde etmek için kullanılır: biri bilgisayar tarafından daha fazla derleme veya yürütme için uygun, "karışık" kod ve diğeri de "dokumasız" olduğu söylenen biçimlendirilmiş belgeler olarak görüntülemek için uygundur. okuryazar kaynak.
Bir yan not ve örnek olarak: underscore.js benim yorum yapma tarzı ile uyumsuzluk rağmen, JavaScript çerçevesi, iyi belge oldukça iyi bir örnektir kod tabanı ve iyi oluşturulmuş açıklamalı kaynağı - gerçi belki iyi olarak kullanmak bir API referansı).
Bunlar kişisel sözleşmeler. Evet, tuhaf olabilirim (ve siz de olabilirsiniz). It yolundaysa, sürece kadar takip edip ekibinizin kod sözleşmelere uymak yaşıtları ile çalışırken veya kökten tercihlerini saldırmayın ve cohabitate güzel. Tarzınızın bir parçası ve sizi kodlayıcı olarak tanımlayan (veya bağlantı kurduğunuz bir düşünce veya organizasyon okulunun takipçisi olarak) bir kodlama stili geliştirmek ile bir grubun tutarlılık sözleşmesine saygı duymak arasındaki ince çizgiyi bulmalısınız. .
:3,7 Align //
yorumları 3-7 satırlarına hizalayın.