그 연습에서 왔을 때 새로운 장소에서 코드 리뷰를 처리하지 않는 방법은 무엇입니까?


33

새 회사의 팀에는 코드 검토 프로세스가 없습니다.

필자는 문화를 코드로 검토하는 회사에서 왔으므로 다른 사람이 코드를 검토하지 않고도 코드를 커밋하는 것이 불편하다고 느낍니다.

나는 코드 검토가 품질을 향상시키고 시간을 절약하는 방법이라고 생각합니다.

  • 코드 검토가 시간 낭비가 아니라 시간 절약임을 어떻게 알 수 있습니까?
  • 단위 테스트가있는 경우 코드 검토를 건너 뛸 수 있습니까?

오프 사이트 자원 권장 사항은 도움말 센터 마다 주제를 명시 적으로 벗어납니다 . 참조 meta.programmers.stackexchange.com/questions/6483/...을
모기

1
여기에 물어보십시오. meta.codereview.stackexchange.com 그리고 내 마음에,이 질문은 프로그래밍과 관련된 개념을 알고 싶어하기 때문에 여기에서 질문 할 수 있습니다.
xqMogvKW

1
나는 또한 코드 검토에 대한 확고한 신자이지만 코드 검토가 영원한 전쟁으로 바뀌고 코드 검토 도구 (gerrit)가 열정적 인 토론으로 일부 토론 보드의 나쁜 아바타로 바뀌는 나쁜 경험을했습니다. 특대 자아. 이것이 어떤 회사에서 일어날 것인지, 또는 이것이 사람들의 성숙의 문제인지 확실하지 않습니다.
Joel

"코드 검토가 필수입니까?"라는 질문에 대한 제목이 있습니다. 회사 규모, 개발자, 수익 등 수많은 요인에 따라 달라질 수 있으므로 너무 광범위하고 대답 할 수없는 질문입니다. 좋은 프로그래밍 관행에 대한 열망과 열정을 어떻게 통합하고 마케팅 할 수 있는지에 대해 고민하고 싶습니다. 공개 사이트의 소프트웨어 기술 (이력서, linkIn, github, twitter 등) 관심있는 대상과 원하는 대상을 게시하여 원하는 사람들이 볼 수 있도록하십시오. 이 '미래'물론 조언, 따라서 코멘트입니다 :)
마이클 듀런트

3
이것이 "오프 사이트 리소스 권장 사항"인 방법을 알 수 없습니다. 그것은 나에게 옳은 이유처럼 들리지 않습니다.
nyuszika7 시간

답변:


30

단위 테스트가있는 경우 코드 검토를 건너 뛸 수 있습니까?

그런데 왜?

동료 검토의 주요 역할은 버그를 파악하지 않는 것입니다.

예, 잠재적 인 버그와 의심스럽고 버그가 발생하기 쉬운 코드를 식별 할 수 있습니다. 이러한 경우가 종종 발생하지만 때때로 실수를 발견한다고해서 동료 검토가 버그의 존재를 배제 하는 신뢰할 수있는 방법은 아닙니다 . 그것과는 거리가 멀다. 구현 의 기능적 정확성 을 검증하는 것은 올바른 도구가 아닙니다 .

코드 검토는 코드 유지 관리 기능을 강화 합니다. 코드를 제작하기 전에 코드가 깨끗하고 이해할 수 있어야합니다 (저자 만이 아니라).

단위 테스트의 존재는 그것과 완전히 직교합니다. 100 % 코드 적용 범위와 모든 테스트를 통해 완전히 이해할 수없는 코드를 전달할 수 있습니다.

코드 검토는 또한 다른 개발자가 자신의 작업에 익숙해 지도록 도와주는 역할을합니다. 휴일에있을 때 버그 보고서를 처리하거나 처리 할 수 ​​있습니다. 직접 수행 한 작업을 알면 도움이 될 수 있습니다. 작업을 잘 수행하십시오-코드베이스를 일관되게 유지하거나 (앱 전체에서 유사한 패턴과 규칙을 따르십시오) 코드 중복을 피하십시오.

더 넓은 사물 체계에서, 다른 사람의 코드를 읽음으로써 개발자로서 배우고 성장합니다.

