Code Conventions
written on 04/13/2005 by Florent Benoit
Entry Point
A good starting document is the java code conventions This convention should be used by contributors when submitting source code in JOnAS.
Also a tools used to check the compliance is the checkstyle plugin and the eclipse checkstyle plugin Settings used with eclipse are available on JOnAS SVN
Here is the detailed settings used by JOnAS
File Organization
Header
The header of each file should contains the LGPL and the date.
When modifying a file, change the year to the current year by appending it to the existing.
ie : if there was '1999' or '2004' put '1999-2006' or '2004-2006'
Also, the tag $Id:$ should be added.
Here is an example of a header used in JOnAS java files:
* JOnAS: Java(TM) Open Application Server
* Copyright (C) 2006 Bull S.A.S.
* Contact: jonas-team@ow2.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* --------------------------------------------------------------------------
* $Id:$
* --------------------------------------------------------------------------
*/
Imports
No wildcard imports are authorized. They have to be avoided.
The imports should reference the correct classes.
ie : if you need to use List and ArrayList classes, don't do:
but :
import java.util.ArrayList;
Unused imports need to be removed.
Note that Eclipse IDE allow you to do the job. (Source/Organize imports or Shift+Ctrl+O)
Class and Interface Declarations
The Class and Interface name begin with an Uppercase and have a javadoc comment with the @author tag. ie :
* This is an example of a class
* @author Florent Benoit
*/
public class MyClass implements MyInterface {
}
Indentation / WhiteSpace
Indentation
No tabs characters are used. Always use space characters and the number of the characters for an indent is 4 spaces.
There is eclipse plugin like AnyEdit for changing tabs into spaces.
For the wrapping of lines, follow the Java code conventions on this part
WhiteSpace
Also, the trailing spaces should be removed. AnyEdit plugin do this.
Use whitespaces in for() loop, while(), when concatenating strings.
One before the separator and one after. ie :
String str = "this is" + " " + "a test with value = " + i;
}
and not :
String str = "this is"+" "+"a test with value = "+i;
}
JavaDoc Comments
It's pretty simple, all attributes and methods need javadoc comment.(Even if they are private/protected).
If a method throw an exception, the javadoc contains the @throws tag for each exception thrown.
If a method return something, the javadoc contains the @return element.
Example :
* This is a sample attribute used for JOnAS code convention wiki
*/
private String simpleExample = null;
* This method is a sample example with a parameter and a return value and an exception
* @param dummyArg an example of parameter
* @return an object
* @throws Exception to illustrate the example
*/
private Object myMethod(String dummyArg) throws Exception {
return null;
}
Statements
if/else
When using if else blocks, even if there is a single statement, the braces have to be used :
doThis();
}
and not
doThis();
Note that the braces follow the previous example. Don't use:
{
test1();
test2();
}
try/catch
All exception required a statement, no silent catching like :
doThis();
} catch (Exception e) {
// should not occur
}
You can use a logger :
doThis();
} catch (Exception e) {
logger.logDebug("Exception while doing .....", e);
}
Inline Conditionals
Don't use inline conditonnials like
but
b = true;
} else {
b = false;
}
Naming conventions
Attributes
Static final attributes
Following the JLS suggestions, the declaration is "static final" and not "final static".
Constants
Constants should match the pattern
Also they need to be declared static and final.
No magic number, use constants
ie : Don't do :
but :
* Default value
*/
private static final int DEFAULT_VALUE = 5;
/**
* This attribute is initialized with the default value
*/
private int myAttribute = DEFAULT_VALUE;
Attributes name
no _ (underscore) is authorized in the name of the attributes. _ character is used only in constants (UPPERCASE).
so avoid m_value or p_value, use instead mValue or pValue.
The regexp is the following :
Tools
By using eclipse IDE, there are other good checks like :
- unnecessary cast or instance of
- unused variable
- methods which should be used in a static way
- unused methods
- unnecessary throws
- etc.
- Project
- Demos
- Services
- Documentation
- Downloads
- Community
- Developers