Jak*_*rka 2 java access-modifiers
我的意思是,如果我在Java中声明任何访问修饰符,那么修饰符可以被规避(包私有和受保护 - 包注入;任何 - 反射).我知道声明这些东西有助于理解和组织代码,但除此之外,是否有任何技术原因或固有的Java功能?
谢谢你们的精彩回应.我很遗憾我只能标记一个答案.
是的,他们可以被规避.你指出的依赖注入的例子实际上是一个有用的规避案例.向私有成员注入不会污染接口,并且在运行时不容易混淆.然而,要想看到核心利益,可以把它想象成一个软件架构师,主持一个非常懒惰或缺乏经验的团队.
请记住,精心设计的物体应具有高内聚力和松散耦合.高凝聚力意味着一个对象处理它在语义上要处理的问题,仅此而已.松散耦合意味着对象依赖于接口而不是特定的实现.请记住,这样做的好处是它使您的代码更易于阅读,理解,测试和更改.这降低了成本,并且通常使利益相关者满意.作为一名建筑师,这就是你所关心的.假设的懒惰/缺乏经验的团队只关心立即完成队列中的任何任务,即使以牺牲质量和未来的生产力为代价.
访问修饰符显示为对象定义的接口背后的一些意图.通常,如果您编写的代码很好,那么您几乎总是只需要公共和私有修饰符.在极少数情况下,关注点不能轻易/明确地分成单个内聚对象,还有"受保护"关键字允许从对象进行有限的外部访问,这些对象应该在逻辑上共享相关问题.
表达接口背后的意图的更好但有说服率的方法是按合同设计,它使用更强大的接口注释集,以允许预处理工具强制执行接口规则.
编译器执行访问修饰符非常棒.编译器为那些本来很乐意降低内聚力和增加代码库耦合以便更快地完成他们的即时任务的人提供了一个相当不便的障碍.
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |