我得到了很多的警告在Eclipse这样的:为什么在Checkstyle中默认不允许保护变量?
变量“MYVARIABLE”必须是私有的,并有访问方法。
我想我得到它们是因为我没有在eclipse中手动将protectedAllowed设置为true。但为什么默认设置为false?我不应该使用受保护的属性吗?
我得到了很多的警告在Eclipse这样的:为什么在Checkstyle中默认不允许保护变量?
变量“MYVARIABLE”必须是私有的,并有访问方法。
我想我得到它们是因为我没有在eclipse中手动将protectedAllowed设置为true。但为什么默认设置为false?我不应该使用受保护的属性吗?
理论上,受保护的属性(变量)是面向对象语言中的反模式。如果只有子类需要访问其超类的成员属性,则将这些属性本身定义为私有,并创建受保护的访问方法(getter和setter)。这种方法应用了“信息隐藏”的概念。还有一种替代解决方案:定义受保护的不可变(最终)成员属性。
进一步阅读:
我想,让一切私人是一个反模式。通常类被用在一堆中,并且作为一个整体代表被封装的实体放置在单独的包中。他们不需要隐藏彼此的某些东西,但是这个规则强制隐藏没有很好的理由,越来越混乱,并有效地使风格变得更糟(据我所知)。同时,我们经常看到每隔包的类是公开的。我想这更糟糕,但checkstyle不检查。
封装不仅存在于课堂上,还有封装,系统等。我认为这些水平更重要。
允许访问包简化了包内的编程,并减少了样板代码。通常情况下,访问只需要在包内。私有访问迫使您创建大量几乎无用的访问方法。这实际上具有减少封装和信息隐藏的作用,因为类必须通过公共访问器方法暴露内部数据/结构应用程序范围,而不是仅仅打包范围。默认的软件包可见性也使得测试更容易,因为测试类也位于相同的软件包中(在测试目录/树中)。
“正式”?? –
@Oli Charlesworth:好吧,'正式'可能不是正确的名词,如果我说'理论上',你会同意吗? – home