开了阿里的而代码规范检测,一旦出现魔法值就会有下划线,求助大家给强迫症提供一个解决方案
1
lihongjie0209 2019-10-28 09:52:07 +08:00
enum?
|
2
gam2046 2019-10-28 09:57:43 +08:00
这种看看就好了。阿里自己的开源项目,用阿里的代码规范去套,都套不进去。
|
3
passerbytiny 2019-10-28 10:20:02 +08:00
是。
你上边列的这些,加上绝大部分"string",以及表示 0、1 (而不是假真)的 0、1,这些都是所见即所得的 literal,并不是魔法值。但谁让中国人特别喜欢干矫枉过正的事呢。 |
4
xuanbg 2019-10-28 11:43:20 +08:00
关掉魔法值的检查就好了
|
5
chendy 2019-10-28 11:53:55 +08:00
是
抽常量是为了便于修改或者用变量名说明含义 把一个括号抽个常量起名叫”括号“没有任何意义 |
6
amon 2019-10-28 12:07:39 +08:00
这叫脱裤子放屁。。。
|
7
wysnylc 2019-10-28 12:37:02 +08:00
阿里规范只是建议而已,他自己都不太遵守的....有些旁枝末节确实不用管
|
8
saltedFish666 2019-10-28 13:25:37 +08:00
用的频繁的就加了,一般的就算了,无视,人家只是建议
|
9
siteshen 2019-10-28 13:43:38 +08:00
用常量能方便搜索,更容易理清逻辑。但如果只有一个地方使用且语义足够清晰,就没必要用了。
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 } } } |