standards.md 3.0 KB

  • git enforced \n line endings
  • 4-spaces instead of tabs for indentation
  • Spaces after control statements before beginning parenthesis or brace
    • if (
    • for (
    • while (
    • do {
    • try {
    • public class SomeClass {
  • Spaces after closing parenthesis in a control statement
  • No newline after closing parenthesis and space in a control statement:
    • if () {
    • for () {
    • while () {
    • catch () {
    • switch () {
  • Newlines before an else, else if, catch, and finally statement
    • }
      else {
    • }
      else if () {
    • }
      catch () {
    • }
      finally () {
  • Space after ; in for statement, not before
    • for (int i = 0; i < 10; i++) {
  • Spaces around operators
    • a + b
    • a == b
    • for (Type blah : blahs) {
    • "String " + "concatenation"
  • Spaces around { and } on one-line declarations
    • public boolean aMethod() { return something; }
  • Fewer extraneous parentheses, except when they increase readability
    • if (a == b || b == c)
  • Indent on case in switch case statements
    • switch () {
          case 1:
  • Mandatory comment for when a case falls through, and when not stacking

    • switch () {
          case 1:
              // Fallthrough
      
          case 2:
    • switch () {
          case 1:
          case 2:
          case 3:
          case 4:
          case 5:
              // Fallthrough
      
          case 6:
  • Empty line between cases after break, return, or fallthrough

    • switch () {
          case 1:
              break;
      
          case 2:
  • Prefer early returns over method indentation. Example:

    • if (!precondition) {
          // Possibly cleanup
          return;
      }
      
      // Continue with task
  • Java standard class and method naming, with exception to McMMO in a class name

    • thisIsAMethod()
    • ThisIsAClass
    • Exception:
      McMMOCustomClass
  • No space before opening parenthesis for methods, or constructors

    • public void thisIsAMethod() {
    • public ThisIsAClass() {
  • Spaces after comma in method calls and constructors, not before

    • something.methodCall(variable, otherVariable);
  • Accessing of variables with this. only when necessary to resolve scope

  • Class variables always defined at the top, before the constructor

  • No empty line between class declaration and beginning of variable declaration

  • Always a empty line at the end of a method or constructor definition

  • Constructors come before methods, and are typically ordered from the ones with the least arguments to the most

  • Methods should be ordered in this manner:

    • override public
    • public
    • static public
    • abstract public
    • override protected
    • protected
    • static protected
    • abstract protected
    • private
    • static private
  • No one-line if statements, they should all have brackets