Şey, bu başlıkta gördüğüm şeyler harika, ama işte benim için çok faydalı olan bir 'değişmez' tanımım var.
Değişmeyen, programınızın yürütülmesi sırasında bir insana iletilebilecek, ancak derleyicinize iletilemeyen uyulması gereken herhangi bir mantıksal kuraldır.
Bu tanım yararlıdır, çünkü koşulları iki gruba ayırır: derleyicinin zorlamada güvenilir olabileceği ve kodbase ile hata yapmadan etkileşime girmeleri için katkıda bulunanlara belgelenmesi, tartışılması, yorumlanması veya başka şekilde iletilmesi gerekenler. .
Ayrıca, bu tanım faydalıdır, çünkü "Değişmezler Kötü" genellemesini kullanmanıza izin verir.
Örnek olarak, manuel şanzımanlı arabadaki vites değişmeyenleri önlemek için tasarlanmıştır. İstesem, her vites için bir kol ile bir şanzıman yapabilirdim. Bu kol ileri ("devrede") veya geri ("serbest bırakılmış") olabilir. Böyle bir sistemde şöyle belgelenebilecek bir “değişmez” yarattım:
"Farklı bir vitese takılmadan önce mevcut vitese takılmaması çok önemlidir. Aynı anda iki vitese de takmak, şanzımanı parçalayacak mekanik gerilmelere neden olacaktır.
Ve böylece, özensiz sürüş yüzünden kırılan yayınları suçlayabilir. Ancak modern otomobillerde, viteslerin arasında dönen tek bir çubuk kullanılır. Modern bir vites değiştirme otomobili üzerinde, aynı anda iki vitese geçmek mümkün olmayacak şekilde tasarlanmıştır.
Bu şekilde, iletimin 'değişmezi kaldırmak' için tasarlandığını söyleyebiliriz, çünkü kendisinin mantıksal kuralı ihlal edecek şekilde mekanik olarak yapılandırılmasına izin vermez.
Kodunuzdan çıkardığınız her çeşit değişmez bir gelişmedir, çünkü onunla çalışmanın bilişsel yükünü azaltır.