Bu yazımda yazılım prensiplerinin öneminden ve prensiplerden kısaca bahsedeceğim.
Geliştirilen çoğu yazılımın gün geçtikçe kod baseleri büyümeye başlar. Her ne kadar yazılımları geliştirmeden önce planlasak, şematik düzende tasarlasak ve üzerlerine çokça düşünsekte, bu büyüme kontrol edilmezse yapılar karmaşıklaşır ve kontrolden çıkar. Aynı zamanda bu karmaşa gün geçtikçe yazılımın sürdürülebilirliğinin azalmasına ve performans problemlerine sebep olur. Bu yüzden ipleri hiç bir zaman elden bırakmamak gereklidir. Yaptığımız her geliştirmeyi titizlikle bu prensiplere uygun şekilde yapmak, daha sonra bu geliştirmeye dönüp baktığımızda rahatlıkla anlayabilmemize ve müdahale edebilmemize olanak sağlar.
Ekip halinde çalışma durumlarında bu prensipler daha da önem kazanır. Bir kişinin geliştirdiği yapıyı başka bir zamanda başka bir kişinin ele alması gerekebilir. Bu noktada güncel olarak bu yapıyı kontrol eden kişinin yine güncellemelerin, geliştirmelerini bu prensiblere uygun bir şekilde geliştirmesi çok önemlidir. Böylelikle güncel olarak yapıyı ele alan kişelerin ve önceden yapıyı bir noktaya getirmiş kişilerin, zaman kazanmaları ve odaklarının bozulmamasını sağlamış olur. Bu noktada yazılım kim tarafından ne zaman yapıldığı önemini yitirir ve herkese açık bir şekilde anlaşılır ve geliştirilebilir olur.
Bu prensiplerden en önemlileri ise şunlardır;
1. KISS
“Keep it simple stupid!”
Ya da “Keep it small and simply” kısaltması olarak karşımıza çıkan bu prensip temel olarak bir işin olabildiğince basite indirgenerek yapılması gerektiğini söyleyen bir prensiptir. Basitlikten kasıt kolaylık değildir, olabildiğince anlaşılır ve basit bir şekilde ihtiyaçların giderilmesi gerekmektedir.
2. DRY
“Dont Repeat Yourself!”
Bu prensip genel olarak ihtiyaç duyduğumuz şeyleri sürekli oluşturup kullanmak yerine tek düze indirgeyip ihtiyaç halinde çağırmamızı, kullanmamızı gerektiren bir prensiptir.
3. YAGNI
“You aren’t gonna need it!”
Yapmakta olduğun şeye gerçekten ihtiyaç duyduyorsan yap. Bu prensip yazılım geliştirilirken ihtiyaç duyduğumuz şeylerin dışında “yarın buna ihtiyaç duyulabilir” şeklinde varsaysımsal geliştirmelerden kaçımamızı söyleyen prensiptir. Bu prensip yazılım geliştirirken “overthinking” probleminede çözüm sağlayabilir.
4. SOLID
“Simple Responsibility, Open-Closed, Liskov Subtitution, Interface Sugregation, Dependency Inversion”
Başlı başına konuşulması gereken çoklu prensipler grubudur. Bu prensipleri ayrı bir sayfada detaylıca okuyabilirsiniz.