Tüm makaleler

Case Converter: farklı adlandırma stilleri neden var

Türkçenin dört farklı "i" harfi vardır: noktalı küçük i, noktalı büyük İ, noktasız küçük ı ve noktasız büyük I — İngilizcedeki tek çift i/I'nin aksine. Bu yüzden Türkçe yerel ayarı (locale) açık bir sistemde "I".toLowerCase() çoğu programlama dilinde beklenen "i" değil, noktasız "ı" döndürür; tersine "i".toUpperCase() da "I" değil "İ" verir. Bu, "Türkçe I sorunu" olarak bilinen ve dünya çapında sayısız gerçek üretim hatasına yol açmış, iyi belgelenmiş bir yerelleştirme tuzağıdır.

Ana stiller

  • camelCase — ilk kelime küçük harfle, sonraki her kelime büyük harfle başlar, ayırıcı yok: userName. JavaScript, Java, C#'ta değişkenler ve fonksiyonlar için standart.
  • PascalCase — aynısı, ama ilk kelime de büyük harfle başlar: UserName. Neredeyse her yerde sınıflar ve bileşenler için kullanılır.
  • snake_case — kelimeler alt çizgiyle ayrılır, hepsi küçük harf: user_name. Python'da ve veritabanı sütun adlarında standart.
  • kebab-case — kelimeler tire ile ayrılır: user-name. URL'ler, CSS sınıfları ve HTML öznitelikleri için standart, çünkü alt çizgi URL'lerde daha az yaygındır.

Bu neden sadece estetik değil

Türkçe I sorunu genelde şöyle ortaya çıkar: bir geliştirici "ID".toLowerCase() çağırır ve Türkçe yerel ayarı etkinken beklediği "id" yerine "ıd" sonucunu alır — çünkü büyük "I" Türkçede noktasız küçük "ı"ya döner. Bu tür sabit (case-insensitive) karşılaştırmalar, dosya uzantısı kontrolleri ve anahtar kelime eşleştirmelerinde sessizce başarısız olabilir; çözüm genellikle yerelden bağımsız (invariant/ordinal) karşılaştırma kullanmaktır, yerel ayarlı karşılaştırma değil.

Dönüştürme ne için gerekli

  • Bir JSON API'sinden gelen bir alanı (genellikle camelCase) bir veritabanı sütun adına (genellikle snake_case) eşlemek.
  • Kodu farklı bir kuralı olan bir dilden diğerine taşırken değişkenleri yeniden adlandırmak.
  • Bir başlık metninden URL'ye uygun bir slug veya CSS sınıfı oluşturmak.

Kısaltmalarla belirsizlik

userID veya XMLParser gibi bir tanımlayıcı, dönüştürücüyü bir seçimle karşı karşıya bırakır: kısaltmayı tek bir "kelime" olarak mı kabul etmeli, yoksa tek tek harflere mi bölmeli? Farklı araçlar bunu farklı şekilde çözer — bu araç ardışık büyük harflerden oluşan bir diziyi ayrı bir kelime olarak tanır (XMLParserXML + Parser), ama isim doğrudan production koduna girecekse sonucu elle kontrol etmekte fayda var.

Aracı dene