In order to improve readability (Why readability matters) here are some code style guidelines for the JMeter project.
Java
Indentation/White space
- 4 spaces for indentation
- No tabs
- No tabs
- "Soft" maximum line length of ~80 characters
- Editors and monitors used by most programmers with good eyes can easily handle 120 characters. However:
- Here is an example from
CLUtil.java
- which do you find easier to read?
- also interesting to note that by looking at long lines we've spotted a simplification/refactor
boolean argumentOptional = (flags & CLOptionDescriptor.ARGUMENT_OPTIONAL) == CLOptionDescriptor.ARGUMENT_OPTIONAL; boolean argumentRequired = (flags & CLOptionDescriptor.ARGUMENT_REQUIRED) == CLOptionDescriptor.ARGUMENT_REQUIRED; boolean twoArgumentsRequired = (flags & CLOptionDescriptor.ARGUMENTS_REQUIRED_2) == CLOptionDescriptor.ARGUMENTS_REQUIRED_2;
or
boolean argumentOptional = flags == ARGUMENT_OPTIONAL; boolean argumentRequired = flags == ARGUMENT_REQUIRED; boolean twoArgumentsRequired = flags == ARGUMENTS_REQUIRED_2;
- "Hard" maximum line length of 120 characters
- Except for imports or other places where breaking the line wouldn't aid readability
Spacing
- Spacing between elements on a line e.g.
if (x | y) {
while (true) {
methodCall(arg1, arg2) {
String s = "con" + "cat";
- Braces are always used with
if
,else
,for
,do
andwhile
statements, even if the body is empty or only a single statement
Other
- Import order
- TBC
- Import spacing
- TBC
- No wildcard (
.*
) imports - Method line length (soft limit of 50)
- Class line length (soft limit of 500)
Java 8 Specific
- Use of Optional
- Return types where null is possible (which aren't performance critical)
- Default/static methods on Interfaces
- Utilise lambdas where possible (max ~5 lines)
- If the lambda is >4-5 lines then consider making this a separate method
- If the lambda is >4-5 lines then consider making this a separate method