【问题标题】:How to make a Java class implementing multiple interfaces easier to read如何使实现多个接口的 Java 类更易于阅读
【发布时间】:2014-01-27 18:02:08
【问题描述】:

例如,在下面的代码中,A 实现了接口 I1、I2、... In,并覆盖了它们的方法。但是我在 A 中发现,它有点难以阅读,并且无法理解哪些方法来自哪些接口。有没有更好的方法让代码更容易阅读?

class A implements I1, I2, ..., In {

   @Override
   void methoda_in_I1() ...

   @Override
   void methodb_in_I1() ...

   @Override
   void methoda_in_I2() ...

   @Override
   void methodb_in_I2() ...

   ...

   @Override
   void methoda_in_In() ...

   @Override
   void methodb_in_In() ...

}

【问题讨论】:

  • 如果您正在创建自己的界面,您可以将 InetrfaceName 与方法一起使用。但是如果你使用 bulin 那么你需要面对这个问题,因为我认为整个架构不会因为这个问题而改变,cmets 在这里,用它们来表示方法的 inetrface 名称。
  • @JoeC 我认为没有办法。
  • @JoeC 你可以使用超类的javadoc。
  • 为什么需要知道哪个方法来自哪个接口?如果两个接口有一个签名相同的方法怎么办?如果只是出于导航原因,那么任何现代 IDE 都将提供一种链接到方法的超级方法的方法。例如,Netbeans 将在编辑器右侧带有 @Override 的行旁边显示一个图标,看起来像一个带有“I”的圆圈

标签: java coding-style multiple-inheritance


【解决方案1】:

不要按接口对方法进行分组,而是使用一种简单的排序技术:字母表。

我的意思是,按字母顺序列出类中的方法。

以英语为母语的人理解字母表,而字母表是以英语为母语的人的“自然”排序顺序。下面是一个示例:更容易理解,根据地址列出人员的电话簿或按姓名字母顺序列出人员的电话簿。

如果您使用的是 eclipse,请单击方法名称并按 alt + shift + J 以获得自动注释,该注释将引用被覆盖的接口(或基类)方法。

【讨论】:

    【解决方案2】:

    没有真正简单的方法来处理这个问题。我能想到的最好的方法是使用 cmets 来识别您要覆盖的接口,如下所示:

    @Override//Interface A
    public void methodFromA() {
        ...
    }
    
    @Override//Interface B
    public void methodFromB() {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多