Kod Biçimlendirici
- İngilizcesi
- Code Formatter
- Türkçe karşılığı
- kod formatlayıcı
- Okunuşu
- kod formetır
Günlük kullanımda iki ad da yaygın.
Kısaca
Kod biçimlendirici, kaynak kodu tek ve tutarlı bir düzene sokan araçtır; kodun ne yaptığını değiştirmeden girintiyi, boşlukları ve satır sonlarını düzeltir.
Kod biçimlendirici (code formatter) nedir?
Kod biçimlendirici, kaynak kodu alır ve düzenini tek ve tutarlı bir stile uyacak şekilde yeniden yazar: girinti, operatörlerin etrafındaki boşluklar, satırların nerede bölündüğü, tırnak işaretleri, sondaki virgüller. Programın ne yaptığı asla değişmez; yalnızca metnin görünüşü değişir. Yaygın örnekler arasında JavaScript, TypeScript, CSS ve daha fazlası için Prettier, Go için gofmt, Python için Black ve Ruff, Rust için rustfmt, C ve C++ için clang-format bulunur.
Modern biçimlendiricilerin çoğu mevcut metni satır satır yamalamaz. Kodu bir sözdizimi ağacına ayrıştırır, özgün düzeni bir kenara atar ve kodu, satır sonlarını belirli bir azami genişliğe sığacak biçimde seçerek, sabit kurallarla ağaçtan yeniden yazdırır. Birçoğu bilinçli olarak katı görüşlüdür (opinionated) ve az ayar sunar: gofmt'nin stil için hiç ayarı yoktur; neredeyse bütün Go kodunun birbirine benzemesinin nedeni budur. Geliştiriciler biçimlendiriciyi genellikle editörde kaydederken, bir pre-commit hook'unda ve CI'da, bir dosya biçimlendirilmemişse başarısız olan prettier --check ya da black --check gibi bir denetim modunda çalıştırır.
Asıl kazanç toplumsaldır: stil tartışmaları ve boşluklarla ilgili yorumlar kod incelemesinden kaybolur, diff'ler de yalnızca gerçek değişiklikleri gösterir. Otomatik uygulanan bir yayınevi stil kılavuzu gibi çalışır; her yazarın bölümleri aynı yazı tipleri ve kenar boşluklarıyla çıkar. Mevcut bir projede biçimlendiriciyi benimseyen ekipler genellikle her şeyi tek bir commit'te yeniden biçimlendirir ve bu commit'i bir .git-blame-ignore-revs dosyasına yazar; böylece blame görünümleri onu atlayıp her satırı gerçekte kimin yazdığını göstermeye devam eder.
Biçimlendirici sıklıkla linter ile karıştırılır. Linter kodu olası hatalar ve şüpheli kalıplar açısından inceler, örneğin kullanılmayan bir değişkeni ya da eksik bir await ifadesini, ve bunları raporlar; biçimlendirici ise yalnızca düzeni değiştirir ve mantık hakkında hiçbir yargıda bulunmaz. Ekipler çoğunlukla ikisini birlikte çalıştırır ve birbirleriyle çakışmasınlar diye linter'ın stil kurallarını kapatır; ESLint de bu nedenle 2023'te kendi biçimlendirme kurallarını kullanımdan kaldırdı (deprecated). Ruff ve Biome gibi bazı yeni araçlar, linter ile biçimlendiriciyi bir arada sunar.
Önemli noktalar
- Kod biçimlendirici, kodun düzenini otomatik olarak yeniden yazar ve davranışını asla değiştirmez.
- Çoğu, kodu ayrıştırıp sabit kurallarla sıfırdan yeniden yazdırır.
- gofmt, Prettier ve Black gibi katı görüşlü biçimlendiriciler kod incelemesindeki stil tartışmalarını bitirir.
- Kaydederken, pre-commit hook'larında ve CI'da bir denetim olarak çalışırlar.
- Linter olası hataları bulur; biçimlendirici yalnızca düzeni düzeltir.
Örnek
// Before: valid code, written in whatever style the author liked
const user={name:'Ada',roles:[ 'admin','dev' ],active:true}
function greet(u){return 'Hello, '+u.name}
// After running `npx prettier --write user.js`
const user = { name: "Ada", roles: ["admin", "dev"], active: true };
function greet(u) {
return "Hello, " + u.name;
}Sık sorulan sorular
Linter ile biçimlendirici arasındaki fark nedir?
Linter olası hataları ve riskli kalıpları arar ve bunları raporlar; biçimlendirici ise yalnızca girinti ve satır sonları gibi düzeni yeniden yazar. Birçok proje ikisini birlikte kullanır ve düzenle ilgili her kararı biçimlendiriciye bırakır.
Kod biçimlendirici kodumu bozabilir mi?
Bozmayacak şekilde tasarlanmıştır: biçimlendirici yalnızca boşluklar, tırnaklar ve parantezler gibi düzen ayrıntılarını değiştirir; Black gibi bazıları, yeniden biçimlendirilen kodun hâlâ eşdeğer bir sözdizimi ağacına ayrıştığını da denetler. Hatalar nadirdir; büyük bir kod tabanını yeniden biçimlendirdikten sonra testleri çalıştırmak da ucuz bir güvenlik ağıdır.
Hangi kod biçimlendiriciyi kullanmalıyım?
Genellikle dilinizin topluluğunun benimsediğini: Go için gofmt, Rust için rustfmt, JavaScript ve TypeScript için Prettier ya da Biome, Python için Black ya da Ruff. Ekip olarak tek bir biçimlendiricide anlaşmak, hangisini seçtiğinizden daha önemlidir.
İlgili sayfalar
- LintingTest ve Kalite, s. 15Linting, kaynak kodu çalıştırmadan otomatik olarak analiz edip olası hataları, stil sorunlarını ve şüpheli kalıpları kod yayına çıkmadan işaretleme işlemidir.
- Statik AnalizTest ve Kalite, s. 26Statik analiz, hataları, güvenlik açıklarını ve kalite sorunlarını erken bulmak için kaynak kodun çalıştırılmadan otomatik olarak incelenmesidir.
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
- Git HooksSürüm Kontrolü, s. 16Git hook'ları, commit ya da push öncesi gibi anlarda Git'in otomatik çalıştırdığı; kodu denetleyen, kural uygulayan ve işleri otomatikleştiren betiklerdir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- IDEProgramlamanın Temelleri, s. 28IDE (tümleşik geliştirme ortamı), bir kod editörünü hata ayıklayıcı, derleme komutları ve diğer geliştirici araçlarıyla tek bir yerde birleştiren uygulamadır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin