[CleanCode] 조건문의 캡슐화를 하자.
두번째 효과는 함수화한 조건문의 이름의 일관성으로 인해서 생기는 학습의 효과입니다. 일단 함수명 역시 클린코드에서는 비슷한 역할을 할때에는 일관성 있는 이름을 제공하라고 이야기하고 있습니다. 즉, UsePatternException()이라는 함수를 개발자가 내부를 들여다 보면, “아 , 설정 클래스의 특정 변수의 값을 체크해서 판별하는 구나” 라고 생각하게 되고, 비슷한 이름의 UseTextException(), UseSpecialCharException() 함수 역시 대략적인 세부 기능에 대해서 유추 할수 있게 됩니다. 이번 시간에는 조건의 캡슐화에 대해서 알아 보았습니다. 첫 시간에 이 주제를 잡은 가장 큰 이유는 특별한 패턴이나 지식이 없더라도 이름만 지을줄 안다면 소스코드 상에서 CleanCode의 사례를 구현해 볼수 있는 가장 작은 단위이기 때문에 소개하게 되었습니다. 저 역시 새로만드는 코드보다는 유지보수하고 남이 짜 놓은 소스를 고치는 경우가 많기 때문에 당연히 이런 사례들을 많이 보게 되는데 소스코드를 싹 바꾸겠다라고 하면 한도 끝도 없기 떄문에 그때 그때 자신이 고치거나 유지보수한 부분에서 위와 같은 부분이 있다면 바꾸는것 부터 시작하는것이 쉬운 Clean Code 실천의 첫 걸음이라고 생각합니다.
일단 함수화하기전의 문제점은 조건문이 길어지게 되면 당연히 조건문 자체에 대한 가독성이 떨어지게 됩니다. 위의 코드의 경우에는 조건문 자체가 그리 복잡하지는 않지만 대부분의 소스에서는 &&, || 과 각종 연산자를 사용하면서 조건문이 복잡해지고, 지역변수 혹은 멤버변수가 아닌 외부 클래스의 변수를 끌어다쓰게 되면 조건문이 더러워질수 밖에 없습니다. 위의 고친 코드가 주는 효과는 2가지 입니다. 일단 첫 사례와 같이 함수화 해서 의미있는 이름을 제공함에 따라 개발자는 당연히 함수 내부를 보지 않아도 대략적인 기능을 함수이름을 통해서 제공받을수 있습니다. 개발자는 UsePatternException()이라는 함수명을 보고, “아, 몬지는 모르겠는데 패턴제외 라는 것을 사용하는지 여부를 체크하는거구나” 라고 인식 할 수가 있습니다.