← Blog · · ConvertCaseHQ Ekibi · 6 dk okuma

camelCase, snake_case, kebab-case: geliştiriciler için hızlı başvuru rehberi

Kısa özet şu: Türler ve sınıflar hemen her dilde PascalCase yazılır. Değişkenler ve fonksiyonlar JavaScript, Java, C#, Kotlin ve Swift'te camelCase, Python, Ruby ve Rust'ta ise snake_case yazılır. Sabitler çoğu dilde SCREAMING_SNAKE_CASE yazılır; Go, Swift, C# ve Google stilindeki C++ bunun istisnalarıdır. Bir URL'de, CSS dosyasında ya da paket adında yer alan her şey genellikle küçük harfli kebab-case, ortam değişkenleri ise alt çizgili büyük harflerdir.

Örüntü bu. Kod incelemelerinde tartışma çıkan yer ayrıntılardır; bu yüzden bu başvuru rehberi her dilin resmî ya da en yaygın kullanılan stil kılavuzunun gerçekte ne dediğine bağlı kalır ve her dil için kaynağı belirtir.

camelCase, snake_case, kebab-case: beş stil ve öbür adları

  • camelCase (orderTotal): ilk sözcük küçük harfle, sonraki her sözcük büyük harfle başlar. lowerCamelCase da denir; PEP 8 buna mixedCase der.
  • PascalCase (OrderTotal): her sözcük büyük harfle başlar. UpperCamelCase, CapWords (PEP 8) ya da StudlyCaps (PHP'nin PSR-1'i) olarak da geçer.
  • snake_case (order_total): küçük harfli sözcükler alt çizgiyle birleştirilir.
  • SCREAMING_SNAKE_CASE (ORDER_TOTAL): büyük harfli sözcükler alt çizgiyle birleştirilir. Google'ın JavaScript kılavuzu buna CONSTANT_CASE, Java kılavuzu UPPER_SNAKE_CASE der.
  • kebab-case (order-total): küçük harfli sözcükler tireyle birleştirilir. Çoğu dil bunu tanımlayıcılarda kullanamaz, çünkü tire bir eksi işaretidir.

Bir adı bir stilden ötekine çevirmek için büyük/küçük harf dönüştürücümüze yapıştırın. Boşluklardan, alt çizgilerden, tirelerden ve mevcut büyük harflerden böler; bu yüzden order_total, order-total ve OrderTotal birbirine sorunsuz dönüşür. Yine de her seferinde tek bir ad çevirin: kutudaki her şeyi tek bir tanımlayıcı olarak ele alır.

Hızlı başvuru: dillere göre adlandırma kuralları

DilDeğişkenler ve fonksiyonlarSınıflar ve türlerSabitlerKaynak
JavaScript, TypeScriptcamelCasePascalCaseHiç değişmeyen, modül düzeyindeki değerler için CONSTANT_CASEGoogle JavaScript ve TypeScript stil kılavuzları
JavacamelCasePascalCaseDerinlemesine değiştirilemez static final alanlar için UPPER_SNAKE_CASEGoogle Java Style Guide
KotlincamelCasePascalCaseconst ile derinlemesine değiştirilemez üst düzey ya da nesne değerleri için SCREAMING_SNAKE_CASEKotlin coding conventions
C#Yerel değişkenler ve parametreler için camelCase, özel alanlar için _camelCase, metotlar ve herkese açık üyeler için PascalCasePascalCase; arayüzlerde I öneki (IWorkerQueue)PascalCaseMicrosoft .NET belgeleri
SwiftcamelCasePascalCasecamelCaseSwift API Design Guidelines
GoDışa aktarılmıyorsa camelCase, aktarılıyorsa PascalCaseAynı kuralYine MixedCaps (MaxPacketSize)Effective Go, Google Go Style
Pythonsnake_casePascalCase (CapWords)UPPER_SNAKE_CASEPEP 8
Rubysnake_casePascalCaseSCREAMING_SNAKE_CASERuby Style Guide
Rustsnake_casePascalCase (UpperCamelCase)SCREAMING_SNAKE_CASERust API Guidelines (RFC 430)
PHPMetotlar camelCase; özellikler size bırakılmıştırPascalCase (StudlyCaps)Sınıf sabitleri için UPPER_SNAKE_CASEPSR-1
C++Değişkenler snake_case, fonksiyonlar PascalCasePascalCasekDaysInAWeekGoogle C++ Style Guide (birkaç kılavuzdan biri)

Birkaç satıra dipnot düşmek gerekiyor. Go'da ilk harf hiç de bir stil tercihi değildir: görünürlük kuralıdır. Area paketinden dışa aktarılır, area aktarılmaz ve bunu derleyici zorunlu kılar. C++'ın dil çapında bir geleneği yok; standart kütüphanenin kendisi snake_case kullanır (std::unordered_map, push_back). Bu yüzden Google satırını kural olarak değil, iyi belgelenmiş bir seçenek olarak görün.

Rust stil konusunda alışılmadık derecede katıdır. Derleyici daha en baştan uyarır: fn GetUser() ya da struct user_account yazarsanız rustc, siz bir linter çalıştırmadan önce get_user ve UserAccount önerir.

