Page tree
Skip to end of metadata
Go to start of metadata

In order to improve readability (Why readability matters) here are some code style guidelines for the JMeter project.


We now enforce many of these rules, and more using checkstyle.

Indentation/White space

  • 4 spaces for indentation
    • No tabs (warning)
  • "Soft" maximum line length of ~80 characters
    • Editors and monitors used by most programmers with good eyes can easily handle 120 characters. However:
      • lines longer than this can be harder to read and frustrating work with
      • not all programmers have good eyes and/or wide high resolution monitors
      • in typography line length is recommended to be 45-75 with the optimum being 66 or 45-90
    • Here is an example from
      • which do you find easier to read?

        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


  • 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 and while statements, even if the body is empty or only a single statement


  • 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


  • Import order
    • java, javax, org, net, com, others
  • Import spacing
    • line break between each group
  • 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 >3 line then consider making this a separate method

See Also

  • No labels