SummaryBook/[자바 코딩의 기술] 6

[Chap 6] 우선정리부터 올바르게 드러내기

Given-When-Then으로 테스트 구조화 테스트 코드작성시 새줄, 주석을 통한 구분하여 코드의 가독성을 높이자. Given(~주어졌을때) When(~경우) Then(~결과) 의미 있는 어서션 사용하기 assert 불표현식을 사용시 동등연산자(==) 등을 사용시 AssertionError 에러가 발생한다. 이때 어떤 어서션이 실패했는지만 알뿐 왜 실패 했는지는 모른다. 더 나은 메시지를 얻으려면 검증하려는 테스트에 가장 적합한 어션을 선택 하자. 실제 값보다 기대 값을 먼저 보이기 assertEquals(기대값, 실제값)사용하기 합당한 허용값 사용하기 예외 처리는 JUnit에 맡기기 assertThrows 어서션을 사용하여 예상되는 예외를 발생시키자. 테스트 설명하기 메서드명 불필요한 용어 삭제 ..

[Chap 5] 우선정리부터 문제 발생에 대비하기

빠른 실패 if문 사용시 빠른실패를 통한 코드의 가독성을 높이자. Depth를 줄일 수 있다. 모든 검증 조건을 다시 상기 할 필요가 없어진다. 항상 가장 구체적인 예외 잡기 예외처리시 일반적인 타입을 잡으면 잡아선 안될 오류까지 잡힐 위험이 있다. try-catch 사용 ex) Exception 대신 가장 구체적인 예외를 잡는다. 가장 구체적인 예외를 잡기 위해 여러 예외를 잡아야 할 수도 있다. catch 블록을 하나가 아닌 여러개 작성하여 코드는 길지만, 버그가 많은 짧은 코드보다 좋다. 메시지로 원인 설명 메시지 작성시 자세한 정보로 예외의 근본적인 원인을 빠르게 추적 가능하다. 원인 사슬 깨지 않기 변수로 원인 노출 예외는 단순한 클래스가 아니라 필드, 메서드, 생성자를 가질 수 있느 클래스이..

[Chap 4] 우선정리부터 올바르게 명명하기

자바 명명 규칙 사용하기 자바의 패키지, 클래스, 인터페이스, 열거형, 상수, 메서드, 변수, 필드, 매개변수 등 각각의 요소에 맞게 명명하기 영어 공부의 필요성을 느낌 프레임워크에는 Getter/Setter 규칙 적용 필드는 private Getter / Setter는 public 기본생성자를 추가하여 빈 인스턴스 생성 후 사용 Boolean 타입 사용시 'is메서드명' 라 명명 한 글자로 명명하지 않기 한글자 이름에는 이유가 있을 수 없다. 명확히 사용하자. 축약 쓰지 않기 축약은 자신만 안다. 코드의 가독성을 높이기위해 사용하지 않기. 가급적 풀어쓰기를 사용하고, 목적을 잘 보여주는 단어로 사용가능하다. 무의미한 용어 쓰지 않기 도메인 용어 사용하기

[Chap 3] 우선정리부터 슬기롭게 주석 사용하기

지나치게 많은 주석 없애기 주석은 중요한 정보를 설명할 때 사용 너무 많은 주석은 코드사용하지 않기 프로젝트시 팀원들의 이해를 도울정도만! 주석 처리된 코드 제거 주석처리 코드는 이해도를 떨어트린다. 잃어버리고 싶지않은 코드라면 Git을 통해관리하자. 주석을 상수로 대체 주석은 코드를 설명하는데 필요하지만, 코드로 직접설명하는것이 효율적이다. 매직넘버의 설명 주석보다는 상수로 대체 사용하자. 주석을 유틸리티 메서드로 대체 주석을 상수로 사용 할 수 없을 경우 메서드로 정의하자. 메서드 이름을 통해 무엇을 return할 지 파악이 가능하다. 메서드가 늘어나지만, 코드가 짧아져 이해하기 쉽다. 메서드를 재사용 할 수 있다. 구현 결정 설명하기 중요한 결정이나 코드에서 까다로운 부분을 설명할 때는 팀내의 규칙..

[Chap 2] 우선정리부터 코드 스타일 레벨업

매직 넘버를 상수로 대체 매직넘버는 의미를 파악하기 어려우며, 코드의 가독성을 떨어트림. 매직 넘버가 있으면 코드를 이해 하기 어려워지고 오류가 발생하기 쉽다. 상수로 대체시 가독성이 좋아지고 상수명을 통해 뜻이 명확해진다. 정수 상수 대신 열거형 정수, 상수로 사용 할 경우 버그가 발생할 수 있다. 열거형으로 사용시 자바 컴파일 단계에서 버그를 예방할 수 있다. For 루프 대신 For-each for 사용시 인덱스 변수에의한 실수여지 및 IndexOutBoundExceptions 발생가능 for-each 사용시 반복 인덱스를 다루지 않아도 된다. index i값의 에러발생 조작이 없다. 순회하며 컬렉션 수정하지 않기 for-each 순회시 ConcurrentModificationException 발생..

[Chap 1] 우선정리부터

시작하며 1. 코딩 실력 Level Up 2. 클린코드 책을 볼때는 이해가 되지만, 많은 내용이 오래되지 않아 간략 요약 정리하며, 내생각을 추가 작성하였다. 쓸모없는 비교 피하기 최초의 나의 코드는 if, else if, else 를 많이 사용하는 좋지않은 코드였다. 내가봐도 이해가 힘들다. 부정 피하기 if 조건문 사용시 '!' 및 '부정 Boolean 메서드' 를 사용하다보면 코드를 읽기 어렵다, 부정이 아닌 긍정 true를 사용하자. 불 표현식을 직접 반환 지저분한 if를 사용하기보다는 Boolean 메서드를 사용하자. Depth를 줄일 수 있다. 불 표현식 간소화 메서드 추출을 통한 코드의 간소화하자. 조건문에서 NullPointException 피하기 NullPointException을 피하기..