개요

The Boy Scout Rule : “Always leave the campground cleaner than you found it.”

보이 스카웃 규칙 : 언제나 처음 왔을 때보다 깨끗하게 해놓고 캠프장을 떠날 것.

출처 및 인용

보이 스카웃 규칙은 다음의 책과 사이트에서 찾아볼 수 있다.

모든 프로그래머가 알아야 하는 97가지 - 보이 스카웃 규칙

[[Clean-Code]]의 저자인 Uncle Bob이 작성한 문서이기 때문에 내용 대부분은 비슷하다.

다음은 위의 글을 번역한 것이다.

보이 스카웃에는 “언제나 처음 왔을 때보다 깨끗하게 해놓고 캠프장을 떠날 것”이라는 규칙이 있습니다. 엉망으로 어질러져 있는 곳을 발견하면, 일단 청소하세요. 누가 그렇게 했는지는 생각하지 마십시오. 다음으로 야영하러 오는 사람들을 위해 신경써서 환경을 개선하세요. 이 규칙은 원래 스카우팅의 아버지인 Robert Stephenson Smyth Baden-Powell이 남긴 글에서 나온 것입니다. 그는 “처음 왔을 때보다 더 나은 세상을 만들고 떠나려 노력하라”라고 한 바 있습니다.

비슷한 규칙을 코드에 적용해 보면 어떨까요? “작업을 완료하고 체크아웃 할 때에는 체크인 했을 때보다 모듈을 깨끗하게 할 것.” 정도가 되겠군요. 원래 코드를 작성한 사람이 누구이건 간에, 우리 모두가 조금씩 노력하여 모듈을 개선시켜 나간다면 어떻게 될까요?

제 생각에 우리가 이 단순한 규칙을 실천한다면, 시스템의 오랜 문제점들이 사라져가는 것을 볼 수 있을 거라 봅니다. 나아가 우리의 시스템은 점차 발전해 더 좋아질 겁니다. 또한 각자 맡은 작은 부분만을 담당하는 개개인의 집합이 아니라 시스템 전체를 돌보는 팀을 볼 수 있을 겁니다.

저는 이 규칙을 지키는 것이 무척 까다롭다고는 생각하지 않습니다. 작업을 끝내기 전에 모듈을 완벽하게 만들라는 말이 아닙니다. 그냥 작업을 시작했을 때보다 약간만 더 좋아지게 하면 됩니다. 물론 모듈에 막 추가한 코드가 깨끗해야 하는 건 당연하고요. 정리하자면 작업한 모듈을 체크아웃 하기 전에 적어도 한 가지를 깨끗하게 하자는 것입니다. 예를 들어 변수 하나의 이름을 더 읽기 좋게 개선할 수 있을 겁니다. 큰 함수 하나를 작은 함수 두 개로 쪼갤 수도 있겠죠. 순환 참조 문제를 고치거나 인터페이스를 추가해 정책 코드를 분리할 수도 있습니다.

솔직히, 제게는 일반적인 행동 양식에 대한 말처럼 들립니다. 화장실에서 일을 보고 손을 씻거나, 쓰레기를 바닥에 버리지 않고 쓰레기통에 넣는 것처럼 말이죠.

코드에 똥을 싸놓는 일은 노상방뇨처럼 모두가 용납하지 않는 행위여야 합니다. 그런 것은 그냥 놔둬서는 안 됩니다.

하지만 그뿐만이 아닙니다. 사실 내가 작성한 코드만 관리하는 것도 그런 종류의 일에 속합니다. 반면 모두가 힘을 합쳐 팀의 코드를 관리하는 것은 완전히 다르다고 할 수 있습니다. 팀끼리 서로 도와가며, 서로의 코드를 청소해 나가는 것입니다. 그런 팀의 사람들이 보이스카웃 규칙을 따르는 이유는 자기네들에게 좋은 영향을 주는 규칙이어서가 아닙니다. 그 규칙이 세상의 모든 이에게 좋은 영향을 주기 때문에 따르는 것입니다.

by Uncle Bob
이 글의 라이선스는 Creative Commons Attribution 3을 따릅니다.

Clean Code

  • [[Clean-Code]] - 1장 깨끗한 코드. 18쪽.

잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다. 시간이 지나면서 엉망으로 전락하는 코드가 한둘이 아니다. 그러므로 우리는 적극적으로 코드의 퇴보를 막아야 한다.
미국 보이스카우트가 따르는 간단한 규칙이 우리 전문가들에게도 유용하다.

캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.

체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다. 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if 문 하나를 정리하면 충분하다.