You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

style-guide.md 2.2KB

Style guide

This document aims to give a brief introduction to the code style we try to use in DMDirc. Having a consistent style makes it easier for developers to read code and reduces conflicts and excessive changes caused by individual style preferences.

If you have any comments or suggestions about these guidelines, please raise an issue or open a pull request.

General

  • Lines should not exceed 120 columns
  • Java source code is indented using 4 space characters
  • Trailing whitespace should be removed
  • Braces should always be used even when optional (if/while/etc blocks)
  • Braces should open on the same line as the block begins (if (...) {)
  • @Override should be used whenever possible (including interface implementations)
  • British English is preferred over American English

Imports

  • Do not import classes just for JavaDoc references (use fully-qualified names instead)
  • Imports are split into non-static and static, separated by a blank line
  • Imports are then sorted lexicographically (in alphabetical order), with no spaces
  • Do not use wildcard (*) imports

Constructors

  • Constructors should be the first method defined in the class
  • Explicit default constructors should be avoided unless required
  • Explicit calls to super() in constructors should be avoided

Methods

  • Method annotations should each be on a separate line
  • All modifiers should be in the order recommended by the JLS: public, protected, private, abstract, default, static, final, transient, volatile, synchronized, native, strictfp
  • Method-level synchronisation should be avoided in favour of synchronized blocks on private objects

Documentation

  • All classes should be documented using javadoc
  • Author names should not be included, and should be actively removed if present
  • Methods should be documented unless their function is extremely obvious (e.g. getters and setters)
  • Methods overriding a superclass/interface may omit documentation to inherit the parent’s
  • {@inheritDoc} should only be used when adding extra information to a parent’s documentation