Merhaba, bu makalemizde artık programcılık
hayatımızın heryerinde, küçüklü büyüklü her
program için ihtiyaçtan çok bir zorunluluk haline
gelen isimlendirme tekniklerine, tarihçelerine
değinecek,kendi isimlendirme stilimizi nasıl
oluşturabiliriz ona bakacağız. 1. bölümün tamamını
,yani bu yazıyı tümüyle bu alacakken , 2.
bölümününde özellikle Microsoft’un .Net için de
tavsiye ettiği konvansiyon olan Pascal &
Capitalized Form (Pascal ve Büyük harfler
notasyonu) ve uygulaması üzerinde duracağız.
Neden İsimlendirme Konvansiyonlarını Bilmeliyiz?
Tabii ki bu konvansyonları kullanmak zorunda
değiliz,kendi konvansiyonumuzu oluşturup kodlamaya
da geçebileceğimiz gibi,konvansiyonsuz da kodlama
yapabiliriz. Fakat ileri düzey programlamada
isimlendirmenin birçok avantajı vardır.
İsimlendirme kavramı,programlama dünyasında
komplex kodların yazılmaya başlanmasıyla,özellikle
de OOPL (Nesne Yönelimli Programlama Dilleri) nin
gelişmesiyle büyük önem kazandı. Çünkü ortak
olmayan ve anlamsız isimler,modullere bölünmüş ve
çözüm uzaylarına ayrılmış,spesifikasyonları
hazırlanmış,yani en önemli bölümü halledilmiş bir
programın sadece kodlama aşamasında çeşitli ciddi
hatalara yol açılmasına sebep oluyordu. Bir
kişiden fazlasının çalışmasını gerektiren
projelerde insanlar birbirlerinin yazdıkları kodu
anlamıyor, hatta bir kişinin kendi yazdığı
programı bile daha sonra baktığında anlaması
güçleşiyordu.
İsimlendirme
konvansiyonlarını kullanmanın diğer bazı
avantajları ise şunlardır :
o
Programa vereceğimiz
isimler anlamlı olur.
o
Hepsi bir kurala
bağlı olduğu için düzenli görünür.
o
İsim seçme işlemi
artık mekanik olduğundan üzerinde düşünmeye gerek
kalmaz, hızlı çalışırsınız.
o
Takım çalışmalarında
aynı dili konuşmanızı sağlar.
o
Kodlarınız anlaşılır
olacağından daha az yorum yazabilirsiniz.
o
Kodunuzu böceklerden(bugs)
arındırırken faydası olur.
o
Kod standardize olduğu
için daha sonra programınızın kodunu başka bir
program yardımıyla iyileştirebilirsiniz.
o
Ortam hazırlayıcıları
tarafından belirlenen notasyonu kullanmak,ortam
tarafından otomatik olarak koda yerleştirlien kod
parçaları ile de uyumlu olacağı için ( ör: Form
Designer’ın koda eklentileri ) tam uyum sağlar.
İsimlendirme konvansiyon Çeşitleri
Bu
sorunlara bir çözüm bulmak için notasyon adı
verilen standartlar geliştirildi. Ortamların
farklılığından dolayı birçok standard ortaya
çıktı. Bunlardan bazıları şunlardır :
Hungarian notation (Macar notasyonu):
Macar notasyonu diye bilinen bu notasyon diğer
notasyonların atası olarak kabul edilmesi
itibariyle,günümüzde geçerliliği azalmıştır.
DOS’un ilk çıktığı zamanlarda Microsoft’un şef
direktörü Charles SIMONYI tarafından geliştirilen
bu tanımlayıcı isimlendirme notasyonunun
temelinde,ismin önüne tipini yazarak aktif
isimlendirmeyi sağlamaktır. Örnek verecek
olursak, bir boolean flag için “bFlag”
isimlendirmesi uygun bir isimlendirme şeklidir.
String olarak
strFirstName,integer olarak iNumberOfDays uygun
isimlendirmelerdir.
Bu isimlendirmenin getirdiği faydalar artık modern
programlama ortamlarının geliştirilmesiyle ortadan
kalkmıştır. Çünkü,mesela .Net gibi bir ortamda bir
değişkenin tipi zaten kodun her yerinde
bellidir,bundan dolayı ismi uzatmaya gerek yoktur.
Yani,bu notasyonun günümüzde kullanımı artık
azalmıştır.
Ayrıca ortamların desteklediği tür sayısı günden
güne arttığından bu tür bir isimlendirmeye
gitmenin bayağı bir güç olacağı açıktır. Bu türün
Extended Hungarian Notation,Modified Hungarian
Notation ,Simple Hungarian Notation Hungarian
Notation türleri bulunmaktadır.
MFC naming (Member-First Case) (İlk harfi
tanımlayıcılı notasyon):
Bu notasyonun temelinde tanımlayıcının tipinden
çok türü önemlidir,yani int mi,short mu olmasından
çok üye,sınıf,fonksiyon olmasına gore
isimlendirilir. Event isimleri ise (On) ile başlar.
Örnek olarak m_socket, i_counter,OnClose bu
notasyona göre iyi isimlendirilmiş
tanımlayıcılardandır.
Bu isimlendirme tekniğinin ise eskidiği Macar
notasyonunda belirttiğimiz nedenlerden ötürü
açıktır.
GNU Notation (GNU Derleyici Notasyonu)
Üstte belittiğimiz diğer notasyonlardan farklı
olarak bu notasyonda kelimeler arasında altçizgi (
_ ) karakteri bulunma şartı getirilmiştir.
Örneğin global_number_increase güzel bir
isimlendirme iken icantreadthis iyi değildir. Ayrıca
bazı GNU derleyicilerinde 8 ve/veya 14 harften
fazlasına izin verilmediğinden zorunlu olarak bu
derleyicilerin standartlarına harf sınırlaması da
getirilmiştir.
Ayrıca yine bazı derleyicilerde ( __ ) ile
başlayan değerler ayrılmıştır. Bundan dolayı
altçizgi ile başlayan isimlendirmeler iyi
isimlendirme örneği değildirler.
Diğer bazı notasyonlar ise Sun – Java
notation, SmallTalk – Roll Based Naming, Taligent
Form dur.
Kendi İsimlendirme Konvansiyonumuzu
Oluşturma
Yazının bu kısmına kadar , varolan
isimlendirme çeşitlerini iyice anladığımızı
umuyorum. Fakat hala benim kendi isimlendirme
standardım olmalı diyorsak, dikkat etmemiz gereken
bazı noktalar var.
Bir isimlendirme konvansiyonu oluştururken,dikkat
etmemiz gerekenlerden ilki, isimlerin
anlaşılabilecek kadar uzun, fakat yazılabilecek
kadar kısa olmasıdır. Bunları oluştururken
konvansiyonları kullanmanın temel faydalarına
zarar vermemeyi gözetmeliyiz.
İsimlendirme konvansiyonumuzu seçerken ortam,dil,
ve kültür özelliklerine, isimlendirme konvansiyonu
mantığının temelinde yatan estetik kaygıya ve
algoritma oluşturmanın temel şartlarına (verimlilik,isteneni
verme vs vs …) dikkat etmemiz gerekir.
Tüm
İsimlendirme Konvansiyonlarınında Bulunması
Gereken Temel Özellikler
Bütün standartlarda ortak olması gereken noktaları
ise şöyle sıralayabiliriz :
-
Tanımlayıcının(değişkenin,sınıfın,metodun vb...)
amacı doğrultusunda isimler verilmesi gerekir.
Mesela okuldaki öğrenci sayısını tutan bir
değişkene “tamsayi” şeklinde isim vermek yerine
“ogrencisayisi” şeklinde isim vermek daha
mantıklı olacaktır.
-
Tanımlayıcının ismi büyük ve küçük harfleriyle
okunabilir ve anlaşılır uzunlukta olmalıdır.
-
Mümkün
olduğunca kısaltmaları azaltmalıdır. Çünkü
kısaltmalar çoğu zaman tehlikeli olabilmektedir.
Örneğin “Ctr” “Control” olarak anlaşılabileceği
gibi “counter” olarak da anlaşılabilir.
-
Tanımlayıcıların isimleri,diğer tanımlayıcılar
arasında ayırt edici özellik olarak
kullanılmamalıdır. Örneğin “Counter” ve
“counter” adında iki değişkenimiz olmamalıdır
Daha sonra iş kendi isimlendirme
standardımızın şartlarını oluşturmaya bakıyor.
Bunun için bu yazı genel bir fikir verebilir.
İsimlendirme tekniklerinizi,hiçbir tanımlayıcı
tipi açıkta kalmayacak şekilde tasarladıktan sonra
projenin daha sonra da aynı mantıkla
geliştirilmesi ve isimlendirme konvansiyonunuzun
kalıcılığını koruyabilmesi için iyi bir şekilde
dökümante etmelisiniz.
Dökümantasyonunuz isimlendirme konvansiyonunuzla
ilgili herşeyi içermelidir(Tip isimleri,ön
ekler,arka ekler,kısaltmalar,eklentiler,özel
karakterler,vb...) .
Ve
son söz olarak , unutmayalım ki , bir çok kod bir
kez yazılır ama binlerce kez okunur. Bunu göz
önüne alarak kodlamamızı daha profosyonel
standartlara taşıyalım.
Yazının 2. bölümü Microsoft’un .NET ortamı için
önerdiği formlar olan PASCAL & CAPITALIZED FORM ,
CAMEL FORM adlı notasyonları derinlemesine
inceleyecek , ve herhangi bir isimlendirme
sistemimize aykırı davranıldığını çok büyük kod
parçalarında nasıl anlayacağımızı anlatacağım.
Görüşmek üzere,
Sidar OK
Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği
Soru ve
önerileriniz için , mail adresim
[email protected]
Makale:
.NET İçin Tavsiye Edilen İsimlendirme Konvansiyonları - 1 C#, Visual C# ve .NET Sidar Ok
|