Formatting and layout contribute significantly to the readability and maintainability of the codebase. These guidelines should be adhered to consistently throughout the project.
Indentation
Indentations should be made with 4 spaces. This applies to classes, methods, and blocks of code enclosed in braces {}. Avoid using tabs.
public class Sample {
    public void method() {
        // 4 space indentation
    }
    
}
Whitespace
Braces
“K & R style” braces should be used. Opening braces don’t go on their own line and they do go on the same line as the code before them.
class ExampleClass {
    void exampleMethod() {
        if ( condition ) {
            // statements
        } else {
            // statements
        }
    }
    
}
Blocks
An if, if-else, while, do-while, for statement should always brace its body. Exception: If the entire body of the if, if-else, while, do-while, for statement fits on one line, it may optionally be left un-braced.
if ( condition ) {
    return;
}
// Or optionally:
if ( condition ) return;
Vertical whitespace
Two lines of vertical whitespace should surround:
- Method definitions:
    
public Constructor() { this( 0 ); } public Constructor( final int foo ) { } private void foo() { } private void bar() { } 
One line of vertical whitespace should surround:
- Initializers:
    
private static final int INT; static { INT = 2; } public final String var; - Class definitions:
    
public class Mess { public static class Foo { } protected class Bar { } } 
Horizontal whitespace
Add a single space within:
- Array initializer braces:
    
int[] X = new int[] { 1, 3, 5, 6, 7, 87, 1213, 2 }; - Parentheses in method declarations and calls:
    
public void foo( int x, int y ) { foo( 5, i ); - Parentheses in control structures:
    
if ( 0 < x && x < 10 ) { for ( int i = 0; i < x; i++ ) { while ( x != y ) { switch ( e.getCode() ) { try ( MyResource r1 = getResource() ) { } catch ( MyException e ) { synchronized ( this ) { 
Deviations from these guidelines
While these style conventions are intended as guidelines rather than strict rules, adhering to them is crucial for maintaining a consistent, understandable, and easily navigable codebase. Deviations from these guidelines should be rare and well-justified.
The fundamental objective of these guidelines is to enhance the clarity and maintainability of our code. Therefore, if strict adherence to these guidelines compromises these objectives, and deviation provides a clear benefit, it is acceptable to diverge. In such cases, the justification should be evident in the clarity and comprehensibility of the code itself.