스터디/코드리뷰

테스트도 단일책임원칙을 지키자

들어가며테스트 코드를 작성하는게 익숙치 않은 리뷰이들을 보면 간혹 테스트에서 여러가지를 한번에 테스트하는 모습을 보곤한다.여러가지라 표현한 이유는 그 케이스가 하나의 양상을 띄는게 아니라서 그렇다. 동일한 케이스에 대한 반복을 하는 경우도 있고해피케이스와 엣지케이스를 섞기도 하며컨텍스트를 유지하며 일련의 흐름을 작성하기도 한다. SRP(Single Responsibility Principle: 단일책임원칙)에 대해 한번쯤 들어봤으리라 생각한다.어떠한 객체에게 하나의 책임만 있어야 한다고 하는데 사실은 단일 (변경)책임 원칙이다.위키피디아를 보면 다음과 같이 적혀있다.The single-responsibility principle (SRP) is a computer programming principle ..

2025.02.19 게시됨

스터디/코드리뷰

생성자 내부에서 너무 많은 일을 하지 말자

들어가며나도 예전에 생성자 내부에서 이리저리 지지고 볶다보니 문제를 겪은 적이 많다.단적인 예로 외부 통신하는 RestTemplate을 wrapping하는 클래스를 만들었었는데생성자 내부에서 RestTemplate을 만들다 보니 테스트하기가 너무 힘든 구조가 됐었다. 이때 피부로 느끼고 깨달음을 얻었던 부분이 멤버변수를 생성하기 위한 로직을 생성자 내부에서 만들지 말자는 것이다.생성자에서 뭔가 멤버변수를 생성하는 로직이 너무 많으면 이를 제어하고 테스트하기 너무 힘들어진다.멤버변수 생성에 대한 로직이 필요하다면 별도의 Factory를 두는것이 더 적절하다고 본다. 그리고 부가적인 이점이 있는게 리팩터링 내성이 올라간다.리팩터링 내성이라 함은 작성해둔 테스트 코드가 운영코드의 리팩터링이 발생했음에도 컴파일..

2025.02.19 게시됨

스터디/코드리뷰

Exception을 테스트 할 때 거짓 음성을 주의하자

거짓 음성여기서 언급한 거짓 음성이 무엇인지 먼저 짚고 넘어가자~거짓 음성이란 실제로는 실패해야 하는 테스트가 통과하는 경우를 의미한다.다시말해 기능이 고장났는데 테스트가 통과하는 케이스를 의미한다. 보통 테스트의 정확도를 이야기할 때 거짓 음성과 거짓 양성에 대해 이야기를 한다.대게 거짓 양성에 대해 더 중요하게 다루곤 하지만 코드리뷰를 하며 거짓 음성을 발생시키는 케이스를 많이 본 것 같다. 조금 더 정확히 짚고 넘어가면 기능이 실패한다기 보다 기능에 대해 테스트가 정확히 검증해주지 못하는 케이스라고 봐야할 것 같다. 예제 코드 1그래서 Exception을 테스트하는 것과 어떤 관련이 있는가 싶을텐데코드로 살펴보도록 하자~public class MyCollection { private stati..

2025.02.18 게시됨

스터디/코드리뷰

코드 리뷰 요청에 정성을 담아보자

습관의 중요성나도 잘 못하기는 하는데 그래도 아무것도 안적는 사람들이 생각보다 많아서 적는다.말 그대로 코드리뷰 요청을 보내는데 코드리뷰 본문에 아무것도 적지 않는 사람들이 종종 있다. 이렇게 본문이 텅~ 비어버린 코드리뷰를 보면 어떤 생각이 들까?진짜 어렵다.뭘 해줘야 하는지 길을 찾기가 너무 어렵다.이렇게 되면 코드 컨벤션에 대해서만 주구장창 잡기도 한다. 내가 지금 재직중인 회사에는 아래와 같은 말이 있다.코드리뷰도 정~~~~말 똑같다고 느낀다.코드리뷰를 요청한, 만든사람이 본문에 내용을 잘 담아주면 코드 리뷰어가 방향성을 잡고 리뷰를 해주기 참~ 좋다. 나중에 취업하고 본격적으로 일할 때도 굉장히 중요한 요소이다.내가 PR을 생성해서 코드리뷰를 요청했는데 본문이 텅 비어있으면팀원들은 뭘 리뷰해줘..

2025.02.18 게시됨

스터디/코드리뷰

코드리뷰 카테고리 신설의 이유

5년차 개발자로 살아오면서 제법(?) 많이 코드리뷰를 해본 것 같다. 대학생때 친구들과 스터디하면서 해보기도 했고취준생일때 같이 교육받는 동기들과도 해보고취업 이후에는 팀 내에서 팀원간 코드리뷰도 해보고이외 활동으로 카카오 테크 캠퍼스 리뷰어, 우아한 테크코스 리뷰어, 넥스트 스탭 코드 리뷰어로도 여러번 활동했다. 물론 시니어 개발자분들에 비하면 그 실력이 부끄러운 수준이지만 깔깔.. 아니 그래서 코드리뷰 카테고리를 신설한 이유가 무엇인가! 포부를 밝히기 전에 히스토리를 설명해보면 이번 우아한 테크코스 7기 리뷰어 신청을 했다가 떨어졌다.. 조금 웃긴게 와이프와 함께 신청했는데 나만 떨어졌다 ㅋㅋ내가 같이 하자고 꼬드겼는데 내가 떨어지는 어처구니 없는 상황이 벌어질줄이야! 지금도 내 앞에 앉아서 열심히 ..

2025.02.17 게시됨