Efektif Programlama nedir?

Efektif programlama yazılım sisteminin en önemli parçalarından biridir. Yazılım geliştirilirken kullandığımız algoritmalar, değişken, metot, sınıf isimleri efektif programlamanın parçalarıdır. Efektif programlamada her şey çok basit olmalıdır. Her şeyin basit olması çok kolay olmayacaktır. Bir şeyi çok basit bir şekilde yapabilmek için her yönüyle, tümüyle o şeye hakim olmak gerekmektedir.

Temiz kod yazabilmek için öncelikle aşağıdaki kuralları uygulamalıyız.

1.  Amacınızı en iyi şekilde anlatan isimler kullanın.

Değişken, metot veya sınıf isimlerini neden var olduğunu, ne yaptığını, ve nasıl kullanıldığını en iyi ve en basit şekilde anlatmalıdır.

int h; yazmak yerine amacınızı en iyi şekilde anlatan değişken adınız seçin.

int hafta;

2. İsimde yanlış bilgilendirmeden kaçının. 

Bir grup hesaba gerçekten liste değilse hesapListesi olarak adlandırmayın. hesapGrubu, birGrupHesap ya da sadece hesaplar daha uygun olacaktır.

Yanıltıcı isimlendirmeye en uç örnek değişken ismi olarak küçük L ya da büyük o kullanmak olacaktır. int a = l; if (O == l) a = Ol; else l = Ol;

Kullanılan editör ve fonta bağlı olarak küçük L birle, büyük o sıfırla karıştırılabilir.

3. İsimleri anlamlı olarak farklılaştırın.

İsimlendirirken numara kullanmak, yanlış bilgi vermekten öte hiç bilgi içermez.

public static void copyChars(char a1[], char a2[]) {
     for (int i = 0; i < a1.length, i++) {
           a2[i] = a1[i];
     }
}

Argüman olarak kaynak ve hedef kullanılırsa bu fonksiyon daha anlaşılır olacaktır.

4. Telaffuzu kolay isimler kullanın. 

Telaffuzu kolay isimler kullanırsanız anlaşılırlığı kolaylaştırdığı gibi takım içi iletişim ve bunun hakkında tartışmak daha kolay olacaktır.

5. Aranabilir isimler kullanın. 

Tek harflik isimler ve numerik sabitlerin metin içinde bulunması çok kolay değildir. KISI_BASINA_EN_COK_SINIF’ı bulmak 5’i bulmaktan kolaydır. Tek harflik isimler sadece kısa metotların içindeki lokal değişkenler için kullanılabilir.

6. Kodlamadan kaçının. 

İsim uzunluğu sınırlaması olan eski dillerde bu kuralı çiğnemek zorunluydu. Fortran programlama dilinde, ilk harf türü belirten bir kod olması kuralı nedeniyle kodlamaya zorlayan bir dildi. Ancak günümüzün güçlü tür kontrolü yapan modern dillerinde böyle bir sınırlama bulunmamaktadır.int iTelefonNumarasi;

yerineint telefonNumarasi;

kullanılırsa değişkenin long yapılması gerekince ismin değişmesi gerekmeyecektir.

Sınıf, metot ve değişken isimlerinde ‘_’, ‘m_’ ya da ‘its’ benzeri kodlamalara gerek yoktur. Çünkü sınıf, metot ve değişken isimleri kısa ve anlamlı olmalıdır.

7. Zihinsel eşlemelerden kaçının. 

Döngü sayaçlarına i ya da j gibi isimler verebilirsiniz. Çünkü bu geleneksel bir uygulamadır. Ancak diğer çoğu durumda tek harfli bir isim kötü bir seçimdir. Programcılar genelde akıllı insanlardır. Akıllı insanlar bazen gösteriş yapmayı severler. r’nin url’nin sunucu ve şema çıkarılmış küçük harf versiyonu olduğunu hatırlayabiliyorsanız açıkça çok akıllı olmalısınız. Akıllı programcı ile profesyonel programcı arasındaki farklardan biri, profesyonelin, açıklığın paha biçilmez olduğunu bilmesidir.

8. Sınıf isimleri.
Sınıf ve obje isimleri, musteri, WikiSayfası, Hesap, HesapCozumleyici gibi isim ya da isim cümleleri olmalıdır. Sınıf ismi fiil olmamalıdır.

9. Metot isimleri.
Metot isimleri, odemeyiTamamla, sayfaEkle, sakla gibi fiil ya da fiil cümleleri olmalıdır.

10. Her kavram için tek kelime kullanın.
Farklı sınıfların benzer metotları için Sakla, Yaz ve Kaydet kullanmak kafa karıştırıcıdır. Bir tanesi seçilip tüm kodda bağlı kalınmalıdır.

11. Kelime oyunu yapmayın.
Aynı kelimeyi farklı fikirler için kullanmak bir kelime oyunudur. Topla‘yı ele alalım. Bir sınıfta tuşlanan numaraların toplanması, bir diğerinde mevcut iki değerin toplanması ya da eklenmesi işlemi için kullanılması kafa karıştırıcı olacaktır.

12. Çözüm alanına ait isimler kullanın.
Kodunuzu okuyacak kişilerinde yazılımcı olacağını unutmayın. Bilişim terimlerini, algoritma isimlerini, örüntü isimlerini, matematik terimlerini kullanmaktan çekinmeyin. Zorunlu olmadıkça sorun alanına ait terimler kullanmamalıyız. HesapVisitor, Visitor örüntüsüne aşina bir programcıya çok şey ifade edecekken, HesapCetveli fazla fikir vermeyebilir.

13. Sorun alanına ait isimler kullanın.
Programlama jargonundan bir isim bulunamıyorsa, sorun alanından bir isim kullanılabilir. Yazılımcı en azından bir alan uzmanı bulup ne anlama geldiğini sorabilir.

14. Anlamlı bağlamlar ekleyin.

ad, soyad, cadde, sokak, numara, sehir ve postakodu isimli değişkenleriniz olduğunu varsayalım. Hepsi bir araya geldiklerinde  bir adres oluşturdukları anlaşılabilir. Fakat sadece kodun bir yerinde numara’nın tek başına kullanıldığını görürseniz ne anlarsınız? Ön ekler kullanarak bağlam ekleyebilirsiniz: adresAd, adresSoyad, adresCadde… Daha iyisi Adres isimli bir yapı ya da sınıf oluşturmak olacaktır. Böylece derleyici de bu değişkenlerin daha büyük bir oluşumun elemanları olduklarını bilecektir.

Kısa kısa efektif programlama;

  • Anlaşılır yaz, efektif kod uğruna yalınlıktan vazgeçme.
  • Ne yapmak istediğini basit ve net olarak açıkla.
  • Geçici değişkenleri mümkün olduğunca az kullan.
  • Anlam belirsizliğine yer vermemek için parantez kullan.
  • Kütüphane fonksiyonlarını kullan.
  • Tekrar eden ifadeleri genel amaçlı fonksiyonlara böl.
  • Değişken isimlerinin karışıklık yaratmamasına dikkat et.
  • Eğer mantıksal bir ifade anlaşılması zor bir haldeyse, onu değiştirmeye çalış.
  • Programı basit hale getirecek veri türleri seç.
  • Kötü kodu programa koymak yerine yeniden yaz.
  • Büyük bir programı, küçük parçalar halinde yaz ve test et. (Böl ve yönet)
  • Girdinin uygunluğunu test et.
  • Kötü inputu tespit et ve mümkünse düzelt.
  • İnputun programın sınırlarını zorlamadığından emin ol.
  • İnputun sonunu dosya sonuyla veya bir işaretle belirle sayarak değil.
  • İnputu hazırlaması kolay olsun ve output da yarı açıklayıcı olsun.
  • Bütün değişkenlerin kullanımlarından önce başlangıç değerlerini ver.
  • Mantıksal hatalara dikkat et.
  • Programı uç değerler için de test et.
  • Bazı cevapları elinle kontrol et.
  • 10 kerede 0.1 asla 1.0 demek değildir.
  • Floatları, eşitlik durumu için karşılaştırmada kullanma.
  • Hızlı çalışan programdan önce doğru çalışan program yap.
  • Hızlı çalışan programdan önce hata kontrolü yapan program yap.
  • Hızlı çalışan programdan önce anlaşılır program yap.
  • Hızlı çalışan program için algoritmada değişiklik yap, küçük detayları değiştirmek için uğraşma.
  • Programın ne kadar hızlı olduğunu anlamak için iyice test et.
  • Yorum satırları ile kodun uyuştuğundan emin ol.
  • Kullandığın isimler anlamlı olsun.
  • Bir programın formatı okuyucunun onu anlamasına yardım eder.
  • Yorumları anlamlı yaz, kodu tekrarlama
  • Veri yapılarının dokümanını oluştur.
  • Aşırı yorum satırı yazma. (Max. %80 kod, %20 yorum satırı)
  • Kötü koda yorum satırı yazma, kodu yeniden yaz.
  • Özyinemeli tanımlanan veri yapıları için özyinemeli metotlar kullan.
  • Tekrar eden serilerin kontrolü için veri dizilerini kullan.

İyi çalışmalar. 🙂