Skip to main content

İsimlendirme Hengâmesi

Yazılımcının en sinir bozucu problemlerinden biridir isimlendirme. Class isimlerini bulmak kolaydır ama ah o metotlar yok mu! Bazen onlara isim bulmak metodu yazmak kadar zamanımızı alır.

Yazarız beğenmeyiz, yazarız oldu sanırız, metodu çağırdığımız yerde fark ederiz ki aslında metot ismi hiç de uygun bir isim değilmiş. Dön yeniden metoda, daha uygun bir isim bul… Eminim ki yoğun olarak kod yazdığınız günlerde buna benzer bir senaryoyla birebir karşılaşıyorsunuzdur.

Bir de refactoring yaparken bir başka yazılımcı arkadaşınızın gelişi güzel yazdığı metot ve değişken isimlerini görüp “yahu böyle isim mi olur, dur değiştireyim” dersiniz. Aman dikkat, bu oldukça tehlikeli bir işlemdir. Çalışan kodu bozmazsınız ama metodu yazan arkadaşınız “elleme benim metotlarımı, bozuşuruz” diyebilir.

Tek dert metotlara veya değişkenlere isim bulmak mı? Tabii ki hayır. Camel-case mi, pascal-case mi olacak, veritabanındaki tablolarda kolonlarda kelimeler arasına alt tire konulacak mı, hatta kelimeler Türkçe-İngilizce ifadeler mi olacak gibi dertleri de vardır bu isimlendirme denen illetin!

En kötü senaryolardan birini anlatayım da iyice dertlenelim: Veritabanında tabloları İngilizce isimlendireyim dersiniz, sizden önceki programcılar tabloların çoğunu, hatta tamamını Türkçe kelimelerle isimlendirmiştir. Bu bilhassa uzun soluklu yazılım projelerinde çok sık karşılaşılan bir problemdir.

Türkçe isim versen içine sinmez, İngilizce versen veritabanındaki isimlendirme standardını bozarsın… Düzeni bozmayayım Türkçe isim kullanayım dersin, veritabanı tarafında işin içinden çıkarsın. Ama asıl problem uygulama tarafında. Başlarsın tablolar için yardımcı metotlar yazmaya. Tablo adı Musteri’dir, metodun adına GetMusteri, InsertMusteri dersin olmaz, GetCustomer, InsertCustomer dersin yine olmaz, MusteriGetir, MusteriEkle desen meslekten aforoz ederler. Class adına MusteriHelper mı dersin, CustomerHelper mı, seç beğen yaz!

Yani diyeceğim o ki, çok dertli uğraştır yazılımcı olmak. Bir anne-baba çocuğuna ne isim koyacağına karar veremiyor şu dünyada, bir de yazılımcı kendi yazdığı metoda değişkene.

Abarttığıma bakmayın, sinir bozucu ama tatlı bir derttir isimlendirme bizler için. En büyük derdiniz bir metoda isim bulmak, o ismi nasıl yazacağınıza karar vermek olsun, gerisi hallolur.

İsimlendirme standartları belirlenmiş, bu standartlara riayet edilmiş projelerde yazılım geliştirmeniz dileğiyle…

İsimlendirme Hengâmesi” hakkında 11 yorum

  1. Hemde nasıl bir beladır, anlatamam.. Anlatsam tekrar hatırlarım, tekrar küserim yazılıma :) Fakat şu bir gerçek Uğur hocam, bu gerçekten bir illet.. İnsanı yazılımdan soğutabiliyor. Çözüm için framework’den feyz almak en iyisi sanırım. Object browser üzerinde aramalar ile örnek birkaç seçenek bulunabilir.
    2 aydır yazmıyorsunuz uğur hocam, bizi mahrum bırakıyorsunuz yazılarınızdan, devamlarını bekliyoruz.

  2. Katılıyorum. Zaten katılmamak elde mi? Kendi başınıza sıfırdan bir projeye başlasanız dahi verdiğiniz kararların arkasında durmak zorlaşabiliyor. İngilizce kelimeler kullanmaya karar verdiniz ama öyle bir an geliyor ki yapacağınızı doğru anlatan bir kelime bulamıyorsunuz bir türlü, bir de işin içine iş birimlerinin jargonu girdiyse tam şenlik.. Birden fazla kişi ellediyse hele o koda, zaten almış başını gitmiştir..

    Ama en zoru da sanıyorum projeyi isimlendirmek bana kalırsa. Başlayamıyorsunuz çünkü!

    Güzel yazı olmuş, teşekkürler ama keşke çözüm yollarını da içerseymiş :)

  3. @Burak, aslında yazı “sorunu nasıl çözeriz” şeklindeki bir amaçtan ziyade “sorunu eğlenceli şekilde anlatıp, tatlı tatlı şikayet etme” amacıyla yazıldı onu belirteyim. Ama buna rağmen yazının son cümlesi aslında çözümün ne olacağını da içermiyor değil :)

    Ek olarak bir üstte Soner’in verdiği linkteki kurallara da göz atabilirsin. İsim bulma ve Türkçe-İngilizce karmaşasına çare olmasa da isimlendirme kuralları için güzel bir rehber.

  4. SilinmisKayitlariGetir()
    SilinmisKayitlariGeriAl()
    SilinmisKayitlardanGeriAlinacaklariSecGuncelle()
    SilinmisKayitlardanGeriAlinmislariİsaretle()
    SilinmisKayitlariTamamenSilmedenOnceFlagKontroluYap()

    😀 masum başlayan method isimleri zamanla “ispanyol” laşır . jose manuel luis ortega da sousa kıvamına gelir 😀

    çok güzel yazı elinize sağlık..

    1. Benzeri bir metodu bugün yazdım, son sıradaki metot ismine yakın uzunluktaydı. O ismi bulmam, çekip düzeltmem 5 dakikamı almıştır :)

  5. İsim vermeyeceğim ama ünlü bir türk sitesinin Windows 8 uygulamasından metot isimleri:

    – CheckAuxiliaryDataIntegrityAsync
    – CheckAuxiliaryDataIntegritfyAsync

    İkinci metot copy-paste kurbanı ve ilkinin aynısı, yazan çok tembelmiş VS hata verince gelişine refactor etmiş metodu ve bakmamış bile :)

    1. Bu tip durumlarda genellikle metot isminin sonuna 2 gibi bir rakam konulur CheckAuxiliaryDataIntegrityAsync2 gibi ama, adamlar t harfini ters çevirip f yapmışlar burada. Daha yaratıcı bir çözüm :)

      1. 2 3 4 5 diye numaralandırıp … en nihayate erdiğini düşünüp
        CheckAuxiliaryDataIntegrityAsyncSon .

        bir kaç gün sonra ise :

        CheckAuxiliaryDataIntegrityAsyncSon2
        CheckAuxiliaryDataIntegrityAsyncSon3 …

        Umut hocam çözüm yaratıcı olmakla birlikte yazan kişinin kulağını “çınlatıcı” duruyor :) Aradaki fark gözden kaçsın diye yazılmış gibi :)

Görkem Özdoğan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir