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?
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 = isFlagSet(flags, ARGUMENT_OPTIONAL); boolean argumentRequired = isFlagSet(flags, ARGUMENT_REQUIRED); boolean twoArgumentsRequired = isFlagSet(flags, ARGUMENTS_REQUIRED_2); private static boolean isFlagSet(int flags, int flag) { return (flags & flag) == flag; }
- "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