코드 관리에 관한 재미있는 외국 사례 :: 2009/09/22 10:28



얼마 전에 코드 공동 관리에 대한 재미있는 외국 사례를 하나 들었습니다.

코드를 관리하다보면 항상 골치가 아픈 부분 중에 하나가 코멘트(comment)입니다. 즉 주석 관리를 어떻게 하느냐 하는 것인데요.

이 회사 직원들은 개발을 몇 줄 혹은 얼마나 했느냐에 따라서도 포상을 받지만, 주석을 얼마나 정확히 달았느냐, 얼마나 많이 달았느냐에 따라서도 포상을 받습니다.

함수의 사용 방법을 적는 것은 물론이고, 함수를 호출하는 함수의 목록, 함수 호출 결과로 발생하는 side-effect의 목록, 함수 호출 시 발생할 수 있는 예외 상황, 그리고 함수에 전달되는 인자의 의미 등등을 전부 적습니다. 그러다 보면 주석문의 길이가 길어집니다. 이 회사 직원들은 주석도 평가와 포상의 대상이 된다는 사실을 알기 때문에, 아주 적은 양의 코드에도 아주 자세한 주석을 답니다.

그리고 주석과 실제 코드에 불일치를 발견한 사람에게는 가산점을 줍니다. 종종 주석이 제대로 업데이트 되지 않아 문제가 되는 경우를 많이 보게 되는데, 그런 문제를 포상체계를 통해 해소하고자 하는 것이죠.

주석을 포상과 직접적으로 연결한다는 아이디어는 얼핏 생각하면 좀 졸렬하기도 합니다만, 직원의 적극적인 참여를 이끌어 낼 수 있다는 점에서는 긍정적으로 생각됩니다.

이 이야기를 다른 사람들하고 좀 했더니, 주석 라인수를 생산성 기여도에 그렇게까지 많이 반영하는 것은 무리가 있지만, 가중치와 결합된 마일리지 체계를 도입해서 포상을 하면 긍정적일 수 있겠다는 데는 모두들 동의를 하더군요.

문서와 코드의 일치는, 언제나 문제가 되면서도 좀처럼 해결이 되지 않는 부분입니다. 이런 부분을 해결하기 위한 바람직한 방법을 항상 고민할 필요가 있다고 생각합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
미투데이로 한마디트위터로 한마디
트랙백 주소 :: http://www.buggymind.com/trackback/244 관련글 쓰기
  • Developer Capacities – Comment or not comment

    Tracked from Bug Inside | 2009/10/07 19:08 | DEL

    (특히) 팀으로써 소프트웨어를 개발하다보면 주석을 잘 달라는 이야기를 자주 듣는다. 하지만 반대로 주석이 필요없는 코드를 짜라는 이야기도 어렵지 않게 들을 수 있다. 얼핏 생각하기엔 서로 모순되는 주장 같기도 한 이 가이드들에 대해 이해해보고, 또 좋은 주석을 달기 위한 팁과 고려 사항들까지 일부 정리해보도록 하겠다. 주석의 역사 이야기를 시작하기 전에 주석에는 어떤 종류가 있는지부터 명확히 해야 하는데, 주석의 역사에서 시작하는 것이 자연스러울듯...

  • 정동인 | 2009/09/23 09:27 | PERMALINK | EDIT/DEL | REPLY

    안녕하세요. 블로그 잘 보고 있습니다.
    주석을 잘 다는게 코드를 잘 짜는거라고 배웠다가, 또 어딘가에서는 (어디서였는지 기억은 안나네요)
    주석이 필요 없는 코드를 짜라 (의미가 분명한 코드를 짜라는 거겠죠?)고 해서
    그렇게 믿고 주석을 최대한 안달려고 애쓰고 있는데,
    주석을 최소한으로 다는 것과 최대한으로 다는 것은 이상과 현실의 차이일까요? 아니면 케이스에 따라 다르게 생각해야 하는 걸까요?
    항상 막연하게 궁금해 했던 문제인데, 포스트를 보고 질문드려 봅니다.

    • 낭만고양이 | 2009/09/23 10:30 | PERMALINK | EDIT/DEL

      저는 어떻게 생각하냐면... 주석은 문서의 일부라고 생각합니다. 실제로 많은 분들이 주석에서 생성된 Javadoc을 보고 코딩하고 있구요. 문서와 코드 간의 불일치는 반드시 해소되어야 합니다. 그리고 문서는 코드의 현 상태를 반드시 반영해야 합니다. 저는 Java SE의 Javadoc 다큐먼트가 모든 프로젝트 결과물 문서가 갖추어야 할 이상적인 모습이라고 생각합니다. 특히 코드를 보여주면 안되면서도 그 사용자가 우아하게 통합할 수 있는 라이브러리를 디자인하는 경우에는요.

      협업을 통해 프로그램을 개발하는 경우에는 주석보다는 '의미가 분명한 코드'가 더 효과적일 수 있습니다. 하지만 개발 결과물을 배포하는 시점에서는 좀 다르게 생각해 봐야 한다는 뜻입니다.

  • 이복연 | 2009/10/05 15:05 | PERMALINK | EDIT/DEL | REPLY

    안녕하세요. 링크따라 들어왔다가 덧글 중 흥미있는 주제가 있어 한 자 남기고 갑니다. ^^

    일단 주석을 잘 분류하는 것부터 이야기해야할 것 같습니다.
    주석에는 interface 를 설명하는 주석이 있고, implementation 을 설명하는 주석이 있습니다. 전자는 쉽게 말해 Javadoc, Doxygen 등의 툴을 돌리면 API Specification 같은 문서로 뽑혀져 나오는 주석을 말하고, 후자는 소스 코드를 직접 들여다 보여야만 보이는 주석들이죠.

    100%는 아니지만, 주석을 최대한 상세히 달라고 할 때는 interface 설명을 언급하는 것이고, 주석이 필요 없는 코드를 짜라는 것은 implementation 설명을 언급합니다.

    '주석이 필요 없는 코드'를 interface 설명에 갖다 붙이자면, 주석을 보지 않더라도 API 를 쓰는데 오해가 없도로 명확한 API 를 만들라는 의미 정도가 되겠지요. 클래스명/함수명/입력 인자의 이름/순서/출력 결과의 의미 등이 직관적이고, 적어도 같은 도메인 기술에 익숙한 개발자들 사이에서는 널리 통용되는 패턴을 따르라는 정도로 받아들이시면 됩니다.

    그리고 '주석을 잘 단 코드가 좋은 코드'를 implementation 설명에 접목시키면 이정도가 되겠습니다. 구현 코드 중 알고리즘 최적화를 위해 일부러 직관적이지 코드를 작성했을 때, 동작 검증을 위해 임시 코드를 넣어놨을 시, 어쩔 수 없는 외부 종속성 등의 이유로 비합리적인 설계를 쓸 수 밖에 없는 경우 등.. 추후 다른 사람이 봤을 시 이해가 안되거나 잘못된 코드로 비춰지기 쉬운 부분에 대해 배경 설명과 함께 유지보수를 위한 가이드 같은 것을 잘 달아 놓으라는 뜻 정도가 됩니다.

    케이스는 더욱 다양하게 있겠지만, 대강 이런 기조로 이해하시면 큰 무리가 없으리라 생각됩니다. ^^

  • 종달 | 2009/12/21 12:38 | PERMALINK | EDIT/DEL | REPLY

    주석이 중요하단점을 근례에 들어서 많이 느끼고 있습니다..
    예를들어 한참전에 만든 코드를 다시 확인하려는데 이해못하는경우와, 다른이의 코드를 분석하는데 주석이 없어서 이해하는데 시간이 걸리는경우...
    전자의 경우 이전에 자신이 직접 만들어서 스타일이 확바뀌지 않는이상 이해하는데 어려움은 없습니다만,
    후자는 예기가 달라지는거죠

성함
비밀번호
홈페이지 비밀글로
< PREV |  1  |  ...  18  |  19  |  20  |  21  |  22  |  23  |  24  |  25  |  26  |  ...  223  |  NEXT >