首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

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

  •  
  •   sandman511 · 49 天前 · 2085 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    public static String BRACKET_LEFT_EN = "(";`

    public static String BRACKET_LEFT_CN = "(";`

    public static String SLASH = "/";`

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

    9 回复  |  直到 2019-10-28 13:43:38 +08:00
        1
    lihongjie0209   49 天前
    enum?
        2
    gam2046   49 天前
    这种看看就好了。阿里自己的开源项目,用阿里的代码规范去套,都套不进去。
        3
    passerbytiny   49 天前
    是。

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

    抽常量是为了便于修改或者用变量名说明含义
    把一个括号抽个常量起名叫”括号“没有任何意义
        6
    amon   49 天前
    这叫脱裤子放屁。。。
        7
    wysnylc   49 天前
    阿里规范只是建议而已,他自己都不太遵守的....有些旁枝末节确实不用管
        8
    saltedFish666   49 天前
    用的频繁的就加了,一般的就算了,无视,人家只是建议
        9
    siteshen   49 天前
    用常量能方便搜索,更容易理清逻辑。但如果只有一个地方使用且语义足够清晰,就没必要用了。
    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
    }
    }
    }
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2657 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 14:04 · PVG 22:04 · LAX 06:04 · JFK 09:04
    ♥ Do have faith in what you're doing.