Aikido

Büyük kod dosyaları nasıl bölümlere ayrılır: Sürdürülebilirlik için kod organize etme

Okunabilirlik

Kural

Aşırı büyük dosyalardan kaçının.
Birden fazla sorumluluğa sahip büyük dosyaların bakımı zordur.

Desteklenen diller: 45+

Giriş

Binlerce satıra yayılan dosyalar genellikle birbiriyle ilişkisiz birden fazla konuyu ele alır ve belirli bir işlevselliğin bulunmasını zorlaştırır. 3000 satırlık bir utils.js doğrulama yardımcıları, dize biçimlendirme, tarih işleme ve API araçları içeren dosya, geliştiricilerin ihtiyaç duydukları şeyi bulmak için ilgili olmayan kodları kaydırmasını zorunlu kılar. Büyük dosyalar ayrıca, birden fazla geliştirici aynı anda farklı bölümleri değiştirdiğinde birleştirme (merge) çakışmaları yaratır.

Neden önemli?

Kod sürdürülebilirliği: Büyük dosyalar birbiriyle ilişkisiz işlevleri bir arada tutar; bu da geliştiricilerin tek bir fonksiyonu değiştirmek için yüzlerce satırlık alakasız kodu anlamasını gerektirir. Belirli bir mantığı bulmak, uygun şekilde adlandırılmış bir dosyaya gitmek yerine bir arama egzersizine dönüşür.

Sürüm kontrol çakışmaları: Birden fazla geliştirici aynı büyük dosyadaki farklı özellikler üzerinde çalıştığında sık sık birleştirme çakışmaları (merge conflict) meydana gelir. Daha küçük ve odaklanmış dosyalar, her geliştirici ayrı dosyalarda çalıştığı için paralel geliştirmeyi mümkün kılar.

Kod inceleme verimliliği: Büyük dosyalardaki değişiklikleri incelemek daha fazla bağlam gerektirir. İnceleme yapan kişilerin, yapılan değişikliklerin aynı dosyadaki diğer alakasız kodları nasıl etkilediğini anlaması gerekir. Daha küçük dosyalar değişikliklerin kapsamını açık hale getirerek incelemeleri hızlandırır.

Kod örnekleri

❌ Kural dışı:

// utils.js (1500+ satır)
function validateEmail(email) { /* ... */ }
function validatePhone(phone) { /* ... */ }
function formatCurrency(amount) { /* ... */ }
function formatDate(date) { /* ... */ }
function parseJSON(str) { /* ... */ }
function apiRequest(url) { /* ... */ }
function debounce(fn, delay) { /* ... */ }
function throttle(fn, limit) { /* ... */ }
// ... 100+ diğer alakasız fonksiyon

Neden yanlış: Devasa tek bir dosya; doğrulama, biçimlendirme, ayrıştırma, API çağrıları ve performans yardımcı programlarını barındırır. debounce() Yüzlerce alakasız fonksiyon arasında kaydırma yapmayı gerektirir. Bu dosyayı değiştiren birden fazla takım, sürekli birleştirme çakışmalarına yol açar.

✅ Kurallara uygun:

// validation/email.js
export function validateEmail(email) { /* ... */ }

// validation/phone.js
export function validatePhone(phone) { /* ... */ }

// formatting/currency.js
export function formatCurrency(amount) { /* ... */ }

// formatting/date.js
export function formatDate(date) { /* ... */ }

// api/request.js
export function apiRequest(url) { /* ... */ }

// performance/debounce.js
export function debounce(fn, delay) { /* ... */ }

Neden önemli: Kategorize edilmiş dizinler içinde özel bir dosyada yer alan her yardımcı fonksiyon. debounce() anlamına gelir: performance/debounce.js doğrudan. Farklı araçlar üzerinde çalışan ekipler, ayrı dosyalarda oldukları için birbirleriyle çakışmaz.

Sonuç

Dosyaları mümkün olduğunca 500 satırın altında tutun. Dosyalar bu sınırı aştığında, ayrı modüllere çıkarılabilecek farklı sorumluluklar arayın. Bireysel dosyaları odaklanmış ve sürdürülebilir tutarken yapıyı korumak için ilgili dosyaları dizinler halinde düzenleyin.

Sık Sorulan Sorular

Sorularınız mı var?

Kabul edilebilir maksimum dosya boyutu nedir?

Dosya başına 500 satırın altında kalmayı hedefleyin. 500 satırı aşan dosyalar genellikle bölünmesi gereken birden fazla sorumluluğa işaret eder. Tam sayıdan ziyade dosyanın tek ve net bir amaca sahip olup olmadığı daha önemlidir. Karmaşık bir algoritmayı uygulayan 600 satırlık bir dosya kabul edilebilir olabilir, ancak her şeye ev sahipliği yapan 600 satırlık bir yardımcı (utility) dosyası bölünmelidir.

İçe aktarmaları (import) bozmadan büyük dosyaları nasıl bölerim?

Odaklanmış dosyalardan oluşan yeni bir dizin oluşturun, ardından her şeyi yeniden dışarı aktaran bir index dosyası ekleyin: export * from './validation.js'. İçe aktarmaları kademeli olarak güncelleyin. IDE'ler gibi araçlar, kod dosyalar arasında taşınırken içe aktarma yollarını otomatik olarak güncelleyebilir.

Oluşturulan kodlar (generated code) veya yapılandırma dosyaları hakkında ne söylebilirsiniz?

Oluşturulan kodlar, insanlar tarafından doğrudan sürdürülmediği için büyük olabilir. Yapılandırma dosyaları da (webpack.config.js vb.) normal sınırları aşabilir. Bu kural, sürdürülebilirliğin önem taşıdığı, insanlar tarafından yazılan kodları hedefler. Oluşturulan dosyaları net bir şekilde işaretleyin ve dosya boyutu kontrollerinden hariç tutun.

Doğal olarak büyüyen dosyaları nasıl yönetmeliyim?

Yardımcı fonksiyonları (helper function) ayırın, ilgili sınıfları ayrı dosyalara taşıyın, özellik veya sorumluluğa göre bölün. Bir bileşen dosyası büyürse, bileşeni mantığından, stillerinden ve testlerinden ayırın. State yönetimi için reducer'ları etki alanına (domain) göre bölün. Kodun bölünebileceği mantıksal bir nokta her zaman vardır.

Şimdi güvenliğinizi sağlayın

Kodunuzu, bulutunuzu ve çalışma zamanınızı tek bir merkezi sistemde güvenceye alın.
Güvenlik açıklarını otomatik olarak hızla bulun ve düzeltin.

Kredi kartı gerekmez | Tarama sonuçları 32 saniyede.