In order to improve readability (Why readability matters) here are some code style guidelines for the JMeter project.
Java
We now enforce many of these rules, and more using checkstyle.
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
UrlConfigGui.java
which do you find easier to read?
Code Block language java element.setProperty(HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART, useBrowserCompatibleMultipartMode.isSelected(),HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT);
or
Code Block element.setProperty( HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART, useBrowserCompatibleMultipartMode.isSelected(), HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT);
- "Hard" maximum line length of 120 characters
- Except for imports or other places where breaking the line wouldn't aid readability
- 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
JavaDoc
- Parameter descriptions are aligned and not on new lines.
- No invalid tags
- No tags without a description
- Blank line after main description but not after any tags
Other
- Import order
- java, javax, org, net, com, others
- Import spacing
- line break between each group
- 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 >3 line then consider making this a separate method