int a;
String b;
System.out.print("User Requested "+b+". count = "+a);
변수명을 봤을땐 뭔지 모르고 결과가 나와야 무엇을 의미하는 지 알 수 있다
int itemCount;
String itemName;
System.out.print("User Requested "+itemName+". count = "+itemCount);
따라서 이런식으로 변수명을 구체적으로 지어야한다
for (int i=0 ; i<messages.size() ; i++) {
// ..
}
배열 순회할 때 인덱스를 의미하는 i를 사용하지 않고
advanced for문으로 대체할 수 있다
for (String message : messages) {
// ..
}
이렇게 하면 인덱스 i 사용하는거보다
messages 배열 안에 있는 message를 String형으로 쓴다라고 사용할 수 있다
messages.stream().forEach(
message -> //..
)
lamda도 사용할 수 있다
굳이 인덱스 값이 필요한게 아니라면 i를 지양하자
Member/Custmer/User
Service/Manager
Repository/Dao
위와 같이 의미가 똑같은 단어가 여러개 일 경우 한가지를 정해서 쓰자
똑같은 코드에 다른 단어를 사용하면 혼란스럽기 때문에 한 가지를 정해야한다
String nameString; // Bad -> name로 선언
int itemPriceAmount; // Bad -> itemPrice로 선언
List<Account> accountList; -> accounts, accountList
Map<Account> accountMap;
List나 Map은 끝에 타입을 넣는 경우가 있다
특히 Map 같은 경우는 이를 대체할 수 있는 말이 없기 때문에 이름만 보고 타입명을 유추할 수 있게 한다
현업에서 참고하는 Google Java Naming Guide
패키지 네이밍 가이드
com.example.deepspace // Good com.example.deepSpace //Bad com.example.deep_space //Bad
모두 소문자로, 언더바(_) 사용 금지
클래스 네이밍 가이드
Character, ImmutableList // 클래스는 명사, 명사구 List, Readable // 인터페이스는 명사, 명사구, (형용사) HashTest, HashIntegrationTest // 테스트 클래스는 Test로 끝나기
대문자로 시작해야된다
메서드 네이밍 가이드
sendMessage, stop // 메서드는 동사, 동사구
소문자로 시작해야된다