개발자 준비/개발 공부

매개변수 3개는 무조건 피해야할까?

osul_world 2022. 11. 8. 16:25
728x90

얼마전 Clean Code의 저자인 Robert Cecil Martin가 주장하신 “메서드 매개변수가 3개이면 코드를 이해하기 어렵기 때문에 나쁜 디자인”이라는 내용을 접했습니다

 

하지만, 이번에 코드를 리펙토링하며 코드 깊이 2를 유지하기 위해선 매개변수 3개가 불가피한 상황에서 위 주장에대한 고민을 하게 되었습니다

 

“메서드 매개변수가 3개이면 코드를 이해하기 어렵기 때문에 나쁜 디자인이다” 라는 말에서 중요한 포인트는 매개변수의 수가 아니라, 코드를 이해하기 어렵다 라고 생각했습니다

 

분명 매개변수가 많아지면 메서드의 역할을 파악하는데 어려움이 생길 확률이 높아집니다

  • SRP를 잘 준수하는 잘게 나뉜 클래스들도 각각 필드가 적다라는 특징이 있었습니다

 

하지만, 3개의 매개변수를 쓰더라도 메서드의 의도가 잘 전달된다면 매개변수의 숫자에 집착할 필요가 없다고 느껴졌습니다

 

규칙은 규칙을 지켰을때 분명한 가치가 존재할때 의미가 있습니다, 규칙에 얽매이면 오히려 불필요한 수정을 불러올 수 있는것 같습니다

 

규칙에 얽매여 내 코드를 위해하지는 않는지, 아니면 내가 그 규칙을 지킬수 있었지만 적합한 방식을 못찾았는지 항시 스스로 판별할 수 있어야한다고 생각합니다

 

Reference

https://stackoverflow.com/questions/174968/how-many-parameters-are-too-many

https://softwareengineering.stackexchange.com/questions/145055/are-there-guidelines-on-how-many-parameters-a-function-should-accept

https://dev.to/thinkster/code-smell-too-many-parameters-435e

728x90