단위 테스트는 그 어느 것도 대체 할 수 없습니다. 그렇습니다. 글이 잘 작성되면 문서처럼 읽히기 위해 노력해야합니다. 그러나 이것은 다시 피어 검토를 수행하는 것과 상호 배타적이지 않습니다. 상대적으로 피어 검토의 모든 장점은 여전히 ​​유지됩니다. 동료가 볼 수있는 멋진 단위 테스트가 있다는 사실은 검토 프로세스를 쉽고 편리하게 만듭니다. 중복이 아닌.


4
단위 테스트도 코드 검토를 대체한다고 생각하지 않습니다. 그러나 단위 테스트의 주요 역할은 버그를 잡아내는 것이 아닙니다. 예, 단위 테스트를 작성할 때 잠재적 인 버그를 식별 할 수 있지만 단위 테스트는 나중에 무언가를 변경해야 할 때 버그 가 발생하지 않도록 하기위한 것입니다. 따라서 단위 테스트의 목표는 코드 유지 관리도 유지하는 것입니다.
Doc Brown

2
@DocBrown 사실입니다. 그러나 회귀 버그 잡기는 버그 잡기 범주에도 속합니다. 분명히 이것은 단위 테스트가 일회성 작업이 아니기 때문에 단위 테스트가 동료 검토 (이 측면에서)에 비해 이점 중 하나입니다. 피어 리뷰는 매번 변경 한 후에 전체 코드베이스를 다시 검토하는 것이 불가능하기 때문에이 중요한 측면을 다루려고 시도조차하지 않습니다.
Konrad Morawski

1
@DocBrown-글쎄요 Peer review doesn't even attempt to tackle this important aspect. 정도로. 나는 종종 예를 들어 자신을 지적합니다. "파트너 효과적으로 여기에 같은 논리를 반복하고, 그것은 시한 폭탄 어느 날이 다른 곳에서 변화거야 우리가 여기를 업데이트하는 것을 잊지거야 ...."
콘라드 Morawski

24

코드 검토가 시간 낭비가 아니라 시간 절약을 보여주는 연구 및 통계가 있습니까?

나도 몰라 코드 검토를 사용하고 다른 팀은 그렇지 않은 작업 을 수행하기 위해 동일 하고 현실적인 복잡성을 갖는 두 팀이 필요하기 때문에 그러한 연구를 수행하기도 어렵습니다 . 아마도 같은 문제를 해결해야 할 것입니다 . 이는 창 밖으로 많은 돈을 버리는 것을 의미합니다. 그리고 통계적 관련성을 얻기에 충분할 정도로 실험을 자주 반복해야하는데, 이로 인해 돈이 크게 증가 할 것입니다.

그렇지 않은 회사에 대해 코드 검토를 사용하여 회사의 효율성을 측정하는 경우 효율성을 측정하는 방법과 실제 원인이 무엇인지 확실하지 않습니다. 코드 검토는 더 큰 문화의 일부입니다. 실제로 팀의 효율성을 높이는 부분은 말하기 어렵습니다 (그리고 팀이나 프로젝트의 특성에 따라 결정될 수 있음). 또는이 문화의 존재는 단순히 회사가 더 작거나 더 젊다는 것을 의미 할 수 있으며, 각 회사는 많은 영향을 미칩니다. 또는 코드 리뷰에 기꺼이 제출하면 자존심과의 건강한 거리를 배제하거나 장려 할 수 있습니다.)

그러나 잊지 마십시오. 자신 만의 경험이 있습니다. 그들이 당신을 고용 한 이유의 일부입니다. 따라서 실제로 효율성을 높일 수 있다고 생각하면 (그리고 팀에 실제로 부족한 상황이 발생하면) 명확하게 전달하십시오.

단위 테스트가있는 경우 코드 검토를 건너 뛸 수 있습니까?

아니. 테스트의 중요성을 믿는다면 실제로 테스트를 먼저 검토해야합니다. 그들이 말도 안된다면? 또는 보장 범위가 거칠다면? 아니면 행동보다는 구현을 테스트한다면?


2
테스트 사례에 대한 코드 검토에서 실제로 좋은 지적을했다고 생각합니다. 고맙습니다!
jparkcool

4
"당신이 직접 경험할 수있는 경험"이 +1 인 경우-실제로 코드 검토 작업을 한 적이있는 사람은 일반적인 코드 검토 과정에서 일반적으로 수정 된 품질 문제 수와 지식 이전 정도를 보았어야합니다. 달성했다. 그 경험을 통해 코드 검토에 대한 소수의 주장을 갖지 않아야합니다.
Doc Brown

