Değişken veya fonksiyon tanımlanırken tanımlanan değişken veya fonksiyona verdiğimiz ismin yapılan iş veya depolanan bilgi hakkında programcıya bilgi vermek amacıyla bazı yazım standartları çeşitli programcılar veya gruplar tarafından kullanılmaktadır. Bunlardan başlıcaları Camel Case, snake Case ve Hungarion Natation dur.

Camel Case (Medial Capitals)

Değişken veya fonksiyon tanımlanırken tanımın makul bir bir kaç kelime ve sadece ilk kelimenin baş harfi küçük ve diğer bütün kelimenin baş harfi büyük olacak şekilde bitişik tanımlama yapılarak kullanılır.Örnek :

var stokHareketleri; //veya

function hesapMakinesi(){
}

gibi. Çok geniş bir kullanım alanına sahip olan Camel Case yazım şekli bir çok programcı ve üretici tarafından da benimsenmiştir. iPhone, eBay, FedEx gibi.

JS’de dahili komutların tamamı camel case kuralıyla yazılmıştır. getElementById, createCDATASection vs… İstisnai bir durum olarak eğer tanım fonksiyon yada nesne ise baş harfi de büyük yazılmıştır. TypeError, RegExp, XMLHttpRequest vs..

Snake Case

Değişken veya fonksiyonları tanımlarken tanımın makul bir kaç kelimeden oluşması durumunda kelimeler arasında ( _ ) ‘underscore’ koyarak okunabilirliliğinin artması öngörülmüştür. Snake Case yazım şeklinde genellikle bütün kelimelerin ilk harfi küçük olarak yazılır. Snake Case kullanım şekli özellikle C dilinde uygulama geliştiren programcıların alt çizgi ( _ ) karakterini kelime ayırıcı olarak kullanılmasından doğmuştur. Python dilinde bu kullanım “lower_case_with_underscores” olarak ifade edilir. Örnek :

var stok_hareketleri //veya; 
function hesap_makinesi(){
 }

gibi. Bu yazım şeklinin dezavantajı ise değişkenlerin boyutlarını her bir kelimede bir karakter büyütmesidir.

Kebap Case

Bu kodlama şekli genellikle Lisp programlama ile ilgili dillerde kullanılan adlandırma stilidir. Tümü küçük harflerden oluşur ve kelimeler arasında – (tire) işareti konularak değişkenler oluşturulur. Javascript Kebap Case kullanımı desteklemez fakat konu ile ilgili olacağını düşündüğümden bu kullanım şekli html de bir tag’a nitelik verilirken kullanılabilir. Buna küçük bir örnek vermek gerekirse;

<div class="page" data-push-state="true">
...
</div>

div tagındaki  data-push-state niteliğini (attributes) Kebap Case kuralına uygun olarak yazmış olduk.

Hungarian Notation (Macarca Gösterimi)

Bu kodlama kuralı Xerox PARC çalışanı olan Charles Simony tarafından kullanılmıştır ve daha sonra Microsoft’a geçmiş ve burada baş mimar olmuştur.  Daha sonra Microsoft’ta bu kodlama biçimini benimsemiş ve Microsoft Office gibi programlarda kullanmıştır.

Hungarian Notation kodlamayı kolay şekilde okunabilmesi için tasarlanmıştır. Değişkenlerin önüne değişkenle ilgili bir kaç önek ( prefix ) eklenerek değişken hakkında bilgi verilmesi sağlanmıştır. Örnek vermek gerekirse yazılımcı bir sayı değişkeni açmak istediğinde (JS’den örnekleyeceğim) değişkenin önüne değişkenin sayı olduğunu belirten bir önek koyar. JS’de kodlayacak olursak;

var iToplam; // Buradaki " i " önek harfi değişkenin integer olduğuna işaret eder. Bir başka örnek;
var sSonuc; // Buradaki " s" önek harfi değişkenin string olduğuna işaret eder.
var oVeriler, bDevam, fnToplam; // örnekleri bu şekilde çoğaltabiliriz.

JS’de kullanılabilen önekler aşağıda listelenmiştir.

var bDevam; //Boolean,
var sYazi;//String
var nToplam; //Number, 
var iSayi; //Number, (javascript'te integer sayı tanımı diğer dillerdeki gibi olmadığından aslında hepsi Number olarak tanımlanır. Buradaki önek sayının aralığı veya biçimi ile ilgilidir.), 
var fnHesap; //Fonksiyon, 
var stBekle; //SetTimeout,
var siTekrar //setInterval,
var rgArama //Regular Expresion

AVANTAJLARI

Macar notasyonunu kullananlar faydalarını şu şekilde özetlediler:

  • Değişkenin türü adından anlaşılabilir. Bu şekilde kodlamanın incelenmesi ve geliştirme dışında kodu incelerken yararlıdır.
  • Dinamik yazılım kullanan veya değişkeni çeşitlendirilmemiş dillerde bir çok açıklama satırını yazmaya gerek kalmaz.
  • Değişken adlarının biçimlendirilmesi, kodun yeniden yapılandırılması sırasında bazı yönlenlerini basitleştirebilir.
  • Benzer işlevlere sahip değişkenlerde kullanılması oldukça faydalıdır. Örneğin JS’de bir alanın genişliğini verirken bunun width anahtar sözcüğüne ön ek kullanarak bu sözcüğün içeriği hakkında bilgi sahibi oluruz.
  • Değişkenlerin türlerini bilmek hatırlamakta kolaylık sağlar.
  • Değişken isimlerinde daha tutarlı olmamızı sağlar.
  • Bir çok global nesneye sahip olman karmaşık programlarda basit bir ön ile değişkenleri bulmak kolaydır Örneğin btn öneki ile bütün Button nesnelerini bulabiliriz.
  • Kapsamı aynı olan değişkenlerde kullanılması ile kapsamdaki benzer değişken isimlerinin kullanılması ile oluşan karmaşa ortadan kalkar.

DEZAVANTAJLARI

  • Değişkenlerin denetimi derleyiciler tarafından denetlendiğinden bu gösterim gereksizdir. Gözle yapılan kontroller her zaman insan hatasına tabidir.
  • Çoğu yazılım geliştirme ortamı, isteğe bağlı olarak değişken türlerini görüntüler ve hatta türleri uyuşmayan değişkenleri otomatik olarak işaretleyerek geliştirici bilgilendirir.
  • Veritabanı işlemlerinde kullanılması kafa karışıklığına yol açabilir.
  • Bir değişkenin kullanımını bilmek o değişkenin türünü de bilmeyi gerektirir.
  • Bazen değişkenler hakkında ek bilgiler vermek değişkenin okunabilirliliğini daha arttır. Örneğin sDatabase değişkeni geliştirici için çok anlam ifade etmez. Fakat sDatabaseName daha açıklayıcı bir koddur fakat o zamanda ön eke gerek kalmaz.
  • Yeterince açıklayıcı değişken kullanmak macar notasyonunu gereksiz kılar.

Kaynaklar:

https://en.wikipedia.org/wiki/Camel_case

https://en.wikipedia.org/wiki/Snake_case

https://en.wikipedia.org/wiki/Hungarian_notation

1 cevap

Cevapla

Want to join the discussion?
Feel free to contribute!

Nazım Mert Bilgi için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir