디자인 패턴 세계에서는 boolean 값을 매개변수로 취하는 메써드의 생성을 피하라고 권장한다. 예를 들어보자. 다음은 사용자의 프로필을 데이터베이스에 저장하는 메써드다.
SaveProfile(profile,true);
SaveProfile(profile,false);
SaveProfile(profile,Encript.SSH1);
우선 처음 메써드보다 두번째 제시된 메써드의 가독성이 좋다. 첫번째 경우라면 별도의 주석을 달아야 할 테지만, 두번째 경우에서는 코드 자체가 훌륭한 문서다. 더욱이 후자의 경우에는 훗날 요구사항 변경에 따른 수정이 전자에 비해 쉽다. 처음에는 사용자 프로필을 clear text 또는 SSH1으로 암호화한 후 저장하는 두 가지 옵션만이 있었다. 하지만 훗날 정책이 바뀌어서 blowfish를 지원해야 하는 상황이 벌어진다면 어떨까? 당연히 후자의 경우가 수정하기 쉽다.
여기까지는 디자인 패턴을 조금만 공부하면 쉽게 알 수 있는 내용이었다. 사실 오늘은 Coding Horror에서 재밌는 글을 읽어서 소개하려고 한다. Avoiding Booleans라는 글은 위의 논지를 더 확장해서, 유저 인터페이스에서도 이 법칙이 통용된다고 말한다. 원문을 보면 바로 체크박스와 라디오 버튼이 보일 것이다. 그림을 보는 순간, 글쓴이가 무엇을 말하려는지 알게 된다. 링크를 한번 클릭하기만 하면 된다.
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
좋은 것 배우고 갑니다.
도움이 되셨다니 다행입니다. 요즘 패턴 책을 읽고 계신 듯 한데, 원하시는 성과를 이루시길 바랍니다.
우선 처음 메써드보다 두번째 제시된 메써드의 가독성이 떨어진다.
이 부분이 왠지 반대같아요
수정했습니다. 제가 생각해도 어이가 없네요.