모든 코드를 검토해야합니까?


18

현재 개발 프로세스를 수정 중이며 커밋 피어의 100 %를 검토 해야하는지 궁금합니다.

코드 검토에 대한 경험은 무엇입니까?

  • 당신은 그들에게 "많은"시간을 보내는 경향이 있습니까 (예 : 하루에 1/2 시간), 아니면 최대 5/10 분 동안 탈지합니까?
  • 하루 / 주 / 스프린트 / 프로젝트 당 고정 된 시간이 있습니까?
  • 가장 중요한 것은 코드의 100 %가 피어 리뷰 대상이되어야하는지 또는 100 %가 필요하지 않다고 생각 하는가?

20 %의 노력으로 80 %의 코드를 터치하십시오. 돈으로 살 수있는 최고의 자동화 도구에 투자하십시오.
Job

2
자동화 된 도구는 훌륭하지만 모든 테스트를 최신 상태로 유지할 시간과 리소스가 없다면 쓸모가 없습니다.
Kieren Johnstone

답변:


19

각 스토리마다 '코드 검토'작업이 있습니다. 해당 스토리의 개발에 이상적으로 관여하지 않는 사람은 해당 스토리와 관련된 모든 코드 변경 사항을 검토합니다. 잘 작동한다.

많은 시간? 그리 많지는 않지만 코드의 양에 달려 있습니다. 명백한 오류, 오타, 기본 논리 온 전성 검사, 포착되지 않은 예외 등을 찾고 있습니다.

버그를 발견하는 품질 단계이므로 일부 가치가 있습니다. 시간을 할당하는 것이 최선의 방법이 아닐 수도 있습니다. 무언가가 상당히 복잡한 경우 코드를 검토해야합니까?

그건 그렇고, 다른 사람이 코드 검토를 수행하는 것이 중요합니다.


3
"그런데 다른 사람이 코드 검토를하는 것이 중요합니다."라는 질문은 코드를 작성하는 사람이 코드를 검토해야한다는 것을 암시합니까? 그것이 어디에 있습니까? 나는 그것을 고치고 싶다 :)
Simeon

4
아니, 그것은 포괄적이었고 그것이 중요하다고 말했습니다
Kieren Johnstone

5
@Simeon 실제로 소유자가 자신의 코드를 검토 할 수 있다는 잘못된 개념입니다. 그것은 전체 동작을 훼손
톰 종복

5
@TomSquires : 정확합니다. 오랫동안 코드 작업을 해왔을 때, 명백한 결함에 대해 "맹인"이 될 수 있습니다. 왜냐하면 코드가 무엇인지 대신에 그것이 무엇인지를보기 때문입니다. 이러한 문제는 이전에 코드를 본 적이없는 사람이 쉽게 찾을 수 있습니다. 저자도 같은 문제가 있으며 책을 교정하지 않고 발표하지 않는 것처럼 코드를 검토하지 않고 발표해서는 안됩니다. 코드 검토를 수행하면 다른 이점도 있습니다. 예를 들어 팀 구성원간에 지식을 이전하는 것이 좋습니다.
hammar

@hammar - 그들이 유용하게 그것을 검토 할 수 있다는 그것과 매우 밀접하게 익숙해 질 수있는 시간이 코드를 작성하지 않은 사람을 찾기 위해 노력 물론, 도전이다
피터 Ajtai

12

리뷰에서 코드의 양이 얼마나 많은지에 대한 더 중요한 문제는 리뷰가 얼마나 효과적인지입니다. 리뷰에서 문제가 거의 또는 전혀 발견되지 않으면 전체 범위에 도달하는 것은 쓸모가 없습니다.

먼저 리뷰의 효과를 높이고 적용 범위를 결정하십시오.

코드뿐만 아니라 디자인에서도 검토를 수행해야합니다.



또한 리뷰는 테스트 및 도구를 대체하지 않습니다.

  • 리뷰는 실행 코드를 건조시킬 수 있습니다
  • 리뷰는 코드 분석을 포함 할 수 있습니다
  • 리뷰는 재사용 및 가독성 검토
  • 리뷰는 효율성의 일부 측면을 조사 할 수 있지만 실제 실행 시간 측정 및 병목 현상 발견을 대체하지는 않습니다.
  • 정적 코드 분석을위한 도구가 있습니다
  • 코딩 규칙을 테스트하기위한 도구가 있습니다. 검토 시간을 낭비하지 마십시오.
  • 습식 실행 코드의 단위, 시스템 및 통합 테스트
  • 단위, 시스템 및 통합 테스트 테스트를 자동으로 반복 할 수 있으며 일반적으로 코드 검토는 일회성입니다.
  • 단위 테스트는 높은 코드 적용 범위를 가져야하며 주요 성공 시나리오와 최종 조건을 모두 테스트해야합니다. 코드 검토는 부분적으로 만 수행 할 수 있습니다.
  • 통합 테스트는 단위 또는 시스템이 함께 작동하는 능력을 테스트합니다. 코드 검토는이를 대체 할 수 없습니다
  • 전체 시스템의 시스템 테스트 기능 테스트, 코드 검토는 이것을 대체 할 수 없습니다



매월 (또는 스프린트 당) 사전 설정 시간을 검토하여 검토하십시오. 다음과 같은 휴리스틱을 사용하여 다음 전용 슬롯에서 검토 할 코드를 선택하십시오.

  • 보고 된 알 수없는 버그가 포함 된 코드
  • 최근 코드에서 버그가 발견되었습니다.
  • 성능 문제가있는 코드 (병 목)
  • 새로운 개발자가 작성한 코드
  • 이전에 익숙하지 않은 사람이 최근에 업데이트 한 레거시 코드
  • 새로운 분야의 코드
  • 새로운 개발자가 배우고 자하는 기존 코드
  • 복잡한 문제를 해결하는 코드
  • 분석 도구에 의해 복잡한 것으로 식별 된 코드

또한 작성자가 아닌 코드 (또는 디자인 또는 테스트)를 검토하고 있습니다.



다음과 같은 독서 자료를 추천합니다.

선택적 숙제 없음 리뷰
동료 코드 검토의 최고의 비밀


5

때에 따라 다르지.

소프트웨어가 수행하는 작업에 따라 다릅니다.

  • 전자식 심박 조율기 또는 우주 왕복선을 제어한다면 확실히 그렇습니다.

  • 만약 그것이 프로토 타입이라면, 아마도 아닐 것입니다.

또한 리소스의 수준, 개발자의 경험 및 코드 검토에서 원하는 내용에 따라 다릅니다. (다른 사람의 코드를 검토하는 일반 개발자는 아마도 스타일 문제를 발견하고 미묘한 알고리즘 버그를 놓칠 것입니다 ... 특히 코드 검토가 번거로운 일이라는 점을 명심하십시오.)

내 조언은 정확성이 중요하고 발견되지 않은 오류 비용이 높은 코드에 대한 코드 검토 노력을 절약하는 것입니다.


5

먼저 다음 질문에 답해야합니다. 왜 코드를 검토합니까?

이 답변을 통해 어떤 코드를 검토해야하는지 파악할 수 있습니다.

일부 코드 검토는 테스트가 수행하거나 수행 한 작업을 정확하게 수행합니다. 그것이 리뷰의 목표라면, 테스트가 거의 없다면 100 %에 가까워지는 것이 좋습니다. 그러나 테스트 도구를 사용하면 모든 코드를 검토 할 필요가 줄어 듭니다.

대부분의 좋은 리뷰는 지식을 공유하고 리뷰에서 개발자 (코드를 작성한 사람 또는 코드를 검토 한 사람)의 기능을 향상시키는 데 중점을 둔 것으로 보입니다. 이를 검토의 주된 이유로, 코드의 100 %를 검토하는 것은 과도 할 수 있습니다.


3

완벽한 세상에서, 요구 사항 사양에서 사용자 설명서, 테스트 케이스에 이르기까지 적어도 한 사람이 저자가 검토하고 모든 사람을 동료가 검토합니다. 그러나 간단한 책상 점검이라도 검토하는 데 시간과 비용이 소요됩니다. 즉, 검토 대상 및 검토시기를 선택해야합니다.

검토 할 항목의 우선 순위를 정하고 검토 방법을 선택하고 적절한 수준의 세부 정보를 사용하여 최대한 검토하려고합니다. 우선 순위 결정은 요구 사항을 검토해야하고, 설계 및 생산 코드를 검토하고, 테스트 사례를 검토해야한다는 등의 인공물 유형을 기반으로 할 수 있습니다. 이 범위 내에서 고위험 또는 고 가치 구성 요소가 검토에서 우선 순위를 받거나보다 공식적인 검토를 받도록 지정할 수도 있습니다.

지금까지는 구성 요소의 우선 순위가 어느 정도인지 다시 설명합니다. 내가 검토하는 데 10-15 분을 보냈던 시간이 있었고 여러 사람이 코드를 개별적으로 읽은 다음 30-45 분 지속되는보다 공식적인 검사 프로세스를 수행하기 위해 방에 갔다 (크기에 따라 다름) 모듈).

결국 시간, 비용, 범위 및 품질 사이의 균형입니다. 모든 것을 가질 수 없으므로 가능한 곳을 최적화해야합니다.


3

제안으로, 검토를 전혀 계획하지 않는 경우 검토 범위와 목표에 대한 공유 지침을 작성하여 검토로 인해 팀 구성원간에 불필요한 마찰이 발생하지 않도록하십시오.

일관된 팀은 더 나은 프로젝트를 구축합니다. 사람들은 말도 안되거나 완벽 요청에 대한 관계를 잃을 수도 있습니다. 항상 이런 사람이나 다른 사람에 대해 불평하고 다른 사람들에게 버그를 범하는 사람은 항상 있습니다.


2

피어 리뷰를 위해 하루에 한 시간을 예약하지만 항상 필요한 것은 아닙니다. 우리의 코드베이스는 수십 개의 제품에서 공유됩니다. Google의 정책은 한 제품에 고유 한 코드를 조금만 변경해도 검토없이 체크인 할 수 있다는 것입니다. 보다 복잡한 단일 제품 변경에는 검토가 필요하지만 동료에게 책상에 전화를 걸어 한 번 비명을주는 것처럼 비공식적 일 수 있습니다. 공유 코드를 변경하려면 다른 제품의 개발자를 포함하여보다 공식적인 검토가 필요합니다. 우리의 정책은 내가 일했던 다른 회사들과 비교하여 상당히 좋은 균형을 이루고 있다고 생각합니다.

중심 역할이 적은 일부 동료보다 일일 검토에 더 많은 시간을 소비하지만 검토 정책 이전에 개발자가 버그를 추적하는 것보다 더 많은 시간을 쉽게 낭비 할 수 있기 때문에 부당한 시간으로 생각하지 않습니다. 소개 된 다른 제품에.


그게 평균입니까? 복잡한 검토를 한 시간으로 제한하는 것은 이상해 보입니다. 검토 할 것이 많지 않으면 하루에 한 시간이 어떻게 작동하는지 알 수 없습니까?
Kieren Johnstone

그것은 제한이 아닙니다. 나는 다른 방법이 아니라 시간이 얼마나 걸 렸는지에 따라 시간을 정했다. 나는 보통 한 시간에 2 리뷰를 할 수 있습니다. 그보다 오래 걸리면 체크인이 너무 크거나, 사전에 충분한 디자인 검토를받지 못하거나, 코드 검토 도구가 너무 번거 롭습니다. 코드 검토는 재 설계가 아닌 점검입니다.
Karl Bielefeldt

2

우리는 코드에 대해 100 % 리뷰를했습니다. 테스트, 특히 100 % 코드 범위 테스트보다 훨씬 저렴합니다. 우리는 그들에게 너무 많은 시간을 소비하지 않고 하루에 한 시간 이상을 검토하면 생산성이 떨어집니다. (30 분은 많지 않습니다 ).

프로세스를 제로화 할 때 메모를하십시오. 무엇을 찾았습니까? 품질 관리팀은 나중에 무엇을 찾았나요? 고객이 찾은 것은 무엇입니까? 그 버그가 왜 당신을 탈출 했습니까?


7
자동 테스트보다 저렴하게 검토하는 방법은 무엇입니까? 테스트를 한 번 작성하고 테스트를 한 번 검토하고 안정적인 테스트 스위트를 사용한다고 가정하면 모든 유형의 검토 (프로젝트 수명 동안)를 수행하는 것보다 훨씬 적은 시간과 비용으로 테스트를 실행해야합니다. 또한 100 % 코드 적용 범위를 목표로하는 것은 리소스 낭비이므로 테스트 시간 / 비용이 더 많이 소요될 수 있습니다. 또한 30 분 동안 검토를합니다. 30 분 동안 모듈을 검토 할 수 있지만 처음에 코드를 읽고 시스템에서의 역할을 이해하고 주석을 달릴 준비가되어 있습니다.
토마스 오웬스

@MSalters의 주장은 들어 본 적이 없지만, 30 분만에 회의적입니다. 검사가 자동화 된 단위 테스트보다 비용 효율적이고 NASA 인 경우가 한 곳 밖에 읽지 못했습니다. 이 경우 코드를 수동으로 검사하는 것이 더 저렴했기 때문에 결국 단위 테스트를 완전히 중단했습니다. 물론 NASA는 여전히 12 : 1의 테스터 : 개발자 비율을 가지고 있었기 때문에 다른 많은 테스트도하고있었습니다.
Michael

2
@Thomas Owens : 단위 테스트는 간단한 버그를 찾습니다. 비싼 버그는 여러 유닛이 예상치 못한 방식으로 결합 된 버그입니다. 또 다른 종류의 버그는 코너 케이스를 놓친 것입니다. 사례를 놓친 개발자도 단위 테스트를 작성하지는 않지만 두 번째 눈을 보게 될 것입니다.
MSalters

@MSalters 이것이 자동화 된 통합 및 시스템 테스트와 단위 테스트를 작성하는 이유입니다. 실제로 수동으로 수행해야하는 유일한 테스트는 승인 테스트입니다. 그리고 작성시 테스트를 검토하면 가장 중요한 사례를 테스트하는 데 도움이됩니다.
Thomas Owens

2

팀 구성 및 구현 아이디어 공유를 위해 정기적으로 코드를 검토합니다. 이런 식으로 동료들로부터 많은 것을 배울 수 있습니다.


이것은 몇 가지 이점 만 나타냅니다. 오류를 찾는 것이 중요하다고 생각하십니까? 그렇다면 얼마입니까?
JeffO

물론 오류를 찾는 것이 중요하지만 더 큰 이점은 코드 검토에서 얻은 장기 지식입니다. 아마도 버그는 미래에 방지 할 수있는 잘못된 접근 방식에 의해 만들어진
코더

2

체크인 할 때마다 피어 코드 검토가 필요합니다. 동료가없는 경우 체크인 후 검토를 준비합니다. 검토자는 소스 제어 체크인 주석에 표시됩니다.

이것들은 많은 시간이 걸리지 않으며, 동료들 사이에서 이루어지기 때문에 독성이있는 성인-어린이 측면이 없습니다.


2

코드 검토는 IMO가 필요합니다. 99.999 ... %의 시간이 항상 옳지는 않을 수도 있으므로 정확한지 확인해야합니다. 정해진 시간이 있습니까? 아니요. 그러나 코드를 확인하는 데 시간이 걸립니다. 보통 나는 동료에게 같은 일을합니다.


1

코드 검토는 어려워 보일 수 있지만 올바르게 수행하면 유용한 도구입니다. 설계 및 구현 실수에 대한 첫 번째 방어선이됩니다. 배치 한 모든 기능에 대해 코드 검토를 수행하지 않으면 최대한 빨리 시작해야합니다.

동료 검토에 소요되는 시간은 코드 검토를 수행하고 응답하기 위해 총 예상 개발 시간의 5-10 %를 남겨 두는 것이 좋습니다.

올바른 코드 검토를 수행하는 데 도움이되는 백서가 있습니다. 단계별 가이드이며 직면 할 수있는 일반적인 함정과 그 해결 방법에 대해 설명합니다. 당사 웹 사이트에서 다운로드 할 수 있습니다 .

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