Yeni başlayanlar için yorum yazmak mı?


27

Tomurcuk geliştiricilere yönelik kod yorumları yazmak için kesin bir rehber var mı?

İdeal olarak, yorumların ne zaman kullanılması (ve kullanılmaması gerektiği) ve hangi yorumların bulunması gerektiğini kapsayacaktır.

Bu cevap :

Ne yaptığınızı yorum yapmayın, ama neden yaptığınızı.

WHAT, onu desteklemek için uygun değişken adları seçerek temiz, okunabilir ve basit bir kodla halledilir. Yorumlar, kodun kendisinde gösterilemeyen (veya zor) kodlara daha yüksek düzeyde bir yapı gösterir.

yaklaşıyor, ancak deneyimsiz programcılar için biraz özlü (bence birkaç örnek ve köşe senaryosunda bir genişleme mükemmel olurdu).

Güncelleme : Buradaki cevaplara ek olarak, başka bir soruya verilen bu cevabın son derece alakalı olduğunu düşünüyorum .


İnsanların daha fazla yorum yapmadığı bir dünyaya hızla gidiyoruz. Daha iyisi için (daha muhtemel) daha kötüsü için. Çevik.
MK01

1
@MK: Eğer durum buysa (daha katılıyorum eğilimindedir bu cevabı ), sonra nasıl açıklayan bir rehber değil yorum yazmak için ve onlar kaçınılmalıdır neden sadece kullanışlı olarak olurdu. Nitekim, daha farklı bakış açıları, daha iyi.
Cameron

Kod okuma hızını artırmak için küçük yorumlar çok yararlı olduğunu düşünüyorum ve her zaman olacaktır. "Eski yorum" muhakemesini tam olarak satın almıyorum, eski olsalar bile tarihi değere sahiplerdi. Burada ve orada zaman zaman detaylı yorumlar yapan bir kod üssünde çalıştım ve hiçbir zaman güncel olmayan bir sorun olduğum için gerçekten ısırılmamıştım.
MK01

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

Yanıtlar:


38

Yorumların en büyük zayıflığının farkında olmalısınız: onlar bayatlanır. Diğer bir deyişle, kod değiştikçe, geliştiriciler kodla senkronize kalmak için yorumları nadiren günceller. Bu, onlara asla güvenemeyeceğiniz ve kod okumaya devam edemeyeceğiniz anlamına gelir. Bu nedenle, kodunuz kendi kendini belgeliyor olmalıdır. İşlevinizi ve değişken adlarını, kodun nesir gibi okuyacağı şekilde seçmelisiniz.

Bu yüzden kodun ne yaptığını belgelemeyin. Kendini belgeleyen kod buna dikkat etmelidir. Belge neden yapıyorsun. NEDEN genellikle işle ilgili kurallarla ya da mimarlıkla ilişkilidir ve sıklıkla değişmez ve WHAT'lerde hızlı bir şekilde bayatlamazlar. Belge kenarı davaları. Belge istisnaları. Belge tasarım kararları. Ve en önemlisi, düşündüğünüz tasarım kararlarını belgeleyin, ancak uygulamamaya karar verin (ve bunları neden kullanmaya karar verdiğinizi belgeleyin).


2
Sonuncusu çok önemlidir. Bazen bariz çözümü uygulamakla ilgili bir hata / yan etki olabilir. Neden başka bir çözümle gitmeyi seçtiğinizi belgelendirmek, bir sonraki geliştiricinin görünüşte kötü bir çözümü "düzelttiklerinde" hatayı yeniden tanıtmasını önler.
CaffGeek

2
Başka bir nokta, ilk işim yorumları kod kadar önemli olarak görüyordu. Hakem incelemesinde kodun yanı sıra yorumları okuma alışkanlığı edinmeye çalışın ve yorumların mümkün olduğunda güncel olmasını ısrarla deneyin. Bu, yorumların eskimesine engel olur ve kodunuzda belgelenen iş kurallarını vb. Güncel tutar.
Eric Hydrick 14:11

10

Robert C. Martin'in Temiz Kod kitabını okumalısın . Güzelce, yorumlara ihtiyacınız olursa, büyük olasılıkla doğru kodlamadığınızı açıklar. İdeal olarak, kodunuz "kendi kendini yorumlamalı" olmalıdır. Temiz Kodlayıcı kitabı bunun nasıl yapılacağını açıklar, böylece yorumlar gerekli değildir ve gerekli olduğu durumlarda yorumların nasıl yapılacağını iyi tarif eder. (Karmaşık bir matematik formülünü açıklamak gibi)


Çok fazla istemesem de, önemini ve kaynağını açıklayarak, matematiksel gösterimde (muhtemelen TeX) yazılmasını istediğim gibi açıklanacak karmaşık bir matematik formülü istemem . Eğer formülü anlamadıysanız, yine de bazı değerleri hesaplamak için kullanan kodla uğraşmamanız gerekir, zira hatalara yol açıp kapatarak (ince veya yanlış) son derece olasıdır.
CVn

Kod sadece söyleyebiliriz nasıl değil neden ya neden olmasın . Bunun için yorumlara ihtiyacınız var.

7

