YAGNI (You ain’t gonna need it)
Yagni, XP(Extreme Programming) in konularından biridir. Bu prensip, sistemde sadece ihtiyaç olan şeyin yapılmasını söyler. Şu an ihtiyacımız olmayan bir şeyin, ileride ihtiyaç olabileceği düşünülerek şimdiden hazırlanmaması gerektiğini belirtir. Çünkü varsayımda bulunduğumuz şey için iki olasılık vardır: ya ileride gerekli olmayacaktır ya da bizim düşündüğümüzden daha farklı bir istek olarak karşımıza çıkacaktır. Bu da, hem şu an için hemde daha sonrası için zaman ve emek kaybıdır. Ayrıca bu şekilde bir yaklaşım, KISS(Keep it simle, stupid) prensibine de ters düşmektedir.
KISS bize, yaptığın şeyi en basit haliyle yap diyordu. Oysa biz kendi varsayımlarımıza göre sisteme işlevsellik katarak, sistemi basitlikten uzaklaştırıp karmaşık bir sisteme çeviriyoruz. Birde öngördüğümüz şeyin bizim düşündüğümüzden farklı bir şekilde istenildiğini düşünürsek? Yazdığımız kodu tekrardan yazacağız, bir çok yerini değiştireceğiz. Uğraş dur.
Tabi burada şöyle birşey de akla gelmemelidir. Şu an böyle birşey istenmiyor. Kodu yaz geç. Kodumuzu yazarken ileride olabilecek değişiklere karşı esnek tasarlamalıyız. Çünkü esnek bir yapı kurmazsak yine ilerideki bir istekte bir dünya kod yazmamız gerecektir. Bu yüzden sistemi olabildiğince esnek, değişikliklerden az etkilenecek şekilde tasarlamalı; ama sadece şu an bizden istenilen şeyin kodlamasını yapmalıyız. İlerideki bir değişiklik durumda esnek yapımız sayesinde isteği rahat bir şekilde sisteme entegre edebiliriz.
Yagni prensibini uygulamak bizim kazancımıza olacaktır:
- İhtiyacımız olmayan kodu yazmadığımız için zamandan kazanırız.
- Kendi tahminlerimize göre yazacağımız kodun önlemesi sayesinde daha iyi, basit, doğru çalışan kod üretmiş oluruz.
Yagni prensibide aynı KISS gibi soyut bir kavram olarak karşı çıkmakta. Anlaşılmaları oldukça basit. Uygulanmalarının ise bir o kadar zor olduğuda ortada.
See you next time.
Kaynak: http://saordekci.wordpress.com/2012/12/27/yagni-you-aint-gonna-need-it/