THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
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
- "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?
No Format |
---|
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
No Format |
---|
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 when if the body is empty or only a single statement
Other
- Import order
- TBC
- Import spacing
- TBC
- No wildcard (
.*
) imports - Line Method line length of methods (soft limit of 50?)Line
- Class line length of classes (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
- Lambdas 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