Code Complete, daha önce de belirtildiği gibi, yorum yazmak için çeşitli yönergelere sahiptir. Kısacası, bu PDL ve şöyle özetlenebilir:

  1. Amacınızı açıklayın, kodun ne yaptığını değil. Bazı numaralar kullanmıyorsanız veya özel uygulamalar kullanıyorsanız uygulama ayrıntılarını tanımlamaktan kaçının. Örneğin, bölmek üzere değişen bitleri kullanmak, sınıf üyelerine erişmek için işaretçi aritmetik kullanmak veya bazı havuzlanmış nesneler için özel bir bellek ayırıcı kullanmak.

  2. Önce sözde kodu (yani yorumları) yazın, sonra rutini / yönteminizi / işlevinizi tanımlamayı bitirdikten sonra gerçek kodu yazın. Kullanılan dil yüksek düzeyde olmasına rağmen özeldir, bu nedenle ayrıntılı olabilir.

  3. Kodunuzu yazmadan önce kodunuzun ne yaptığını bile anlayın

  4. Asıl koda yakın yorumlarınız olması

Amaç, modası geçmiş olabilecek uzun soluk, ilişkisiz yorumlardan kaçınmak, ancak kodun amacını ve amacını yansıtan yorumlardan kaçınmaktır. Üst düzey bir sözde kod kullanmak, uygulamayı yazmadan önce düşüncelerinizi netleştirmenize yardımcı olur.

Kitabı izlemek istememeniz durumunda GameDev.net'te [PDL'yi açıklayan] [1] bir bağlantı var.


5
Önce sahte kodu (yani yorumları) yazın . Daha fazla katılmıyorum. Yorumların kodla eşleşmemesini sağlamak için daha iyi bir yol yoktur. Yeni kodlayıcılar (ve yeni başlayanlar için özel olarak sorulan asker), onlardan memnun kalmadan yüzlerce kez kesilecek ve yeniden tanımlayıcı işlevlerini yerine getirecek, kod hızla hareket ettirilecek, yeniden yazılacak, yeniden amaçlanan ve sonunda, zarif bir çalışma çözümüne sahip, ancak ilk sahte kodları gibi görünmeyecek. Yorumlar, kod çalışacak şekilde taşınır ve güncellenir mi? Tatlı bacağına bahis yapmazlar. Benim iki Sentim.
İkili Kurtuluş 15:11

1
Ayrıca, sözde kod yorumları size kodun ne yapması gerektiğini söyleyecektir. Kod sana bunu söylemeli. Sahte kod size kodun neden yaptığını söylemeyecektir. -1 ahbap, üzgünüm ama ikinci noktaya katılıyorum, zaman değişti.
İkili Kurtuluş 15:11

1
Tartışmak değil, daha fazla açıklama yapmak için - sözde kod yazdığınız kodun amacını açıklamak içindir. Yani, yorum uygulama detayları ile ilgili değil ("Yığının üstüne x ekle" gibi) değil, kodun ne yapması gerektiği hakkında ("Pencereyi her şeyin önünde görünmesini sağla" gibi). Doğru bir şekilde belirttiğiniz gibi, yorumları kodla taşımanız gerekir. Kod ile aynı fikirde değilim, size kodun ne yaptığını söyleyebilir - her zaman. Olsa bile, yararlı / doğru bir yorum (iyi yazmayı başarabilirsem!) Çok yol kat eder. Sonunda, hala IMHO.
Extrakun

3
Çağrılan bir yöntem veya işlev showWindowOnTop(window)her zaman aynı nitelikteki bir yorumdan daha iyi olacaktır, bunların hepsi 2012'de modası geçmiş ve kötü bir tavsiyedir. Testler, kodun yazmadan önce ne yapması gerektiğini söyler, 4) iyi adlandırılmış kod,


1

Benim önerim, herhangi bir yorum yapmadan bazı kodlar yazmak ve ondan uzaklaşmak olacak. Bir yıl sonra tekrar gel ve oku. Kolayca anlamadığınız kısım, yorum yapmanız gereken kısımdır.


1
Hah, evet ;-) Bu özellikle yararlı bir tavsiye değil, ancak - belki de bu bir yorum olmalıydı?
Cameron

anlamadığınız kısım daha iyi adlandırılmış kısımlarda daha küçük yazılmış olmalıdır. Yorumların koda getirilmesinin ana nedeni, işlevler / yöntemlerin uzun sürmesi ve çok daha küçük sayıda kendi kendini belgelemesi olmalıdır.

0

Evan Todd'un sadece faydalı yorum kategorileri hakkındaki görüşlerini özetlemesini gerçekten seviyorum ( blogundan alıntı yaparak ):

  • Neyin yerine nedenini açıklayan yorumlar. Bunlar en faydalı olanıdır.
  • Aşağıdaki dev kod grubunun ne yaptığını açıklayan birkaç kelimeyle yorumlar. Bunlar navigasyon ve okuma için kullanışlıdır.
  • Veri yapısı bildiriminde, her alanın ne anlama geldiğini açıklayan yorumlar. Bunlar çoğu zaman gereksizdir, ancak bazen bir kavramı sezgisel olarak belleğe eşlemek mümkün değildir ve eşlemeyi tanımlamak için yorum yapmak gerekir.
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.