2
첫 번째 단락과 관련하여 : 동일한 작업을 수행하는 두 팀뿐만 아니라 동일한 기능을 가진 두 팀이 필요합니다. 개인 경험은 이것을 연구하려는 시도로 혼란 스러울 것입니다.
David Wilkins

"만약 그들이 말도 안된다면? 아니면 적용 범위가 거칠다면?" 아니면 그냥 말해 return true;.
Burhan Ali

1
코드 검토에 대한 철저한 처리와 그 사용을 지원하는 연구 및 통계 는 Code Complete의 20 장을 읽으십시오 . 다음은 좋은 요약입니다 : Jeff Atwood의 블로그다른 사람
Mike Partridge

5

내가 찾은 임의의 슬라이드 에서 가져온 것이지만 하드 데이터는 Steve McConnell의 Code Complete 책에서 나옵니다.

코드 리뷰가 유용합니까?

"피어 코드 검토는 코드를 개선하기 위해 할 수있는 가장 큰 일이라고 생각합니다."

http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html 의 코딩 공포의 Jeff Atwood


"개별 검사는 일반적으로 결함의 약 60 %를 포착하는데, 이는 프로토 타이핑 및 대량 베타 테스트를 제외한 다른 기술보다 높습니다."

Steve McConnell, 코드 완성 2 판, 485 페이지

60 %의 수치는 Shull et al 2002의 IEEE 결함 논문에서 발췌 한 것입니다.

"피어 리뷰는 결함의 60 %를 포착합니다"


1
이 문제는 2006 년에 아직 페어 프로그래밍을 완전히 수용하지 않았기 때문에 피어 코드 검토를 일종의 대체물로 생각합니다. 나는 그들이 어떤면에서 비교할 수 없다는 것을 알고 있습니다.
JP Silvashy

3

면책 조항 :이 답변은 나의 개인적인 경험입니다 :)

우리가 유지 관리하는 코드의 코드 검토에 대해 매우 나쁜 경험을했습니다. 우리는 보통 라이너가 하나 밖에없고 검토 할 것이 많지 않기 때문입니다.

그러나 실제 프로젝트에서 나는 좋은 경험을했고, 시험 시간에 트레이너가 내 코드를 정기적으로 검토했으며 더 이상하지 않는 실수를 찾는 데 많은 도움이되었습니다.

그래서 나는 그것이 당신이하는 일, 얼마나 많은 사람들 등에 달려 있다고 말할 것입니다.

또한 코드 검토가 전쟁으로 끝나는 위험은 과소 평가되지 않습니다.


3

코드 검토가 정상적으로 수행되지 않더라도 팀 리더 및 / 또는 동료에게 코드 검토를 요청할 수 있습니다.

검토하기 전에 코드를 잘 작성하고 테스트했는지 확인하십시오.

내가 팀장이었을 때, 나는 새로운 직원들에 대한 코드 검토를하는 데 사용했다. (잠시 후) 나는 코드에서 비판 할 버그 나 다른 것을 찾는 것을 그만 둘 것이며, 그 시점에서 그들과 코드 검토를 중단 할 것이다. 다음과 같은 경우에 발생합니다.

  • 그들은 인터페이스하는 시스템을 배웠고 이에 대한 설명이 필요하지 않았습니다.
  • 그들은 코드를보기 전에 버그가 없어 질 때까지 코드를 디자인하고 테스트하는 법을 배웠습니다.
  • 그들은 코딩 스타일 가이드 라인에 대해 충분히 배웠다.

코드 검토에는 몇 가지 목적이 있습니다.

  • 코드에서 결함 찾기
  • 팀원 간의 지식 이전

팀이 숙련 된 팀원들 사이에서 코드 검토를 건너 뛰도록 선택하더라도 신입 사원의 코드 검토를 수행하는 것이 좋습니다.


2

