본문 바로가기
개발/Clean Code

[Clean Code] 15장. JUnit 들여다보기

by 달사쿠 2021. 3. 8.
반응형

Introduction

본 챕터에서는 JUnit을 작성하고, 테스트 코드를 통해 코드를 리팩토링하는 과정 주로 다루고 있습니다.

장 제목인 JUnit 들여다보기와 책의 내용이 다소 무관하다고 느꼈으며, 오히려 클린코드와 리팩토링에 초점이 맞춰져 있습니다.

본 블로그에서는 코드를 세세하게 다루는 것 보다는, 지금까지 clean code를 통해 언급된 부분과 본 챕터에서 다뤄진 내용의 중복되는 내용을 서술하는 정도만 하겠습니다.

 


JUnit 프레임워크

JUnit

위키백과, 우리 모두의 백과사전. JUnit(제이유닛)은 자바 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발 면에서 중요하며 SUnit과 함께 시작된 XUnit이라는 이름의 유닛

ko.wikipedia.org

JUnit(제이유닛)은 자바 프로그래밍 언어용 유닛 테스트 프레임워크입니다.

본 장에서이 이 JUnit을 활용해 TC를 작성하였고, 이를 통해 특정 모듈에 대한 코드 커버리지 분석을 수행했습니다. 그 결과 로 100%가 나왔는데, 이 의미는 TC가 모든 행, 모든 if문, 모든 for문을 실행한다는 의미로, TC를 잘 통과한다면 모듈이 올바르게 잘 동작한다라고 볼 수 있습니다.

 

사실 본 챕터의 내용은 여기까지가 끝입니다.

이후는 직접 모듈을 깨끗한 코드로 리팩토링하는 과정이 나와있습니다.

 


리팩토링에 사용된 클린코드 원칙들

1. 의도를 명확하게 표현하려면 조건문을 캡슐화해라. 즉, 조건문을 매서드로 뽑아내 적절한 이름을 붙인다. (p331)

 

2. 캡슐화된 조건문은 부정문보다는 긍정문으로 만들어서 이해하기 쉽게 만들어라. (p332)

 

예를들어, shouldNotCompact() 라는 조건문보다는, canBeCompated()가 좀 더 이해하기 쉽다.

 

3. 함수의 이름을 명확하게 명시해라. (p333)


예를들어 'compact'라는 함수가 있을 때, 그 함수가 단순히 압축만 하는 함수인지 확인해라. 만약 압축을 해서 특정 형식을 갖춘 문자열을 반환한다면, 'formatCompatedComparision'과 같이 표현한다면 더 명확해보일 것이다.

 

4. 매소드 간의 숨겨져있는 인과관계가 있을 때, 더 명확하게 표현하기 위해 따로 메소드를 뽑을 수 있다. (p334)

 

예를 들어, A메소드가 호출된 뒤 B메소드가 호출되는 인과가 있다고 할 때, A메소드와 B메소드를 합쳐서 명확하게 인과관계를 표현할 수 있는 메소드를 만드는 것이 좋다.

 

 

추가로  리팩터링을 하다보면 원래 했던 변경을 되돌리거나, 원래의 코드로 되돌아가는 경우도 흔하다. 때문에 코드가 어느 수준에 이를 때까지 수많은 시행착오를 반복해 리팩터링을 진행하는 것이 좋다.

반응형

댓글