
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Java 7 introduced the ability to use a digit separator (``++_++``) to split a literal number into groups of digits for better readability.
|
|
|
|
|
|
To ensure that readability is really improved by using digit separators, this rule verifies:
|
|
|
|
|
|
* *Homogeneity*
|
|
** Except for the left-most group, which can be smaller, all groups in a number should contain the same number of digits. Mixing group sizes is at best confusing for maintainers, and at worst a typographical error that is potentially a bug.
|
|
|
|
* *Standardization*
|
|
** It is also confusing to regroup digits using a size that is not standard. This rule enforce the following standards:
|
|
*** Decimal numbers should be separated using groups of 3 digits.
|
|
*** Hexadecimal numbers should be separated using groups of 2 or 4 digits.
|
|
*** Octal and Binary should be separated using groups of 2, 3 or 4 digits.
|
|
|
|
Furthermore, using groups with more than 4 consecutive digits is not allowed because they are difficult for maintainers to read.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
long decimal_int_value = 1_554_3124L; // Noncompliant; mixing groups of 3 and 4 digits
|
|
double decimal_float_value = 7_91_87_14.3456d; // Noncompliant; using groups of 2 instead of 3 digits
|
|
long hexadecimal_value = 0x8_3A3_248_6E2L; // Noncompliant; using groups of 3 instead of 2 or 4 digits
|
|
long octal_value = 0442_03433_13726L; // Noncompliant; using groups of 5 instead of 2, 3 or 4 digits.
|
|
long binary_value = 0b01010110_11101010L; // Noncompliant; using groups of 8 instead of 2, 3 or 4 digits.
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
long decimal_int_value = 15_543_124L;
|
|
double decimal_float_value = 7_918_714.3456d;
|
|
long hexadecimal_value = 0x83_A324_86E2L;
|
|
long octal_value = 04_4203_4331_3726L;
|
|
long binary_value = 0b0101_0110_1110_1010L;
|
|
----
|
|
|
|
|
|
include::../exceptions.adoc[]
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::../message.adoc[]
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|