개발 된 모든 소프트웨어에서 코드 검토를 수행 할 수있는 경험은 없습니다. 응용 프로그램의 범위, 클라이언트 크기 및 회사 규모에 따라 다릅니다. 예를 들어 향후에 더 이상 버전이 구현되지 않을 수있는 간단한 애플리케이션이있는 애플리케이션을 빌드하는 경우 유닛 테스트로 충분합니다. 그러나 더 빠른 성능을 위해 더 나은 방법으로 수행 할 수있는 코드가 짧게 떨어지는 코드를 검토해야하는 응용 프로그램의 성능에 대해 이야기 할 때 다시 코드 검토가 이루어집니다.

코드 검토는 일반적으로 2 명 이상의 개발자로 구성된 팀과 기술 책임자가 응용 프로그램의 품질을 보장하고 향후 개선을 위해 응용 프로그램의 규모를 조정하고 다른 응용 프로그램으로 업그레이드하기 위해 코드 표준을 준수하도록하려는 기술 책임자에서 수행됩니다. 다음 버전.

예를 들어, 현재 많은 CMS 오픈 소스 플랫폼을 보유하고 있으며 이러한 플랫폼은 플랫폼 기능을 향상시키기 위해 때때로 업그레이드를 릴리스하고, 이러한 플랫폼 중 하나를 사용하는 개발자를 상상하며 코어 파일의 하드 코딩, 애플리케이션 작성과 같은 코드 표준을 따르지 않았습니다. 템플릿 파일의 코드를 작성하고이 코드가 프로덕션으로 이동 한 후 클라이언트가 플랫폼을 새 버전으로 업그레이드하려는 경우 해당 플랫폼의 코드 표준에 따라 코딩을 다시 수행하지 않으면 업그레이드되지 않습니다. 여기서는 코드 검토를 수행하지 않고 코드를 프로덕션으로 릴리스하는 것이 심각한 문제가됩니다.

따라서 릴리스 전에 코드 검토를 수행하는 것은 모든 전문 소프트웨어 회사의 필수 요소이며 개발자가 노련한 프로그래머이며 경험이 풍부한 개인 / 매우 소규모 응용 프로그램에만 예외가 될 수 있습니다.


1

코드 검토는 검토 프로세스 자체에서 얻을 수없는 장점이 있습니다. 고품질이지만 짧은 시간 내에 생성 된 코드를 얻는 데는 항상 딜레마가 있습니다. 코드 검토가 없으면 사용자가 직접 수행 할 수 있으므로 짧은 시간 안에 코드를 작성하기위한 품질을 희생 할 수 있습니다. 코드 검토를 통해 코드 품질이 떨어지는 것을 피할 수없는이 검토자가 있습니다. 정확히 원하는 것입니다. 처음에 원하는 품질 코드를 얻는 데 시간을 소비해야합니다. 더 나은 코드를 작성하는 데 소요되는 시간은 디버깅 (또는 그 이상)으로 2 시간이 절약되므로 시간을 절약 할 수 있습니다.

코드 검토가 없으면 자신의 책임이므로 높은 코드 품질을 유지하는 것은 사용자의 몫입니다. 간단한 해결책은 모든 변경 사항을 검토하고 품질 표준에 맞지 않는 사항을 수정하는 것입니다.

이것은 또한 코드 검토가 자아의 충돌로 이어지는 끔찍한 상황을 피합니다. 프로그래머 A는 메소드 X를 사용하고 B는 메소드 Y를 사용합니다 .A가 코드를 작성하면 A는 메소드 X를 사용합니다. 따라서 A는 방법 Y를 사용하여 코드를 다시 작성하지만 B가 코드를 작성하고 A를 검토 한 경우에는 정반대의 상황이 발생했을 것입니다.


0

코드 검토를 옹호하는 사람이라면 실제로 대체 할 것이 없습니다. 불행하고 틀에 박힌 사건은 (A) 실습에 익숙하지 않거나 (B) 코드 검토를 받기 위해 시간과 노력을 바치고 싶지 않기 때문에 코드 검토를 수행하지 않는 작업장입니다. 그 자리에 시스템.

기본적으로 원하는 것을 얻으려면 직장 문화 변화가 필요합니다. 결코 간단하거나 쉽지 않습니다. 작업장을 100 % 설득하더라도 코드 검토가 우수하고이를 채택하려고한다는 사실을 잊지 마십시오. 실제로 새로운 작업 방식으로 전환하려면 상당한 시간, 에너지 및 생산성 투자가 필요합니다. 이 투자는 그 자체로 상환되어야하지만, 단지 지불을 위해서가 아니라 투자를 위해 매입을해야합니다. Roy Osherove의 비디오 "Unit Testing and TDD-How To Appe Appe "을 참조하십시오 코드 검토 채택의 과제는 단위 테스트 채택의 과제와 매우 유사합니다.

그 동안 가능한 한 많이 할 수있는 일을하십시오.

  • 코드 검토의 가치를 보는 다른 개발자가 있다면, 비공식적으로도 서로 검토해보십시오.
  • 교육을 담당하는 멘토 또는 개발자가있는 경우 코드 검토에서 볼 수있는 가치를 설명하고 최소한 경우에 따라 코드를 검토 할 의사가 있는지 물어보십시오.
  • 관리자에게 다른 사람의 코드를 검토하고 싶다고 말하면 시스템을 더 잘 이해하는 데 도움이됩니다.
  • 어느 시점에서 팀장이되면 팀에 대해서만 코드 검토를 로컬로 수행 할 수 있습니다.

이 중 하나의 주요 이점은 시간이 지남에 따라 유지할 수 있다면 주변 개발자가 코드 검토에 주목하기 시작한다는 것입니다. 코드 검토가 기존 문화에 통합 될 수있는 방법을 효과적으로 보여 주므로 문화가 변화하기 시작합니다. 코드 검토가 도움 이되므로 소규모로 증명할 수 있다면 다른 사람과 문화 전체가 모범을 보일 수있는 길이 열릴 것입니다.


-2

걱정하지 마십시오. 새로운 고용주는 코드 검토에 신경 쓰지 않습니다. 다른 사람이 작성한 코드를 확인해도 괜찮다고 말하지 않고 자신의 능력에 대해 자신감을 가지십시오. 곧 다른 사람들의 코드를 검토하는 지루한 과정없이 지내는 법을 배우게 될 것입니다.

다른 사람이 사용하는 스타일 지침 (또는 스타일)을 따르십시오. 경험을 사용하여 주석 달기, 사용할 명명 규칙 등을 결정하십시오.

그런 다음 체크인하기 전에 모든 것을 테스트하십시오. 가장 중요한 것은 올바르게 작동한다는 것입니다.


2
-1 : OP의 새로운 팀이 코드 검토를하지 않는다고해서 그렇게하는 것은 나쁜 생각이 아닙니다. 개발 프로세스의 품질을 향상시키는 데 도움이되는 훌륭한 엔지니어의 표시입니다.
Jørgen Fogh

1
@ JørgenFogh 나는 또한 코드 검토를 지원하고 있지만 코드 검토 가이 특정 개발 프로세스에 도움이 될 것이라고 가정합니다. 이 답변 외에도 코드 검토를하지 않는 이유를 묻습니다. 이유가있을 있습니다. 아마도이 답변에서 알 수 있듯이이 회사는 코드를 살펴볼 필요가없는 사람들을 고용하거나 적어도 그렇게 할 때의 이점은 추가 비용이 들지 않습니다. OP가 시도하지만 아무것도 변경하는 데 운이 없다면, 이것이 다시 답이 될 것입니다.
DoubleDouble

1
이점이 비용이 들지 않을 수 있습니다. 그러나 팀이 코드 검토를 수행하지 않는다는 사실은 그들이해야 할 것인지 아닌지를 알려주지 않습니다.
Jørgen Fogh

4
-1 : "가장 중요한 것은 제대로 작동한다는 것입니다." 이것은 프로덕션 코드와 관련하여 중요한 사항에 대한 근시안적인 시각입니다. 코드는 작성된 것보다 자주 읽습니다. (잘 수행 된) 코드 검토의 가치는 정확성을 확인하는 것 이상입니다. 많은 장점 중에서 코드 검토는 코드를 작성하지 않은 사람에게 코드가 의미가 있는지 확인합니다.
Dancrumb

-2

새로운 고용주가 코드 검토에 대한 아이디어를 좋아하지 않는다면 구식 명령 및 제어 유형 방법론과 부정적인 연관이 있고보다 현대적이고 민첩한 유형의 관행을 목표로하기 때문일 수 있습니다. 이 경우 쌍 프로그래밍이라는 개념에 더 개방적 일 수 있으며, 이는 동일한 이점을 많이 제공하며보다 역동적이고 현대적인 관행으로 널리 알려져 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.