Hiçbir zaman nesne yönelimli programlama savunucusu olmadım ve daha az büyüdüğüm bir şey olursa, genel olarak programlama hakkında daha fazla şey öğrendim. Farklı programlama paradigmaları üzerinde çalıştığım için, değişmezliğin program tasarımının temel kavramlarından biri olduğunu ve herhangi bir felsefeye göre yazılmış yazılımı etkilediğini anladım . Fonksiyonel programlamada optimizasyon ve eşzamanlılık gibi basit güvenlik garantilerinin üstüne çıkması çok önemlidir.
Temel olarak, değişken durum için iyi bir nedeniniz olmadıkça, değiştirilemez olan her şey muhtemelen olmalıdır . Tecrübelerime göre, bu amaç doğrultusunda herhangi bir dilde programlar yazmak daha güvenli ve daha iyi kodlara yol açmaktadır . Uygun olan const
yerlerde kaybedecek hiçbir şeyiniz yok - değişmezlik ücretsiz!
(Bu arada, her türlü const
açıkça nitelendirilmediği sürece , C ++ lehçesi için bir GCC çatalı oluşturma fikri ile oynamıştım mutable
. Bu tür bir şeye destek varsa, onu korumayı ve kullanmayı tamamen taahhüt edeceğim.)
Bir OO açısından, değişmezlik sınırsız yazma erişimini önleyerek enkapsülasyonu zorlar. Sınıflar arasındaki eşleşmeyi azaltır, çünkü değişmez nesneler kendi durumlarını tamamen yönetmeli ve dolayısıyla sıradan değerler gibi davranmalıdır. Const doğruluğu, özellikle eşzamanlı programlama bağlamında program doğruluğunu kanıtlama sürecini önemli ölçüde kolaylaştırır. C ++ referansı ve C ++ 0x değer referans referansı anlamıyla, değiştirilemeyen nesneleri, her yere kopyalamanın ek yükü hakkında endişelenmeden yararlanabilirsiniz. Ayrıca, çoğunlukla değişmez nesnelerle çalışıyorsanız, derleyici oldukça şaşırtıcı bir optimizasyon sihri oluşturabilir.
Her const
yere yazmanın berbat olduğunu biliyorum , ancak buna hızla alışıyorsunuz ve faydalar güvenilirlik ve bakım açısından zamanla ortaya çıkıyor. Parlak bir yazar değilim ve bunun için bir dava açmak için kanıtlanmış zor bir görev gibi görünüyor, ancak programların düzenlenmesi ve uygulanmasında bence doğrulığın geliştirici olarak benim için son derece yararlı olduğunu biliyorum. Bu konuda en iyi öğretmen.