Java Coding Standards
When reviewing or generating Java code, follow these rules:
File Naming
- •Source files: PascalCase matching the public class name (e.g.,
UserService.java) - •One public class per file: File name must match the public class name exactly
- •Test files: Class name with
Testsuffix (e.g.,UserServiceTest.java) - •Interface files: PascalCase (e.g.,
Comparable.java,UserRepository.java)
Package Naming
- •Packages: All lowercase, dot-separated (e.g.,
com.example.service,org.project.utils) - •No underscores or hyphens in package names
- •Follow reverse domain name convention
Variable Naming
- •Local variables: camelCase (e.g.,
userName,isActive,totalCount) - •Instance variables: camelCase (e.g.,
userId,createdAt) - •Constants: UPPER_SNAKE_CASE with
static final(e.g.,MAX_RETRIES,DEFAULT_TIMEOUT) - •Boolean variables: Prefix with
is,has,can,should(e.g.,isEnabled,hasPermission)
Method Naming
- •Methods: camelCase, verb or verb phrase (e.g.,
calculateTotal(),getUserById()) - •Getters:
getprefix (e.g.,getName(),getId()) - •Setters:
setprefix (e.g.,setName(),setId()) - •Boolean getters:
isorhasprefix (e.g.,isActive(),hasChildren()) - •Factory methods:
create,of,from,valueOf(e.g.,createInstance(),of())
Class/Interface Naming
- •Classes: PascalCase, noun or noun phrase (e.g.,
UserService,OrderProcessor) - •Interfaces: PascalCase, adjective or noun (e.g.,
Comparable,UserRepository) - •Abstract classes: PascalCase, optionally prefix with
Abstract(e.g.,AbstractHandler) - •Exception classes: PascalCase with
Exceptionsuffix (e.g.,InvalidInputException) - •Enums: PascalCase for type, UPPER_SNAKE_CASE for values
Generics
- •Type parameters: Single uppercase letter (e.g.,
T,E,K,V) - •Meaningful names: When clarity needed (e.g.,
<Key, Value>)
Organization
- •Package statement first
- •Import statements (java., javax., third-party, project imports)
- •Class declaration with fields, constructors, methods
- •Public methods before private methods