Bana göre stabilite oranı (betonda çimentolu, fırında pişmiş, taşa konmuş, kalıcı mürekkeple yazılmış). Kodunuz ne kadar kararsız olursa, gelecekte onu değiştirmeniz gerekme olasılığı ne kadar yüksek olursa, üretken kalabilmek için ıslak kil gibi olması o kadar kolay bir şekilde bükülebilir olmalıdır. Ayrıca esnekliği ve okunabilirliği vurgulamıyorum. Bana göre kod değiştirme kolaylığı, okuma kolaylığından daha önemli. Kod okunması kolay ve değiştirilebilecek bir kabus olabilir ve eğer değişecek bir kabussa, uygulama ayrıntılarını ne şekilde okuyabilir ve kolayca anlayabilir? Bu sadece akademik bir alıştırma olmadıkça, tipik olarak bir üretim kod tabanında kodları kolayca anlayabilmenin amacı, gerektiğinde daha kolay bir şekilde değiştirebilme niyetindedir. Değiştirilmesi zorsa, sonra okunabilirliğin faydalarının birçoğu pencereden dışarıya çıkıyor. Okunabilirlik sadece esneklik bağlamında faydalıdır ve esneklik sadece kararsızlık bağlamında yararlıdır.
Doğal olarak, okunması ne kadar kolay ya da zor olursa olsun, akla gelebilecek bir kodu bulundurmak zor olsa bile, değiştirmesi için hiçbir neden yoksa, yalnızca onu kullanmayın. Ve böyle bir kaliteye ulaşmak, özellikle performansın çoğu zaman saymaya meyilli olduğu düşük seviyeli sistem kodu için mümkündür. Hala 80'lerin sonlarından beri değişmeyen düzenli olarak kullandığım C kodum var. O zamandan beri değişmesi gerekmedi. Kod titiz, biraz garip günlerde yazılmış ve ben zar zor anlıyorum. Yine de bugün hala uygulanabilir ve uygulamadan bol miktarda faydalanabilmek için anlamam gerekmiyor.
İyice testleri yazmak istikrarı artırmanın bir yoludur. Bir diğeri dekuplajdır. Eğer kodunuz başka bir şeye bağlı değilse, değişmesi için tek nedeni değişmesi gerekip gerekmediğidir. Bazen, az miktarda kod çoğaltması, kararlılığı önemli ölçüde iyileştirmeye yarayan bir takas mekanizması olarak işlev görebilir; bu durumda, karşılığında, şu anda tamamen başka bir şeyden bağımsız olan bir kod alırsanız. Şimdi bu kod dış dünyadaki değişikliklere karşı hassastır. Bu arada, 10 farklı dış kütüphaneye bağlı olan kod, gelecekte değişmesi için 10 kat daha fazla nedene sahiptir.
Pratikte bir başka yararlı şey, kütüphanenizi kod tabanınızın dengesiz parçalarından ayırmak, hatta üçüncü şahıs kütüphaneleri için yapabileceğiniz gibi muhtemelen ayrı ayrı inşa etmektir. takım). Sadece bu tür bir organizasyon, insanların buna müdahale etmesini önleyebilir.
Bir diğeri minimalizmdir. Kodunuz ne kadar az şey yapmaya çalışırsa, ne yaptığını da o kadar iyi yapabilir. Monolitik tasarımlar neredeyse kalıcı bir şekilde dengesizdir, çünkü onlara ne kadar fazla işlev eklenirse, o kadar eksik görünürler.
Mikro ayarlı paralelleştirilmiş SIMD kodu gibi, kaçınılmaz olarak değiştirilmesi zor olan bir kod yazmayı hedeflediğinizde kararlılık birincil hedefiniz olmalıdır. Kodu değiştirme zorunluluğunu ortadan kaldırarak kodu değiştirmek zorunda kalmayacağınız olasılığını en üst düzeye çıkarırsınız ve bu nedenle gelecekte de sürdürmek zorunda kalmazsınız. Bu, kodun bakımı ne kadar zor olursa olsun bakım maliyetlerini sıfıra indirir.