TEMİZ KOD (CLEAN CODE) NASIL YAZILIR
Herkese Merhaba dostlarım. Nasılsınız? Umarım sağlığınız ve keyfiniz yerindedir. 🙂 Bugün, sizin için faydalı olacağını düşündüğüm bir konuyu ele aldım. Kodlama yaparken temiz bir kod nasıl yazılır? Temiz kod yazılırken dikkat edilmesi gereken noktalar nelerdir? Sorularının cevaplarını vermeye çalışacağım. Umarım yazımı büyük bir keyifle okur ve düşüncelerinizi aşağıda ki yorumlar kısmından bana iletirsiniz.
Öncelik olarak yazılım dilinde kodun tanımını yapmak istiyorum size. Kod: belirli şartları içerisinde barındıran cümlelere verilen addır. Bu cümlelerle hangi durumda ne olacağına, hangi öğelerin çağrılacağına, hangi olay karşında hangi yanıt/tepki geleceği gibi daha birçok yazılımsal fonksiyona sahiptir.
Kod yazmayı çok iyi bildiğiniz halde bazen çok karmaşık kodlar yazmış olursunuz. O anda karmaşık bir kod yazdığınızın farkında olmayabilirsiniz. Şöyle bir durum var ki 2-3 ay sonra o yazdığınız kodu açtığınızda, ne anlatmak istediğinizi kendiniz bile anlamayabilirsiniz. Temiz bir kod yazdığınız zaman kodunuzun anlaşılması daha kolay olacaktır. Yine temiz bir kodla, kodunuzun geliştirilmesi sizin için veya bir başkası için daha basit olacaktır.
1. İsimlendirme
1.1 Anlamlı İsimlendirme
Kodunuzdaki değişkenleri, fonksiyonları ya da sınıfları isimlendirirken bunları tam olarak ne için kullanacaksanız onu çağrıştıracak isimler kullanmalısınız. Örneğin bir ürünün stok adedi için bir kod yazacaksanız.
int stok / int s / int sAdedi gibi isimlendirmek yerine int stokAdedi olarak isimlendirmelisiniz.
1.2 Yanıltıcı İsimlendirme
Yanıltıcı isimlendirme de genelde en çok karşılaşılan durum değişkenlerde küçük L ve büyük o kullanmaktır herhalde. Örneğin:
int a = l;
if (O == l)
a = Ol;
else
l = Ol;
Yukarıda gördüğümüz kod parçasında editör ve fonta bağlı olmakla birlikte küçük L, bir rakamıyla ve büyük o, sıfır rakamıyla karıştırılmaktadır.
1.3 İsimleri Gereksiz Kısaltma
İsimlendirme yapılırken telaffuzu kolay olunmasına dikkat edilmelidir. Bu konuyla ilgili en çok görülen hatalı örnekler.
String g (gün) / String hp (hipotenüs) / int a = 1 (int sayi = 1).
1.4 Aranılabilen İsimler
Değişkenlere, sınıflara, fonksiyonlara isimlendirme yapılırken aranılabilen isimlendirme yapmakta önemli bir husustur. Örneğin kısaltma olarak kullandığımız g (gün) değişkenini ele alalım. Kodlar içinde gün değişkeninin kullanıldığı yeri “g” yazarak aratalım. Arama sonucunda karşımıza bir çok sonuç çıktığını göreceğiz. Böylelikle değişkenin aranma özelliğinin yok olduğunu görürüz.
1.5 camelCase / PascalCase İsimlendirme
Şahsi fikrim camelCase ve PascalCase isimlendirmenin kod okunurluğunda hayat kurtarıcı bir özellik olduğu yönünde. Değişkenlere, fonksiyonlara, dizilere, sınıflara(…) isimlendirme yapılırken kelimeler arası boşluk bırakılmamalı. Bu yüzden kelimelerin birbirine karışmaması ve daha rahat okunabilmesi için bu iki isimlendirme yöntemini kullanmak her zaman için daha rahat olacaktır. Örneğin productmanager ismini mi daha rahat okuyorsunuz yoksa productManager / ProductManager ismini mi? Tabi ki ikinci ve üçüncüyü daha rahat okudunuz. Bu iki isimlendirme yöntemi sizin hep aklınızda olmalıdır. ?
2. Fonksiyonlar
Fonksiyonlar yazılımın temel yapı taşları gibidir ve fonksiyonların kendine özel, temiz kod prensipleri vardır. Bunlar;
- Fonksiyonlar öncelikle kısa olmalıdır. Maksimum satır sayısı 20’yi geçmemelidir. Ayrıca gittikçe uzayan fonksiyon içerikleri parçalanmalıdır. Sonrasın da daha küçük fonksiyonlara ayrılmalıdır.
- Bir fonksiyonun yalnızca tek bir işlemi olmalıdır. Bir işlemden fazla işlevi olan fonksiyonlar parçalanmamalıdır.
- Switch döngüsünün kullanırken, case sayısı sürekli arttırıldığından sorunlara yol açabilir. Bu durumda fonksiyonların içinde kullanmak yerine classlar içinde polymorphism (çokbiçimcilik) ile kullanmak daha uygundur.
- Normal bir fonksiyonun parametre almaması gerekir. Buna istinaden fonksiyonlar maksimum 2 parametre almalıdır.
- Kesinlikle kod tekrarı yapılmamalıdır. DON’T REPEAT YOURSELF! ?
- Koşulların ve döngülerin içerikleri genellikle tek satırdan oluşmalıdır. Bu satırlarda da işlemi yapacak fonksiyon çağrılmalıdır.
3. Yorum Satırları
Temiz bir kod için aslında hiçbir şekilde yorum satırı bulunmamalıdır. Yine de bazı istisnalar olabilir.
Bunlar;
- Kodların üzerinde, geliştiricilerin bilgilerinin paylaşıldığı yorum satırları olabilir.
- Reglex filtreleme yapılan kodlara, filtrelemenin nasıl bir sonuç getireceğini yorum satırı kullanarak belirtilebilir.
- Kodların içine daha sonra yapılacak geliştirmelerle ilgili TODO yorum satırları eklenebilir.
4. Sınıflar
- Sınıfların içeriği, minimize edilebildiği kadar kısa olmalıdır.
- Sınıflar Single Responsibility Principle’ye uygun kullanılmalıdır. Yani her sınıfın tek bir sorumluluğu olmalıdır.
- Sınıflar minimum seviyede iç değişkenlere sahip olmalıdır. İçerdiği metotlardan her biri değişkenlerden bir tanesine veya daha fazlasına işlemelidir.
- Yazılan kodlar daima geliştirilmeye açıktır. Değişiklik yapılmak istendiğinde, önceden tanımlanmış olan işlevlerin yanlış veya eksik çalışmasına yol açmamalıdır. Geliştirme yapılırken, yaşanacak olan riskleri azaltacak şekilde sınıflar kurulmalıdır.
Evet arkadaşlar benim size verebileceğim tavsiyeler bu kadar. Bununla birlikte bu konuyu sadece buradan edindiğiniz bilgilerle değil daha detaylı araştırmanızı tavsiye ederim. Çünkü bu konunun oldukça fazla alt başlığı ve detayları var. Sizlere elimden geldiğince özetlemeye çalıştım. Benimle birlikte bu son satıra kadar geldiğiniz için teşekkür ediyorum. 🙂 Herkese sağlıklı günler dilerim.
Diğer yazılarıma buradan göz atabilirsiniz. 🙂
Aradığım her şeyin cevabını burada buluyorum çok teşekkürler.
Güzel yorumunuz için ben teşekkür ediyorum. 🙂