代码之家  ›  专栏  ›  技术社区  ›  looksgoodhoss

创建自定义注释以表明方法只是帮助提高可读性,是否值得?

  •  0
  • looksgoodhoss  · 技术社区  · 8 年前

    目前正在使用Spring,我一直在学习可以用来帮助提高代码可读性的方法,其中一个例子是用易于理解的方法调用替换复杂的条件。例如:

    private void myMethod(){
        //Bad
        if(userAge < MIN_AGE){
            //logic
        }
    
        //Good
        if(userTooYoung()){
            //logic
        }
    }
    
    private boolean userTooYoung(){
        return userAge < MIN_AGE;
    }
    

    我的问题是:创建一个自定义注释来显示userTooYoung只是为了提高可读性,这值得吗?例如:

    @Assistant
    private boolean userTooYoung(){
        return userAge < MIN_AGE;
    }
    

    我真的想不出@Assistant注释还能提供什么功能,因此,它提出了一个问题:它真的值得吗?

    编辑: 我一直在考虑@Assistant注释的想法,并得出以下结论:

    定义:

    @Retention(RetentionPolicy.SOURCE)
    @Target(ElementType.METHOD)
    public @interface Assistant {
    
        enum With {
            CONDITIONAL_LOGIC, CONSTRUCTION_LOGIC
        }
    
        With help() default With.CONDITIONAL_LOGIC;
    }
    

    用法:

    @Assistant(help = Assistant.With.CONDITIONAL_LOGIC)
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Steve11235    8 年前

    你在征求意见。在某种程度上,我同意佐拉克普的观点;名称模糊的批注太多 减少 可读性。同时,如果您需要在许多地方标记您所做的事情,而您正在做的事情并不明显,那么仅用于可读性的自定义注释确实有意义。例如,Google Guava提供了@VisibleForTesting注释。当应该是私有方法的内容被设置为默认范围以便可以进行单元测试时,使用它。当客户机需要进行彻底的单元测试时,我经常使用它。

    就你的情况而言,这并没有增加任何清晰度,这个名字也没有什么意义。

        2
  •  0
  •   Arne Burmeister    8 年前

    tl;博士 不是所有你能做的都应该做

    我绝对不认为这样做是值得的,老实说,你不应该这样做:

    • 从干净的代码角度来看,您会添加更多的混乱,而不需要任何额外的信息。
    • 这里的评论有什么不同,你会写评论吗?不
    • 大多数情况下,任何私有方法都只是为了提高可读性,这很好。为什么需要以显式方式添加此隐式信息?