Kod yapısı bölümünden de bildiÄiniz üzre, yorumlar tek satır // olabileceÄi gibi birden çok satır da olabilir /* .. */.
Genelde yorum satırları kodun nasıl ve niçin çalıÅtıÄını anlatmak için kullanılır.
İlk görüÅte yorum yapmanın gereklilik olduÄu aÅikardır. Fakat programlama yeni baÅlayanlar bunu ilk önce genelde yanlıŠanlamaktadırlar.
Kötü Yorum
Programlamaya yeni baÅlayanlar yorumları genelde âkodda ne oluyorâ'u anlatmak için kullanırlar. ÃrneÄin:
// Bu kodu bunu Åunu yapacak vs. vs.
// ...vs. vs. vs.
aÅırı;
karmaÅık;
kod;
Fakat iyi kod aslında kendi kendini açıklayan koddur. Yorum satırlarının olabildiÄince az olması beklenir. Gerçekten, kod yorum satırı olmadan da kolayca anlaÅılabilir olmalı.
Bunun için harika bir kural var: âEÄer bir kod yorum yapmayı gerektirecek kadar karmaÅıksa, kodu tekrar yazmanızda yarar varâ
Ãözüm: Fonksiyonları dıÅarıya atın.
Bazen kod parçalarını fonksiyonlarla deÄiÅtirmek yarar saÄlar, örneÄin:
function asalSayilariGoster(n) {
sonrakiAsal:
for (let i = 2; i < n; i++) {
// i asal mı kontrol et
for (let j = 2; j < i; j++) {
if (i % j == 0) continue sonrakiAsal;
}
alert(i);
}
}
Daha iyisi bu fonksiyonun dıÅına asalMi diye ayri bir fonksiyon yazmak:
function asalSayilariGoster(n) {
for (let i = 2; i < n; i++) {
if (!asalMi(i)) continue;
alert(i);
}
}
function asalMi(n) {
for (let i = 2; i < n; i++) {
if (n % i == 0) return false;
}
return true;
}
Böylece kodu daha kolay bir Åekilde anlayabilirsiniz. Fonksiyonun kendisi aslında yorum oldu. Bu tür fonksiyonlara kendi kendini açıklayan fonksiyon denir.
Ãözüm: yeni fonksiyon yaz
EÄer aÅaÄıdaki gibi uzun bir kod sayfanız varsa:
// here we add whiskey
for(let i = 0; i < 10; i++) {
let damla = ayranDoldur();
kokla(damla);
ekle(damla, bardak);
}
// here we add juice
for(let t = 0; t < 3; t++) {
let domates = domatesDoldur();
kontrolEt(domates);
let domatesSuyu = bastir(domates);
ekle(domatesSuyu, bardak);
}
// ...
Bu fonksiyonları yeniden düzenlemek daha iyi bir yöntem olabilir.
ayranEkle(bardak);
domatesEkle(bardak);
function ayranEkle(kap) {
for(let i = 0; i < 10; i++) {
let damla = ayranDoldur();
//...
}
}
function addJuice(kap) {
for(let t = 0; t < 3; t++) {
let domates = domatesDoldur();
//...
}
}
Tekrardan söylemek gerekirse nelerin olup bittiÄini yorum deÄil, fonksiyonun kendisi söylemeli.Ayrıca kod yapısı fonksiyonlar Åeklinde ayrık olduÄunda daha düzgün olur. Her fonksiyonun ne argüman aldıÄı ne geri döndürdüÄü bellidir.
Gerçekte neyin olup bittiÄini söyleyen yorumu tamamen çıkarmak olanaksızdır. Bazen karmaÅık algorimalar olabilir. Bazen akıllıca yapılmıŠkısayollar olabilir. Fakat genel olarak kod basit ve kendi kendini açıklayıcı olmalı.
İyi yorum
Peki, fonksiyonun ne yaptıÄını anlatan yorumlar kötü ise, hangi yorumlar iyi?
- Mimariyi tanımla
-
Ãst seviyede bileÅenlere genel bakıÅ, nasıl birbirleriyle iletiÅim kurdukları, farklı durumlarda akıÅın nasıl deÄiÅeceÄi gibi konular anlatılmalıdır. Kısaca kuÅ bakıÅı kodun ne yaptıÄını anlatmalısınız. Bununla ilgili Åema diline UML bakabilirsiniz. Kesinlikle üstünde çalıÅılmaya deÄer.
- Fonksiyon kullanımını dökümante etme
-
Fonksiyonu dökümante edebilmek için standart özel bir yazım vardırJSDoc. Fonksiyon: kullanım, parametreler, dönen deÄer.
ÃrneÄin:
/** * X'in n'inci üssünü hesaplayıp geri döner. * * @param {number} x üssü bulunacak sayı. * @param {number} n üs deÄeri doÄal sayı olmalı. * @return {number} x üssün hesaplanmıŠhali. */ function ushesapla(x, n) { ... }Bu yorumlar bize bu fonksiyonun amacının ne olduÄunu koda bakmadan anlatır.
Bu arada WebStorm gibi editörler size JSDoc yazma konusunda yardımcı olur. Otomatik olarak kodu kontrol edebilir.
Ayrıca JSDoc 3 gibi araçlar doÄrudan HTML formatında dökümantasyon yapmanızı saÄlar. Daha fazla bilgiyi http://usejsdoc.org/ adresinden okuyabilirsiniz.
- Neden bu yöntemle çözüldü?
-
Ne yazıldıÄı önemlidir. Fakat ne yazılmadıÄı nelerin olup bittiÄi hakkında belki daha önemlidir. Bu problem neden bu Åekilde çözüldü? Size bunun cevabını kod veremez.
EÄer problemi çözmek için birçok yol varsa neden bu yolu seçtiniz? Ãzellikle cevabın açık olmadıÄı durumlarda bu soru önemli.
Böyle yorumların yapılmadıÄı durumlarda aÅaÄıdakiler meydana gelebilir:
- Siz ( veya arkadaÅınız ) editörü açtıÄında, yazılan kodun vasat olduÄunu görebilir düÅünebilir.
- Åöyle düÅünebilirsiniz: âO zaman da ne salakmıÅım, Åimdi akıllandım harikayim artıkâ ve kodu tekrar daha iyi ve doÄru Åekilde yazarsınız.
- ⦠Tekrar yazma isteÄi iyidir. Fakat âdaha açık ve doÄruâ çözüm aslında eksiktir. Daha önce zaten en iyi Åekilde yazmaya çalıÅmıÅtın. Bunu yaparken zaman harcadın ve Åimdi bu süre çöpe gitti.
Ãözümü açıklayan yorumlar gerçekten çok önemlidir. GeliÅtirmeyi doÄru yoldan yapmanıza büyük katkı saÄlar.
EÄer kodda nerede kullanıldıÄına veya özelliklerine dair ipuçları bulmak zor ise yorum yapmak gerçekten emeÄe deÄerdir.
Ãzet
İyi programcının en önemli özelliklerinden biri yorumlarının varlıÄı, hatta yokluÄudur.
İyi yorumlar kodun bakımının düzgün bir Åekilde yapılmasını saÄlar. Daha sonra geri dönüldüÄünde her Åeye daha etkin bir Åekilde baÅlanır.
Bunları yorum olarak yazın:
- Genel mimari, ince detayına kadar deÄil sadece kuÅ bakıÅı
- Fonksiyon kullanımı.
- Ãnemli çözümler, özellikle çözüm çok açık deÄilse
Bunlar için yorum yazmayın:
- Kodun ânasıl çalıÅtıÄınıâ, âne yaptıÄınıâ anlatmak için
- Sadece eÄer yorum yazmadan fonksiyon kendisini anlatamıyorsa bunları yazın.
Yorumlar ayrıca otomatik bir dökümantasyon oluÅturmanızda yardımcı olur. ÃrneÄin JsDoc3 aracı ile yorumlarınızdan HTML dökümantasyonu çıktısı alabilirsiniz. ( diÄer formatları da destekler )
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. EÄer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)