2

在经过 1000 次privates之后private,我想到可能不需要它

public class Outer {

    private static class Inner { // you may drop static
        private void innerMethod() {}
    }
}

是否有任何情况下private删除会innerMethod()影响封装(或使用,例如 Outer)?想想也反思
如果不是,建议放弃它还是保持它与 vis 编码风格保持一致?

我会说不然后放弃,但不确定。

编辑:刚刚意识到这样做的方式肯定是错误的 - 至少对于Inner's字段- 将这些字段声明为私有然后在外部类中使用它们 - 因为这会在字节码中生成(“合成”)访问器 - 这是最不臃肿。太好了 - 所以现在我更感兴趣的是对声明那些 (Inner的字段,使用的方法Outer) 包私有(或 @JBNizet 在评论中所说的公共)的安全影响有一个帐户

4

1 回答 1

5

答案取决于您当前如何使用内部类。

我对内部类的理念是减少重构的负担。我维护内部类的封装:内部类的private方法和字段不能从外部类访问,即使它们可以访问。因此,内部类的重点是将其范围缩小到仅包含类。这样,如果以后可以在其他地方重用内部类,则几乎不需要任何工作(非内部类的工作量很小static)就可以将其移动到自己的文件中。

以上是否是您的风格将影响以下删除或保留private周围方法/字段的原因。

掉线的原因private有:

  • 外部类可以访问内部类的私有成员和方法,这意味着这些字段/方法并没有真正封装
  • 少打字

反对放弃的理由private是:

  • 将内部类的方法private用作文档:外部类不应该使用这些方法
  • 如果private保留,则可以更轻松地将内部类提升到自己的文件中
  • 如果去掉了,内部类和内部类private有两种样式:更多供程序员思考publicprivate
  • 如果private被删除并创建了内部类public,那么所有有权访问外部文件的人都可以访问内部类的私有数据

鉴于上述风格,我认为反对下降的理由更强。

于 2013-07-21T13:40:43.707 回答