BT

Google's Java Coding Standards

by Bienvenido David on Feb 10, 2014 |

Google has recently released their complete definition of coding standards for Java source code. These are hard-and-fast rules that are clearly enforceable, and are followed universally within Google. It covers not only formatting, but other types of conventions and coding standards.

The document is broken up into 6 main sections: Source File Basics, Source File Structure, Formatting, Naming, Programming Practices, and Javadoc. Source File Basics talks about filenames, file encoding, whitespace characters, and special characters. Source File Structure talks about license information, package and import statements, and class member ordering. Formatting talks about braces, indents, line wrapping, whitespace, parentheses, enums, arrays, switch statements, annotations, comments, and modifiers. Naming talks about identifiers (package, class, method, constant, field, local variable, type variable) and defines CamelCase. Programming Practices talks about @Override, exceptions, static members and finalizers. Javadoc talks about how to format Javadoc and where it is required.

Here are a few items contained in the guide.

  • No wildcard imports.
  • Overloads appear sequentially.
  • Braces are used even when the body is empty or contains a single statement.
  • 2 spaces indentation.
  • Column limit can be 80 or 100 characters.
  • No C-style array declarations.
  • The default statement in switch statements are required.
  • Modifiers appear in the order recommended by the Java Language Specification.
  • Constants use CONSTANT_CASE. Note that every constant is a static final field, but not all static final fields are constants.

For further reading, please read the Google Java Style. There is also the official Code Conventions for the Java Programming Language from Oracle. Google also has style guides for other languages like C++, Objective-C, Python, Shell, HTML/CSS, JavaScript, and Lisp.

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

2 Spaces? Rly? by Oliver Weiler

2 spaces indentation may be useful in dynamically typed languages (Python, Groovy) but Java?

Re: 2 Spaces? Rly? by Chris Melikian

Then again they're only allowing 80 or 100 characters per line so those indents can mount up if they're more than 2 characters.

Style Validation by Suresh Murthy

How does google enforce the style guide, do they use the standard static analysis tools such as checkstyle, PMD, FindBugs or do they have they own tools?

Re: Style Validation by Michael Ahern

In eclipse itself you can define shareable code-style rules that are enforced every time you save a file that:
* Fix indentation
* Organize imports (to enforce the wild-carding rules).
* Add braces
* Etc.

You can then cover the rest of it using the built-in checkstyles plugins:
checkstyle.sourceforge.net/
Or defining their own. Checkstyles has ANT / Maven tasks that can be run as part of a build. The eclipse plugin highlights issues as your code.

----

You would still run findbugs during a policing build to find bugs (obviously), but checkstyles is a good add for your java environment / build setup if you want to enforce a common setting of coding styles across a development team.

Do also look at the eclipse formatting rules as well as they can be implemented more quickly, while less easy to enforce in a build.

Spaces... lol by Jonathan Fisher

Seriously no tabs? This isn't Python lmao.

Just use tabs people and end this stupid argument. Spaces are for between words.

K&R braces considered harmful by phloid domino

Yeah, the 2 spaces are bad enough (someone in Mountain View was smoking crack and washed it down with Python Kool-Aide), but they must really want that code to be completely unreadable with the K&R braces.


There is one and only one true brace style:

if (foo)
{
bar(); // (should be indented 4 spaces, but the webform loses them)
}


Anything else is unreadable, incorrect, communist, and the mark of the beast.

Re: K&R braces considered harmful by Dmitriy Korobskiy

phloid domino,

K&R ("Egyptian") braces have been part of Sun/Oracle Java conventions since those conventions existed. Hence, the vast majority of Java projects use them. Let's all be friends anyway, OK? :)

I've been using Sun/Oracle Java conventions on all my projects with very minor tweaks, such as expanding line length limit to 120 characters and banning tabs.

Thinking of switching to Google Style though. 2 spaces for indents might make more sense after some getting used to.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

7 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT