您是否在Java中使用默认(包)可见性?

java中的默认可见性意味着只有同一java包中的其他类才能访问它。 我当然看到它的使用,并在几个场合使用过它。

另一方面,我遇到的默认可见性的90%仅来自忘记添加任何可见性关键字的开发人员。

所以,一方面,有合法用途,另一方面,它经常掩盖坏代码。 您在开发团队中做了什么?

我通常会尝试让所有人从最有限的范围开始,只有在我们看到设计中有必要时才开始向外扩展。 有时,我们需要编写测试而不必沿着使用模拟框架的路线(参见Powermock )来推动从private迁移到private package-private的决定。

除此之外,我们在可变性上遵循相同的心态。 一切都从final开始,只有当我们看到需要修改状态时,我们才会删除它。

如果我特别想要包访问,我将/ * package * /放在方法/变量等的定义之前,以确保人们知道我实际意味着,并且不是懒惰。 我很少使用它。

我鼓励人们使用private ,我更倾向于默认。

我不时地编写代码分析,将访问修饰符简化为只需要的东西。