Dosya, modül ve paket adları

  • Java: Herkese açık üst düzey bir sınıf, büyük harfleri de dahil tam olarak kendi adını taşıyan bir dosyada bulunmak zorundadır. OrderService, OrderService.java dosyasına girer; javac başka her şeyi reddeder.
  • Kotlin: Tek bir sınıf barındıran dosya o sınıfın adını alır. Diğer dosyalar ProcessDeclarations.kt gibi açıklayıcı bir UpperCamelCase ad alır.
  • Python: Modüller kısa, tamamı küçük harfli adlar alır; okunabilirliğe yardımcı oluyorsa alt çizgi kullanılabilir. Paketler de kısa ve küçük harfli olmalıdır; PEP 8 onlarda alt çizgiyi önermez.
  • Ruby: snake_case dosyalar, içlerindeki sınıfın adını taşır; yani HelloWorld, hello_world.rb dosyasında bulunur.
  • Go: Paket adları alt çizgisiz, mixedCaps'siz, küçük harfli tek sözcüklerdir: encoding_base64 ya da encodingBase64 değil, base64.
  • JavaScript ve TypeScript: Tek bir kural yok. Google'ın JavaScript kılavuzu alt çizgili ya da tireli, tamamı küçük harfli dosya adları ister; TypeScript kılavuzu ise snake_case kullanır. Airbnb'nin kılavuzu bir dosya adının varsayılan dışa aktarımıyla (default export) eşleşmesi gerektiğini söyler; yani CheckBox sınıfı CheckBox.js dosyasında bulunur. Proje başına birini seçin ve yazıya geçirin.
  • npm paketleri: Yeni paket adları hiçbir şekilde büyük harf içeremez.

Kaynak kodun ötesinde: ortam değişkenleri, CSS, HTML, URL'ler, JSON ve SQL

NeredeKuralÖrnekNeden
Ortam değişkenleriSCREAMING_SNAKE_CASEDATABASE_URLPATH ve HOME gibi sistem değişkenleriyle uyumludur. Adlar Linux ve macOS'ta büyük/küçük harfe duyarlıdır, Windows'ta değildir.
CSS özelliklerikebab-casebackground-colorDil tarafından belirlenmiştir.
CSS özel özellikleri (custom properties)İki tireden sonra kebab-case--brand-colorBüyük/küçük harfe duyarlıdır; yani --Brand-Color başka bir özellik olurdu.
CSS sınıf adlarıkebab-case, çoğunlukla BEM ilecard__title--largeÇevresindeki özellikler gibi okunur.
JavaScript'ten CSScamelCaseel.style.backgroundColorstyle nesnesi özellik adlarını camelCase olarak sunar.
HTML data özniteliklerikebab-casedata-index-numberJavaScript'te dataset.indexNumber olarak okunur.
URL yollarıKüçük harfli kebab-case/blog/developer-case-stylesGoogle alt çizgi yerine tire önerir ve /APPLE ile /apple adreslerini farklı URL'ler sayar.
JSON anahtarlarıStandart yokuserId ya da user_idAna tüketiciye uyun, dönüşümü sınırda yapın.
SQL tabloları ve sütunlarıKüçük harfli snake_caseorder_itemsHer büyük veritabanında tırnak işareti olmadan çalışır.

Ortam değişkenleriyle ilgili bir tuhaflık: POSIX, standart yardımcı programların büyük harfli adlar kullandığını ve küçük harf içeren adları uygulamalara ayırdığını söyler; yani küçük harfli bir ad standart bir adla asla çakışmaz. Yine de büyük harf yerleşik alışkanlıktır. Bu yüzden biz onu korur, çakışmaları önlemek için ise ayırt edici bir önek (MYAPP_TIMEOUT) eklerdik.

CSS ve SQL satırlarının her birinin ayrı bir yazısı var: sınıf adları için CSS adlandırma ve BEM, veritabanlarının sizi neden küçük harfe yönlendirdiği için SQL adlandırma kuralları yazısına bakın.

Kısaltmalar: stil kılavuzlarının ayrıştığı yer

Bütün kılavuzlar userName konusunda hemfikirdir. userID konusunda ise ayrılırlar. Google'ın JavaScript ve Java kılavuzları kısaltmaları sıradan sözcükler gibi küçük harfle yazar (xmlHttpRequest, customerId). Go her kısaltmayı tek tip tutar (ServeHTTP, appID). Microsoft'un .NET yönergeleri iki harfli bir kısaltmada iki harfi de büyük yazar (IOStream), daha uzunlarda yalnızca ilk harfi (HtmlTag). Rust bunları sözcük sayar (Uuid); PEP 8 ise HTTPServerError biçimini HttpServerError biçimine tercih eder. Seçenekleri camelCase ile PascalCase yazımızda yan yana karşılaştırıyoruz.

Emin olmadığınızda nasıl seçersiniz

  1. Platformun sizin yerinize karar verip vermediğine bakın. CSS özellik adları, Java dosya adları, Go'nun dışa aktarılan adları ve React bileşen adları (büyük harfle başlamak zorundadır) bir stil tercihi değildir.
  2. Dilin resmî kılavuzunu izleyin. Yeni kod, yanında durduğu standart kütüphaneye benzemelidir.
  3. Mevcut projeye uyun. PEP 8 bunu açıkça söyler: bir proje içindeki tutarlılık, stil kılavuzuyla tutarlılıktan daha önemlidir.
  4. Hatırlama işini bir linter'a bırakın. ESLint'in camelcase kuralı, Python için Ruff'ın N kuralları ve rustc'nin yerleşik uyarıları, hataları bir inceleyici yakalamak zorunda kalmadan önce yakalar.
  5. Dönüşümü sınırda bir kez yapın. snake_case JSON, camelCase JavaScript ile buluştuğunda iki stilin de kod tabanına yayılmasına izin vermek yerine anahtarları tek bir serileştirme katmanında yeniden adlandırın.

© 2026 ConvertCaseHQ. Tüm hakları saklıdır.