Yandex Metrica
Clean Code: YAGNI Prensibi - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

Clean Code: YAGNI Prensibi

20.04.2022 yasinsunmaz 1250 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip YAGNI(You Ain’t Gonna Need It)'dir. Bu prensip genel anlamda vurguladığı şey: İhtiyacımız olmayan şeylerin sisteme dahil olmaması gerektiğidir. YAGNI bize yazdığımız kodda sadece gerekli şeylerin olmasını söyler. Aynı zamanda kodumuzda daha sonra bir özelliğe veya kod parçasına ihtiyacınız olacağından tamamen emin olsanız bile bunu hemen uygulamayın. Yani ileride bu da lazım olacak diyerek bir işe kalkışmayın. Büyük olasılıkla, buna ihtiyacınız olmayacak veya gerçekte ihtiyacınız olan şey, daha önce ihtiyaç duyduğunuz ve öngördüğünüzden oldukça farklı olacaktır. Bunun yanında mevcut zamanınızdan harcayacaksınız. Bu da o günkü performansınızı etkileyecek.

Clean Code: YAGNI Prensibi

Ayrıca buna rağmen yaptığınızda ise belli zamanda sonra orada o şeye ihtiyaç olduğunda tekrar mevcut kodunuzu okumanız incelemeniz gerekecek. Muhtemeldir ki yeni yapacak olduğunuz eskisinden farklı olacak. Bu durumda da sizin ilerisini düşünüp yazdığınız kod bir bakıma boşa gidecek ve bununla kalmayıp daha da zamanınızın boşa gitmesine sebep olacaktır. Sonuçta o kodu yazmak içinde analiz, dest, dokümantasyon gibi farklı alanlarla çaba sarf ediyoruz. Bu gibi o an ihtiyacımız olmayan ama bizim ilerisi için iyi sandığımız ama kötü durum yazılımda teknik borç olarak bilinir. İlk başta fark edilmese de ilerleyen zamanda bu teknik borç artarak devam eder. Sonunda da size geri dönüşü olur. İnsanların varsayımsal özellikler oluşturmasının yaygın nedeni, daha sonra inşa etmektense şimdi inşa etmenin daha ucuz olacağını düşünmeleridir. En büyük hatayı burada yapmaktayız! Şimdi iyilik yaptığınızı düşünüp ilerisi için en büyük kötülüğü yapmış olursunuz.

YAGNI günümüz deyimi ile anı yaşamamızı ister. İlerisi için çok fazla bir şey yapmamamız gerektiğini söyler.

Kodunuzu yazarken buna gerçekten ihtiyacım olacak mı? diye sormalıyız. Cevabınız basitçe Evet cevabından farklı ise, hayır buna ihtiyacınız kesinlikle olmayacak. İhtiyacımız olmayan şeylerden kurtulun! YAGNI yalnızca kodun değiştirilmesi kolaysa uygulanabilir bir stratejidir, bu nedenle yeniden düzenleme için çaba harcamak YAGNI'yi ihlal etmez çünkü yeniden düzenleme kodu daha yumuşak hale getirir.

YAGNI Prensibine Uyulmadığında Karşılaşacağınız Maliyetler

  • Oluşturma Maliyeti: Bir özelliği analiz etmek, programlamak, dokümante ve test etmek için harcanan tüm çaba.
  • Gecikme Maliyeti: Şimdi başka bir özellik oluşturmak ve yayınlamak için kaçırılan fırsat.
  • Taşıma Maliyeti: Özelliğin koda eklediği karmaşıklık, yazılımı değiştirmeyi ve hata ayıklamayı zorlaştırır.
  • Onarım Maliyeti: Şu anda tam olarak ihtiyacınız olan şey olmadığı için bir özelliği değiştirmek için harcanan çaba.

YAGNI Prensibine Uymak İçin

  • Bir şeyleri her zaman gerçekten ihtiyacınız olduğunda uygulayın.
  • İleride lazım olur ya da kullanılır düşüncesi ile kod yazmayın.
  • Sizden geliştirilmesi ya da yapılması gereken işin dışına çıkmayın.
  • İleriye yönelik iş yaptığınızda sizin için gecikme ve teknik borç anlamına gelir.
  • Sadece o ana odaklı problemi basit şekilde çözüm üretmeye yönelik kodlama yapın.
  • Kodları iyileştirme YAGNI için bir sorun teşkil etmez.
  • Kodlara yeni özellikler eklerken gerçekten ihtiyaç olup olmadığından emin olun.

Clean Code'a Giriş adlı yazımı da okumanızı tavsiye ederim.

Diğer Prensipler:

Clean Code: KISS Prensibi

Clean Code: DRY Prensibi

Kaynak:

https://martinfowler.com/bliki/Yagni.html

https://betterprogramming.pub/yagni-you-aint-gonna-need-it-f9a178cd8e1

Umarım faydalı olmuştur. İyi çalışmalar dilerim.

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

Clean Code: High Cohesion Low Coupling

17.05.2022 yasinsunmaz 1031 0

Clean Code içinde bahsedeceğimiz bir diğer konu ise "High Cohesion Low Coupling" yani "Yüksek Birliktelik ve Düşük Bağımlılık"'tır. &O...

Clean Code: İsimlendirmeler

27.04.2022 yasinsunmaz 691 0

Merhabalar Clean Code ile ilgili yazılarıma devam ederken biraz da örneklerin olduğu bir yazı yazmak istedim. İyi ve kötü örnekler üzerinden fark...

Clean Code: Least Astonishment Prensibi

21.04.2022 yasinsunmaz 573 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip Principle of Least Astonishment'dir. Principle of Least Astonishment En Az Şaşkınlık Prensibi olara...

Clean Code: DRY Prensibi

19.04.2022 yasinsunmaz 1107 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip DRY(Don’t Repeat Yourself)'dir. Bu prensib genel anlamda vurguladığı şey: Kendini tekrar...

Dapr Nedir? Dapr'a Giriş

14.12.2024 yasinsunmaz 204 0

Mikroservislerin Gizemi: Karmaşık Altyapı Sorunlarına Kolay Çözüm Günümüzde mikroservis tabanlı uygulamalar geliştirmek, teknolojik açıdan...

RedisConnectionException Hatası ve Çözümü: AbortOnConnectFail=false

31.07.2023 yasinsunmaz 1703 0

Redis, popüler bir açık kaynaklı veri yapısı sunucusudur ve günümüzde birçok uygulama tarafından kullanılmaktadır. Ancak, bu tür veri tabanla...

ASP.NET Core Web API'de Parametre Bağlama Yöntemleri: FromQuery, FromBody ve FromRoute

12.07.2023 yasinsunmaz 2209 0

ASP.NET Core web API projeleri, istemcilerden gelen verileri API metotlarıyla etkileşimde bulunmak için kullanılır. Bu verileri doğru bir şekilde almak ve işlemek içi...

Deployment Stratejileri (Blue Green, Rolling Update/Rollback) Nedir?

23.06.2023 yasinsunmaz 1621 0

Yazılım geliştirme sürecinde, uygulamaları güncellemek ve yeni sürümleri piyasaya sürmek önemli bir adımdır. Ancak, kullanıcıların kesintisiz hizmet a...

SonarQube Kurulumu: Adım Adım Kılavuz

18.06.2023 yasinsunmaz 2500 0

SonarQube, açık kaynaklı bir statik kod analizi platformudur ve geliştiricilere kod kalitesini, güvenliğini ve performansını iyileştirmeleri için yardımcı olur. ...

Active Directory LDAP İle Kullanıcı Kimlik Doğrulama .NET

05.12.2022 yasinsunmaz 3273 0

Active Directory LDAP ile kullanıcıyı belirli bir filtre üzerinde arama veya kullanıcının kimliğini doğrulama işlemleri yapabilmekteyiz. Bu LDAP protokolünde DirectorySer...

SOLID Yazılım Prensipleri

26.11.2022 yasinsunmaz 1023 0

SOLID prensipleri yazılım geliştirmede başlarda anlayıp uygulaması zor olsa da buna uyarak kod geliştirmenin faydasını zamanla görebilirsiniz. Yazdığınız kodlarda sonradan yap...

Regex, Regular Expressions Genel Kullanımı

03.08.2022 yasinsunmaz 2777 0

Bir çok yazılım dilinde bazı kontroller için Regex ifadeler ihtiyaç duyabiliyoruz. Bunların en başında e-posta, telefon ve web site geliyor. Bunların doğruluğu...

Visual Studio'da Aynı Anda Birden Çok Proje Çalıştırma

21.05.2022 yasinsunmaz 4449 0

Katmanlı mimari projelerimizde ya da bir web sitenin kullanıcı arayüzü ve admin dediğimiz yönetici ekranları aynı uygulama içerisinde geliştirebiliyoruz. Admi...