Sayfalar

29 Mayıs 2014 Perşembe

YAGNI - Gelecekte buna ihtiyaç duymayacaksın...

Çevik (Agile) yazılım metodolojileri arasındaki Extreme Programming (XP) yazılım geliştirme metodolojisi müşteriler (kullanıcılar) ile birlikte onların isteklerini hızlıca karşılamak için düşünülmüş ve tasarlanmıştır. Bu yaklaşımda isteklere odaklı geliştirme yapmak esastır. Hatta uygulamalar bile başlangıçta sadece istekleri karşılayacak şekilde yazılmaya başlanır.

Tabi bu yazılımı mimarisinin pek etkilememekte, implementasyonları daha çok ilgilendirmekte. Yani ille de hızlıca yapacağım derken sadece istekleri karşılayacak bir uygulama geliştirmek elbette ileride genişletilebilirliği etkileyecektir. Bir mimarisi olmayan yazılım tamamen implementasyon çöplüğüne dönecektir.

İşlevsel bir soyut mimari ile uygulamamızın altyapısını hazırlayabilmişsek, sıra bu soyut yapıyı somutlaştırmaya gelir. Yani implementasyonları yazmaya başlarız. Bu noktada bu yaklaşımları tasarlayan bilge kişiler tarafından bazı doktrinler yayınlamışlardır. Bunlardan biri "You Ain't Gotta Need It" kelimelerinin baş harflerinden oluşan YAGNI'dir. Türkçesi "ileride buna ihtiyaç duymayacaksın" dır. Burada bizden fütüristik bakış açısıyle ileride lazım olacağını öngördüğümüz ama henüz lazım olmayan implementasyonları kesinlikle yapmamamızı öneriyor. Çünkü:
  • Senin fikirlerin takip edilemez, kodu yazarken sınfın ileride ne yapması gerektiğini düşünürsün, kesinlikle ne yapması gerektiğini değil.
  • Zamanın kıymetlidir. Kodunla boş zaman geçireceğine asıl yapman gereken işi yapmalısın.
  • Yazdıktan sonra bunların tamamını kullanmayacaksın, bu implementasyonu yapmak için harcadığın zaman çöpe gitmiş olacak, bunu okuyan herkesin de zamanı boşa bitmiş olacak, bu kodlar boşuna uzayda yer tutacak.
Kodunda bir instance üzerindeki değişkenlerde ihtiyacın olan bir getter varsa bunu yaz ama setter yazma, çünkü henüz ihtiyacın olmayacak, bununla ilgili bir bilgi gelmedi. Aynı zamanda diğer değişkenlerdeki getter ları da yazma, çünkü onlara da ihtiyacın olmayacak.

Hızlı kod implementasyonu yapmak için en iyi yol ihtiyacın kadarını implement etmek. En az bug ile kod yazmak için en iyi yol da en az implementasyonu yapmak.

You’re not gonna need it!

Hiç yorum yok:

Yorum Gönder