• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sandman511
V2EX  ›  程序员

关于魔法值 这样的行为是否多此一举

  •  
  •   sandman511 · Oct 28, 2019 · 3913 views
    This topic created in 2473 days ago, the information mentioned may be changed or developed.

    public static String BRACKET_LEFT_EN = "(";`

    public static String BRACKET_LEFT_CN = "(";`

    public static String SLASH = "/";`

    开了阿里的而代码规范检测,一旦出现魔法值就会有下划线,求助大家给强迫症提供一个解决方案

    9 replies    2019-10-28 13:43:38 +08:00
    lihongjie0209
        1
    lihongjie0209  
       Oct 28, 2019
    enum?
    ntdll
        2
    ntdll  
       Oct 28, 2019
    这种看看就好了。阿里自己的开源项目,用阿里的代码规范去套,都套不进去。
    passerbytiny
        3
    passerbytiny  
       Oct 28, 2019
    是。

    你上边列的这些,加上绝大部分"string",以及表示 0、1 (而不是假真)的 0、1,这些都是所见即所得的 literal,并不是魔法值。但谁让中国人特别喜欢干矫枉过正的事呢。
    xuanbg
        4
    xuanbg  
       Oct 28, 2019
    关掉魔法值的检查就好了
    chendy
        5
    chendy  
       Oct 28, 2019

    抽常量是为了便于修改或者用变量名说明含义
    把一个括号抽个常量起名叫”括号“没有任何意义
    amon
        6
    amon  
       Oct 28, 2019
    这叫脱裤子放屁。。。
    wysnylc
        7
    wysnylc  
       Oct 28, 2019
    阿里规范只是建议而已,他自己都不太遵守的....有些旁枝末节确实不用管
    saltedFish666
        8
    saltedFish666  
       Oct 28, 2019
    用的频繁的就加了,一般的就算了,无视,人家只是建议
    siteshen
        9
    siteshen  
       Oct 28, 2019
    用常量能方便搜索,更容易理清逻辑。但如果只有一个地方使用且语义足够清晰,就没必要用了。
    ps:你定义的常量缺少了 final。记得阿里规范是有常量说嘛的,也许加上 final 就和阿里的规范不冲突了?

    // ok,已封装成函数,只有这一处使用 literal string。
    bool isLeftBracket(String s) {
    return s == "(" || s == "(";
    }

    // 只有此处使用,冗余的常量
    bool isLeftBracket(String s) {
    final String BRACKET_LEFT_EN = "(";
    final String BRACKET_LEFT_CN = "(";
    return s == BRACKET_LEFT_EN || s = BRACKET_LEFT_CN;
    }

    // ok,多处引用,用常量方便搜索
    class Parser {
    public static final String BRACKET_LEFT_EN = "(";
    parseList(String s) {
    if (s.startsWith(BRACKET_LEFT_EN && someCondition) {
    // more code
    }
    }

    parseArray(String s) {
    if (s.startsWith(BRACKET_LEFT_EN && otherCondition) {
    // more code
    }
    }
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3535 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 04:51 · PVG 12:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.