Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Daha İyi Fonksiyonlar Yazmak İçin Temel İpuçları ve En İyi Uygulamalar

Fonksiyon Yazımı İpuçları: Daha Temiz, Okunabilir ve Sürdürülebilir Kod İçin Rehber

Yazılım geliştirmede fonksiyonlar, kodun temel yapı taşlarıdır. İyi yazılmış fonksiyonlar, kod tabanının okunabilirliğini, test edilebilirliğini ve sürdürülebilirliğini artırırken, kötü yazılmış fonksiyonlar bakımı zor, hata potansiyeli yüksek ve anlaşılması güç sistemlere yol açar. Bu rehberde, daha kaliteli fonksiyonlar yazmanıza yardımcı olacak temel ilke ve ipuçlarını bulacaksınız.

1. Tek Sorumluluk Prensibi (Single Responsibility Principle - SRP)
Bir fonksiyon, yalnızca bir işi yapmalı ve o işi iyi yapmalıdır. Bu, fonksiyonlarınızı küçük ve odaklanmış tutmanıza yardımcı olur. Eğer bir fonksiyon birden fazla şey yapmaya çalışıyorsa, onu daha küçük, tek sorumluluklu fonksiyonlara bölmeyi düşünmelisiniz.

Örnek:
Kod:
// Kötü örnek: Birden fazla sorumluluğu var
function kullaniciVerisiIsleVeKaydet(kullaniciId) {
    // Kullanıcı verisini veritabanından getir
    // Veriyi doğrula
    // Veriyi formatla
    // Veritabanına kaydet
    // Kullanıcıya e-posta gönder
}

// İyi örnek: Her fonksiyonun tek bir sorumluluğu var
function kullaniciGetir(kullaniciId) {
    // Veritabanından kullanıcı getirir
}

function kullaniciVerisiDogrula(veri) {
    // Veriyi doğrular
}

function kullaniciVerisiFormatla(veri) {
    // Veriyi formatlar
}

function kullaniciKaydet(veri) {
    // Veritabanına kaydeder
}

function kullaniciyaEpostaGonder(kullanici) {
    // Kullanıcıya e-posta gönderir
}

2. Anlamlı ve Açıklayıcı İsimler Kullanın
Fonksiyon ve parametre isimleri, ne yaptığını ve ne beklediğini açıkça belirtmelidir. Kodunuzu okuyan kişinin fonksiyonun amacını tahmin etmesine gerek kalmamalıdır. Kısaltmalardan kaçının ve tutarlı bir adlandırma stratejisi izleyin.

"Kod, en iyi dökümantasyondur." - Genellikle Robert C. Martin'e atfedilir.

Örnek:
* Kötü: `fn(a, b)`
* İyi: `toplamHesapla(sayi1, sayi2)`, `kullaniciProfiliGuncelle(kullaniciId, yeniVeriler)`

3. Saf Fonksiyonlar (Pure Functions)
Bir fonksiyon, aynı girdilerle her zaman aynı çıktıyı veriyorsa ve dış dünyada hiçbir yan etki (side effect) yaratmıyorsa "saf" bir fonksiyondur. Saf fonksiyonlar test etmesi, anlaması ve hata ayıklaması çok daha kolaydır. Dış kapsamdaki değişkenleri değiştirmekten veya dış sistemlerle etkileşimden kaçının (örneğin, dosya yazma, veritabanı işlemleri, ağ istekleri) saf fonksiyonlar içinde. Bu tür işlemler yan etkilere neden olur ve fonksiyonun öngörülebilirliğini azaltır.

4. Yan Etkilerden Kaçınma veya Kontrollü Kullanma
Yukarıdaki saf fonksiyonlar prensibiyle bağlantılı olarak, fonksiyonlarınızın mümkün olduğunca az yan etkiye sahip olmasına özen gösterin. Eğer bir fonksiyonun yan etki yaratması gerekiyorsa (örneğin, bir veritabanına kayıt), bu yan etkinin açıkça belgelenmiş ve beklenen bir davranış olduğundan emin olun. Mümkünse, yan etkileri olan kısımları kodunuzun daha üst seviyelerine taşıyın ve daha alt seviyelerde saf fonksiyonları kullanmaya çalışın.

5. Fonksiyonları Küçük Tutun
Bir fonksiyonun çok uzun olması, genellikle birden fazla sorumluluğu olduğunu veya çok fazla karmaşık mantık içerdiğini gösterir. Bir fonksiyonun boyutu için kesin bir kural olmamakla birlikte, çoğu geliştirici 10-20 satırın ideal olduğunu kabul eder. Eğer bir fonksiyonunuz bu sınırın üzerine çıkıyorsa, onu daha küçük, daha yönetilebilir parçalara bölmeyi düşünün.

6. Parametre Sayısını Sınırlayın
Bir fonksiyonun çok fazla parametresi olması, anlaşılmasını ve kullanılmasını zorlaştırır. İdeal olarak, 0 ila 3 parametre iyi kabul edilir. Eğer 3'ten fazla parametreye ihtiyacınız varsa, bu parametreleri bir nesne (object) veya yapı (struct) içinde gruplandırmayı düşünün. Bu, hem fonksiyon imzasını basitleştirir hem de kodun okunabilirliğini artırır.

Örnek:
Kod:
// Kötü örnek: Çok fazla parametre
function urunEkle(id, ad, fiyat, stok, kategori, aciklama, resimUrl) {
    // ...
}

// İyi örnek: Parametreleri bir nesne içinde gruplandırma
function urunEkle(urunBilgileri) {
    // urunBilgileri.id
    // urunBilgileri.ad
    // urunBilgileri.fiyat
    // ...
}

7. Hata Yönetimi (Error Handling)
Fonksiyonlarınızda olası hata durumlarını öngörün ve bu durumları zarifçe ele alın. Kullanıcı girdisi doğrulamasından, dış sistemlerle etkileşim hatalarına kadar her türlü hata senaryosunu düşünün. Hataları fırlatmak (throw), döndürmek (return) veya özel hata nesneleri kullanmak gibi stratejiler uygulayabilirsiniz. Hata mesajlarınızın açıklayıcı ve kullanışlı olduğundan emin olun.

8. Dokümantasyon ve Yorumlar
İyi yazılmış kod genellikle kendi kendini belgeler, ancak karmaşık algoritmalar, iş mantığının arkasındaki nedenler veya beklentileri açıklamak için yorumlara ve dokümantasyona ihtiyaç duyulabilir. Fonksiyonlarınızın ne yaptığını, hangi parametreleri aldığını, ne döndürdüğünü ve hangi istisnaları fırlatabileceğini belgeleyin. Özellikle halka açık API'ler veya kütüphane fonksiyonları için bu kritik öneme sahiptir.

9. Erken Çıkış (Early Exit) veya Bekçi Koşulları (Guard Clauses)
Fonksiyonlarınızdaki iç içe girmiş `if/else` bloklarından kaçınmak için erken çıkış veya bekçi koşulları kullanın. Bu, kodun okunabilirliğini artırır ve karmaşıklığı azaltır. Hatalı durumlar veya ön koşulların sağlanmadığı durumlarda fonksiyonun en başında gerekli kontrolleri yaparak hemen çıkış yapın.

Örnek:
Kod:
// Kötü örnek: Derin iç içe geçmişlik
function islemYap(veri) {
    if (veri !== null) {
        if (veri.isValid) {
            // Asıl işlem
        } else {
            return "Geçersiz veri";
        }
    } else {
        return "Boş veri";
    }
}

// İyi örnek: Erken çıkış
function islemYap(veri) {
    if (veri === null) {
        return "Boş veri";
    }
    if (!veri.isValid) {
        return "Geçersiz veri";
    }
    // Asıl işlem
}

10. Test Edilebilirlik
Fonksiyonlarınızı test edilebilir kılmak, kod kalitesini artırmanın anahtarıdır. Bağımlılıkları en aza indirin ve mümkün olduğunca saf fonksiyonlar yazın. Bir fonksiyonun bağımlılıkları varsa (örneğin, bir veritabanı bağlantısı), bunları fonksiyonun içine sıkıca bağlamak yerine bağımlılık enjeksiyonu (dependency injection) gibi yöntemlerle dışarıdan sağlayın. Bu, birim testleri (unit tests) yazmayı çok daha kolay hale getirir.

11. Soyutlama Seviyesi Tutarlılığı
Fonksiyonlarınızda aynı soyutlama seviyesini koruyun. Bir fonksiyon hem çok yüksek seviyeli (örneğin, "müşteri siparişini işleme") hem de çok düşük seviyeli (örneğin, "veritabanından bir satır getir") işlemleri aynı anda yapmaya çalışmamalıdır. Düşük seviyeli detaylar, daha derin fonksiyonlar içinde soyutlanmalıdır.

12. Yeniden Düzenleme (Refactoring)
Kodunuzu sürekli olarak yeniden düzenlemekten korkmayın. Bir fonksiyonu daha iyi hale getirmenin yollarını arayın, daha iyi isimler bulun, daha küçük parçalara bölün veya mantığı basitleştirin. Yeniden düzenleme, kod tabanınızın zamanla daha sağlam ve sürdürülebilir kalmasını sağlar.

Sonuç
Fonksiyon yazımı, pratikle gelişen bir sanattır. Bu ipuçları, daha okunabilir, bakımı kolay ve hataya daha az açık kod yazmanıza yardımcı olacak genel prensiplerdir. Her zaman esnek olun ve projenizin özel ihtiyaçlarına göre bu kuralları ayarlayın. Unutmayın, nihai amaç her zaman anlaşılması kolay, işlevsel ve sağlam bir kod üretmektir. Başarılı yazılım geliştirmenin temelinde iyi tasarlanmış fonksiyonlar yatar. Bu prensipleri uygulayarak kod kalitenizi önemli ölçüde artırabilir ve daha keyifli bir geliştirme deneyimi yaşayabilirsiniz. Kodlama yolculuğunuzda başarılar!

 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected