SonarQube Java 分析器,规则 S2183,我为什么要删除这个无用的移位?
SonarQube Java Analyser, rule S2183, why should I remove this useless shift?
我写了:
public static final int MY_GREAT_COLOR = (91 << 16) + (155 << 8) + 213 + (255 << 32);
声纳说:
New: Squid:S2183 Severity: CRITICAL, Message: Remove this useless shift
谁能告诉我为什么?这是否只是不应该对文字进行计算的事实,即使它增加了可读性?
255 << 32
溢出 Java(32 位)int
,变为零。
你想要 long
和 255L << 32
吗?
我猜 255 是你的 alpha 通道,在那种情况下我猜你想要 255 << 24
。
SonarQube 不知道您的意图,但正如 Toby 所说,它有一个正确的观点。
至于可读性,你也可以试试六边形代码(例如0xFF5B9BD5
),很多开发者已经习惯了。当然,十进制数将完全不可读且难看。
我写了:
public static final int MY_GREAT_COLOR = (91 << 16) + (155 << 8) + 213 + (255 << 32);
声纳说:
New: Squid:S2183 Severity: CRITICAL, Message: Remove this useless shift
谁能告诉我为什么?这是否只是不应该对文字进行计算的事实,即使它增加了可读性?
255 << 32
溢出 Java(32 位)int
,变为零。
你想要 long
和 255L << 32
吗?
我猜 255 是你的 alpha 通道,在那种情况下我猜你想要 255 << 24
。
SonarQube 不知道您的意图,但正如 Toby 所说,它有一个正确的观点。
至于可读性,你也可以试试六边形代码(例如0xFF5B9BD5
),很多开发者已经习惯了。当然,十进制数将完全不可读且难看。