Yazılımda İsimlendirme Sorunsalı

465

Yazılımda, proje isminden değişkenlere kadar bir çok noktada isimlendirmeye ihtiyacımız var.

Bu isimlendirme çoğu zaman bizleri uzaklara daldırıp, düşündürmeye sevk etmektedir.

Sizin de hiç Escobar gibi düşündüğünüz oluyor mu? 😀

Peki neden bu kadar düşünüyor ve önemsiyoruz. Çoğu zaman yazdığımız kodları çok kısa bir süre geçmesine rağmen anlamıyor ve hatırlamıyoruz. Bu durumu hem bizim için hem de beraber kod yazdığımız diğer yazılımcılar için daha da zorlaştırmamak gerek. Koda yeni biri dokunduğunda, paket isimlerinden değişken isimlerine kadar anlamlı gelmesi  ve kodu okuyan kişiyi yönlendirmeli, olduğunu anlayarak kodu geliştirmesine yardımcı olmalıdır.

Yıllarca önce yazılmış, dökümantasyonu olmayan ve kötü isimlendirilmiş değişkenlerden oluşan bir sisteme baktığımda, bir arkeologun, kaybolmuş ve eski bir medeniyetin gizemlerini bir çömlek parçasından çıkarmaya çalışmasındaki duyguyu hissederim. (David Scott Bernstein)

Sanırım bizleri en çok zorlayan noktalardan biri de metodlara isim vermek. Bazen yaptığı işleri tanımlamak zor olabilir ve karışık isimler verebiliyoruz. Zaten yaptığı işi kolayca tanımlayamıyorsak oraya dönüp tekrar bakmamız gerekir çünkü tanımlayamadığımız bir şeye isim veremeyiz öyle değil mi? 😀 Kötü isim verdiğimizi nasıl anlayabiliriz peki?

Değişken, metod ve ya class isimlerinden önce projelerin paket isimleri ya da database tabloları aaa1, aaa2  olarak isimlendirilmiş bile olabilir. Yani balık baştan kokuyor olabilir. Bu durumda ilk olarak buradan başlamalı ve bazı kurallar koymalısınız. SonarQubegibi pluginler kullanarak yazılımcılara tatlı uyarılar vermek faydalı olur.

S.O.L.I.D yazısında da bahsettiğimiz gibi bir metodun bir görevi olması gerekmektedir. Eğer isimlendirmede birden fazla fiil varsa bir şeylerin ters gittiği açıktır. Örneğin validateAndCalculate() isimli metod ‘and(ve)’ bağlacıyla iki fiili bağlamış ve birden fazla işi barındırdığı isminden bellidir ki burada bir şeylerin yanlış gittiği hissiyatı oluşmaktadır. Bize burada düşen görev kodun kim tarafından yazıldığına bakmadan refactor etmektir. 😀

Peki nasıl isimlendirmeliyiz?

Class büyük harf ile başlar, camel case olur isim SpaceShip
İnterface büyük harf ile başlar, camel case olur sıfat Dockable
Method küçük harf ile başlar, camel case olur fiil belirtmeli ortbit, get ve set
Instance ve static değişkenler küçük harf ile başlar, camel case olur İsim moon
Parametre ve lokal değişkenler küçük harf ile başlar, camel case olur tek kelime veya kısaltma number, count, lop(line of position)
Generic Tipler tek büyük harf T harfi önerilen harf T
Sabit bütün harfler tek kelimeler alt tire(_) ile ayrılır LEAGUE, RED, EMAIL_FORMAT
Enumaration büyük harf ile başlar, camel case olur isim enum Occupation{MANNED, SEMI_MANNED, UNMANNED}
Package bütün harfler küçük public package domainin tersi olmalıdır. com.cemdirman

com.ocajexam.model

com.ocajexam.dao

Tablo 1.0

Örnekler;

  1. Classes ve Interfaces

Interface Bicyle

Class MountainBike implements Bicyle

2.  Metod

void speedUp(int increment)

3.  Değişken

int increment = 5

4.  Sabit

static final int MAX_WIDTH = 5

Eğer sizin de kötü isimlendirilmiş örnekleriniz varsa detay vermeden bizimle paylaşabilirsiniz.

Kaynak

Tablo 1.0 : Oracle onaylı ‘Programmer 1 Study Guide’

Yorum yaz

Email adresiniz yayınlanmayacaktır.