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