Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: [Original edit by ham1] Added more detail and example code

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 (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 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 and while 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

See Also