Bir özellik ayarlayıcı hemen hemen her durumda yan etkilere sahip olacağından , salt okunur özellikler veya en azından özellik alıcıları hakkında konuştuğunuzu varsayıyorum . Aksi takdirde çok kullanışlı değil.
Genel olarak, iyi bir tasarım en az sürpriz ilkesini takip eder . Arayanların sizden beklemediği şeyleri yapmayın, özellikle bu şeyler gelecekteki sonuçları değiştirebilirse .
Genel olarak , mülk sahiplerinin yan etkileri olmamalıdır.
Ancak , "yan etki" ile neyi kastettiğimize dikkat edelim .
Bir yan etki , teknik olarak herhangi bir durum değişikliğidir. Bu kamuya açık bir devlet olabilir ya da ... tamamen özel bir devlet olabilir.
Tembel / ertelenmiş yükleyiciler, neredeyse tamamen özel olan bir durum örneğidir. Sürece o zaman gerçekten, yani kaynak boşaltmak için arayanın sorumluluğu olmasın da azaltarak ertelenmiş başlatma kullanarak genel olarak sürpriz ve karmaşıklığını. Arayan kişi normal olarak bir iç yapının başlatılmasını açıkça belirtmek zorunda değildir . Yani, tembel başlatma yok değil yukarıdaki ilkeyi ihlal ediyor.
Başka bir örnek, senkronize edilmiş bir özelliktir. Bir yöntemin iş parçacığı açısından güvenli olması için, genellikle kritik bölüm veya muteks tarafından korunması gerekir. Önemli bir bölümü girme veya muteksi elde olan bir yan etkisi; durumu değiştiriyorsunuz, genellikle küresel durumu. Bununla birlikte, bu yan etki, çok daha kötü bir sürprizi - başka bir iş parçacığı tarafından değiştirilen (veya daha kötü, kısmen değiştirilen) sürprizi önlemek için gereklidir .
Bu yüzden kısıtlamayı biraz aşağıdaki gibi gevşetirim: Özellik okumalarının semantiklerini değiştiren görünür yan etkileri veya yan etkileri olmamalıdır .
Arayan kişinin herhangi bir yan etkiden etkilenmesinin veya hatta yan etkinin farkında olmasının olası bir yolu yoksa, bu yan etki herhangi bir zarar vermez. Belirli bir yan etkinin varlığını doğrulamak için bir test yazmanız imkansızsa, özel bir uygulama detayı olarak etiketlenecek kadar yerelleştirilmiştir ve bu nedenle dış dünya için meşru bir endişe yoktur.
Ancak dikkatli olun; Pratik bir kural olarak, sen gerektiğini sıklıkla özel uygulama detay beklenmedik sızıntı ve kamu olabilir olmak ne düşünürseniz düşünün, çünkü yan etkilerinden kaçınmak için deneyin.