자바/자바 코딩의 기술

자바 코딩의 기술 - 2장 ( 코드 스타일 레벨 업 )

끄적끄적 2022. 4. 8. 11:47

훌륭한 코드는 짧고 단순하고 대칭을 이룬다. 문제는 어떻게 그렇게 하느냐다.
- 숀 파렌트

2-1. 로직 내에 매직넘버(특정 숫자나 문자)를 사용하지 말고, 상수(static final)로 분리시켜라.

2-2. 매개변수로 받는 값이 몇개의 유효한 값만 가능하다면, 매개변수를 정수와 같은 변수가 아닌 enum타입을 사용해서 호출할 수 있는 값을 제한하라.

2-3. For 루프는 반복문을 잘못 구현할 우려가 있으니, 특별한 이유(명시적으로 인덱스 i를 사용해야 할 때)가 아니면 For-Each문을 사용하라.

2-4. 반복문에서 컬렉션 수정시 주의사항 : 반복문 순회 중에 수정/삭제가 필요시 주의사항

private List<Member> members = new ArrayList<>();

void checkMember(){
    for (Member member : members) {
        if( member.isSynthetic()){
            members.remove(member);
        }
    }
}

위와 같이 구현하면, for 루프 내에서 List 순회시 List를 수정하면 ConcurrentModificationException 등 오류가 발생할 수 있다.

private List<Member> members = new ArrayList<>();

void checkMember(){
    Iterator<Member> iterator = members.iterator();
    while (iterator.hasNext()){
        if(iterator.next().isSynthetic()){
            iterator.remove();
        }
    }
}

2-5. 반복문내에서 성능저하를 유발할 수 있는 계산이 필요하다면, 위로 빼서 한번만 수행하도록 개선하라.

2-6. 연관된 코드들은 그루핑하고, 개념이나 분류가 다른 내용이면 빈 줄을 통해 분리하라.

2-7. String을 복잡하게 이어붙여야 한다면 +를 통해 붙이기 보다는 String.format 이나 StringTemplate을 활용해서 서식화하라.

2-8. 직접 만들기 보다는 자바 API를 사용하라 : 컬렉션에서 제공하는 기능(ex Collections, TimeUnit 등)들이 있으면 그것을 사용하는 것이 훨씬 낫다.

반응형