Diğerleri tarafından belirtildiği gibi, özel değişkenler nesneyi tutarsız bir duruma götüren yanlış kullanımlardan kaçınmakta ve hataları ve öngörülemeyen istisnaları izlemekte güçlük çekmektedir.
Ancak öte yandan, diğerleri tarafından en çok göz ardı edilen şey korunan alanlarla ilgilidir.
Genişletilmiş bir alt sınıf, nesneyi bu tür alanların halka açık olduğu kadar kırılgan hale getirerek korunan alanlara tam erişime sahip olacaktır, ancak bu kırılganlık kendi kendini genişleten sınıfla sınırlıdır (bu alanları daha fazla göstermediği sürece).
Bu nedenle, genel alanların iyi olarak kabul edilmesi zordur ve bugüne kadar bunları kullanmanın tek nedeni yapılandırma parametresi olarak kullanılan sınıflar içindir (birçok alana sahip ve mantığı olmayan çok basit bir sınıf, böylece sınıf tek başına bir parametre olarak geçirilir). bazı yöntem).
Ancak diğer taraftan, özel alanlar, kodunuzun esnekliğini diğer kullanıcılara da düşürür.
Esneklik vs Sorunlar, artılar ve eksiler:
Vanilya sınıfındaki, korumalı alanlara sahip kodunuzla somutlaştırılan nesneler güvenlidir ve sizin sorumluluğunuzdadır.
Öte yandan, sınıfınızı, kod kullanıcıları tarafından başlatılan korumalı alanlarla genişleten nesneler sizin sorumluluğunuzdadır, sizin sorumluluğunuzdadır.
Bu nedenle, iyi belgelenmemiş korunan alanlar / yöntemler veya kullanıcılar bu tür alanların ve yöntemlerin nasıl kullanılması gerektiğini gerçekten anlamıyorlarsa, kendileri ve size gereksiz yere sorun yaşamaları için iyi bir şansa sahipler.
Öte yandan, çoğu şeyi özel yapmak, kullanıcıların esnekliğini azaltacaktır ve sadece bir şeyler yapmak için bir çatal oluşturmak ve muhafaza etmek istemeyebileceği için, korunmuş alternatifler aramaya bile devam edebilir.
Yani, özel, korunan ve halk arasında iyi bir denge gerçekten önemli olan.
Şimdi, özel ve korunan arasında karar vermek asıl sorun.
Korumalı ne zaman kullanılmalı?
Bir alanı ne zaman anlarsanız çok esnek olabilir, korunan olarak kodlanmalıdır. Bu esneklik: sıfır olmaktan (null'un her zaman istisnalar atmamak için geçerli bir durum olduğu kontrol edilir ve kabul edilir) sınıftan önce kullanılmadan önce kısıtlamalara sahip olmaktır. > = 0, <100 vb. Ve aşırı debi değerleri için otomatik olarak sabitlenir, en fazla bir uyarı mesajı atar.
Bu nedenle, böyle bir korumalı alan için bir alıcı oluşturabilir ve yalnızca onu (alan değişkenini kullanmak yerine) kullanmak yerine kullanabilirsiniz, diğer kullanıcılar kendi kodlarına göre daha fazla esneklik istemeleri durumunda kullanamazlar. : negatif değerlerin genişletilmiş sınıflarında iyi çalışmasını istiyorlarsa.