Düzgün bir kod için öneriler

AnonimXSs

Yeni üye
31 Mar 2022
33
14
Anonim
Günümüzde sıfırdan başlanarak ticari bir yazılım geliştirilmesi, özellik, arayüz ve protokol çeşitliliğinin getirdiği kompleksite artışı ve pazara çıkış sürelerinin giderek kısalması nedeniyle neredeyse imkansızdır. Bu yüzden mevcut kod parçalarının doğrudan ya da değiştirilerek kullanılması bir zorunluluk haline gelmiştir.


Yeniden kullanılacak kod parçaları kurum içinde üretilmiş olabileceği gibi, açık kaynak kodlarıya da satın alınmış kodlar olabilir. Bu kod parçalarının verimli ve güvenli olarak kullanılabilmeleri için kolay anlaşılabilir ve değiştirilebilir olmaları çok önemlidir. Kurum içinde üretilmiş de olsa, kodun ilk geliştiricisinin uzun zaman önce ayrılmış olması, bir üst düzey yöneticinin kodu olması durumunda, sıklıkla “koddaki şu açıklamada (// yyyy) ne demek istemiştiniz” gibi sorular sorma şansının olmaması, ya da kendi kodu da olsa altı ay sonra detayları hatırlama zorluğu, kodla yeni sahibini başbaşa bırakacaktır.

Tüm bu nedenlerle yazılımcıların aşağıdaki konuları anlaması ve dikkat etmesi oldukça önemlidir;

İyi kod ve kötü kod arasındaki fark,
İyi kod yazmak ve kötü kodu iyi koda dönüştürmek,
İyi isimler, iyi fonksiyonlar, iyi nesneler (object) ve iyi sınıflar (class) oluşturmak,
Maksimum okunabilirlik için kodu formatlamak,
Kod yapısını bulanıklaştırmadan hata işlemek (error handling),
Birim test yapmak ve test odaklı geliştirme (TDD).
Robert C. Martin’in Clean Code - A Handbook of Agile Software Craftsmanship (Temiz Kod – Çevik Yazılım İşçiliği Elkitabı) adlı eserinde temiz kod yazmanın prensipleri, örüntüleri (pattern) ve pratikleri anlatılmaktadır. Bu blog yazısında uzun uzun anlatamayacağım için, konuyla ilgili fikir vermek ve teşvik etmek amacıyla, kitabın isimlendirmeyle ilgili birinci bölümünü ana başlıklarıyla aşağıda özetlemeye çalıştım.

1) Niyeti ortaya koyan isimler kullanın

Değişken, fonksiyon ya da sınıf ismi, neden var olduğunu, ne yaptığını, ve nasıl kullanıldığını anlatmalıdır.

int g; // gun olarak gecen zaman
yerine

int gunOlarakGecenZaman;
int atamadanBeriGecenGun;
int degisikliktenBeriGecenGun;
int gunOlarakDosyaYasi;
gibi isimler seçilmelidir.

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

Bir grup hesaba gerçekten liste değilse hesapListesi demeyin. hesapGrubu, birGrupHesap ya da sadece hesaplar daha iyi 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

İsimleri numara ekleyerek farklılaştırmak 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 = a1;
}
}
Argüman olarak kaynak ve hedef k
4) Telaffuz edilebilir isimler kullanınTelaffuz edilebilir isimler kullanmak anlaşılırlığı kolaylaştıracağı gibi takım içi iletişimi de kolaylaştıracaktır. Telaffuz edemiyorsanız, üzerine tartışmanız da bir hayli zor olacaktır. olsyagsdsn (oluşturma tarihi, yıl, ay, gün, saat, dakika, saniye) değişkeninden bahsederken “Buradaki olsyag se de se ne değişkeni int olmalı” benzeri konuşmalar sıkça duyulacaktır çünkü programlama sosyal bir aktivitedir.

5) Aranabilir isimler kullanın

Tek harflik isimler ve numerik sabitlerin metin içinde aranması kolay değildir. OGRENCI_BASINA_EN_COK_SINIF’ı bulmak 7’yi bulmaktan kolaydır. Tek harflik isimler sadece kısa metodların içindeki lokal değişkenler için kullanılabilir.

Aşağıdaki iki kod parçasını karşılaştırınız.


for (int j = 0; j < 34; j++) {
t += (g[j]*4)/5;
}
,

int reelGunSayisi = 4;
const int HAFTALIK_CALISMA_GUNU = 5;
int toplam = 0;
for (int j = 0; j < GOREV_SAYISI; j++) {
int reelGorevGunleri = gorevKestirimi[j] * reelGunSayisi;
int reelGorevHaftalari = (reelGunler/HAFTALIK_CALISMA_GUNU);
toplam += reelGorevHaftalari;
}

6) Kodlamadan kaçının

İsim uzunluğu sınırlaması olan eski dillerde bu kuralı çiğnemek zorunluydu. Fortran, ilk harfin 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;
yerine

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

Sınıf ve fonksiyon üye isimlerinde de ‘_’, ‘m_’ ya da ‘its’ benzeri kodlamalara gerek yoktur çünkü sınıf ve fonsiyonlarınız bunlara gerek duymayacak kadar kısa olmalıdır. Ayrıca üye isimlerini renklendiren bir editör kullanılmalıdır.ullanılırsa bu fonksiyon daha anlaşılır olacaktır, İyi Günler.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.