표준 코드 검토에는 무엇이 포함됩니까?


19

우리 회사에서는 코드를 작성하는 사람이 어떤 기능을 구현하고 어떤 종류의 버그를 수정했는지에 대한 이메일 토론입니다. 그리고 우편을받는 검토자는 코드를 검토하고 품질 및 코드 편집 방법에 대해 의견을 나눕니다. 표준 코드 검토에는 무엇이 포함됩니까?


10
분명히, 우리는 코드 검토를위한 시간이 없지만 결과적인 실수를 처리 할 시간이 많이 있습니다. 농담했으면 좋겠다.
MetalMikester

답변:


12

내 경험상 대부분의 공식 코드 검토는 쉬우므로 스타일 검사로 진행됩니다. 보아야 할 것들에 대한 체크리스트를 제공하더라도 눈이 쉽게 글래스되기 시작합니다.

단위 테스트 검토가 더 많은 이점을 제공한다는 것을 알았습니다. 내가 함께 일한 대부분의 개발자는 실제로 단위 테스트를 올바르게 수행하는 방법을 모르고 일단 "Aha!" 나머지 코드도 개선되기 시작합니다. 힌트는 다음과 같습니다. 사용자가 무언가를 검사해야하는 경우 단위 테스트가 아니며 디버거에서 실행하기 위해 무언가를 시작하는 경우 단위 테스트가 아닙니다.


LOL, 단위 테스트에 대한 이해는 필수입니다. 좋은 소식은 테스트가 상식이라는 것입니다. 말하는 것보다 알아내는 데 걸리는 시간이 줄어 듭니다. 새로운 언어를 선택하는 데 걸리는 시간입니다.
Job

단위 테스트 범위가 부족할 때 물건에 대한 nitpicking을 발견합니다. 코드 검토에서 단위 테스트를 볼 때 이것이 처음입니다. 내가 단위 테스트는 비즈니스 요구 사항과 합리적인 가장자리 사례를 타격 한 후 나는 --- 선택 NIT하지 않는 경향이있다 (적절한는, 값의 범위에 대한 경계 시험이 널 (null)에 대한 검사)를 참조하면 어떤 당신이 의미하는 것은 아니다 해야 작은 것들에서 선택 . 단지 "증거가 푸딩에있다"는 것입니다. 잘 구성된 단위 테스트를 통과하는 것은 어렵습니다.
Greg Burghardt

6

문제가 무엇인지에 따라 달라지는 경향이 있습니다. 많은 경우 그것은 단순한 고무 스탬프입니다. "문제가 무엇인지, 여기이 줄을 보라. 무엇이 잘못되고 있는지, 여기에 내가 고 쳤던 곳이있다." "그래, 그건 분명하다. 가서 확인 해봐."

그러나 더 관련있는 일이 진행될 때 일반적으로 다음과 같이 진행됩니다.

  • TortoiseSVN에서 수정 사항 확인을 실행하고 변경된 파일 목록을 가져옵니다.
  • 검토자를 사무실로 가져 오십시오.
  • 버그 추적 시스템의 CR을 참조 용으로 열어서 문제를 설명하십시오.
  • TortoiseSVN의 파일 목록을 아래로 내려 BeyondCompare 에서 각 파일을 열어 변경 사항을 봅니다.
  • 검토자가 변경 사항을 이해하지 못하면 수행 한 작업과 이유를 설명하십시오.
  • 검토자가보기에 좋지 않은 것을 알 수 있습니다. 그렇다면 변경 여부에 대해 동의 할 때까지 논의하십시오. (간단한 변경이 필요한 경우 BeyondCompare 내에서 파일을 편집 할 수도 있습니다.)
  • 변경 한 경우 다시 컴파일하여 빌드하십시오!
  • 수정 프로그램이 실제로 작동하는지 검토 자에게 보여주기 위해 프로그램을 실행하십시오.
  • 체크인하십시오.

4

IMO, 코드 검토는 기능이나 버그와 관련이 없지만 코드의 품질과 코드에 중점을 둡니다.

따라서 동료 옆에 앉아서 상황에 관계없이 코드를 설명하거나 코드를 가져 와서 처리하게하십시오.

모든 사람이 동일한 표준에 따라 프로그래밍 할 때 그리고 프로세스의 일부를 자동화하기 위해 fxCop와 같은 도구를 사용하는 경우 도움이됩니다.


2

개발자가 검토 자와 함께 앉아 코드를 한 줄씩 설명하는 코드 검토를 선호합니다. 종종 개발자는 검토자가 아직 보지 못했을 수도있는 설명을하는 데 문제가있을 수 있습니다. 이것이 제가 선호하는 이유입니다. 또한 코드를 보낸 곳에서 코드를 검토하여 직접 읽고 주석을 작성하지만 주석이 더 길어지는 경향이 있습니다. 나에게 다시 설명하고 2 ~ 3 라운드 후에 우리는 함께 모여서 내가 의미하는 바를 화면에서 지적하고 개발자는 "오 그래 이제 나는 그것을 본다"고 진지한 토론이 적고 생산성이 떨어집니다. 더 많이, "너는 이것을 잘못했다."

또한 코드 검토에서 표준을 시행하는 것이 중요하지만 표준에 초점을 맞추지 않아야합니다.

그러나 코드 검토자가 만족하거나 관리자 (개발자가 아님)가 자신을 기각 할 때까지 (코드 검토 자도 잘못된 경우) 코드가 프로덕션으로 전송되지 않습니다. 이는 코드 검토자가 최종 코드를 푸시하기 전에 승인하지 않으면 부가 가치가없는 관료적 프로세스 일뿐입니다.


나는 항상 검토 피드백으로 그가하는 일을 개발자에게 맡기라고 제안합니다. 검토자는 반드시 가장 잘 알 필요는 없으며 계약이 필수 인 경우 검토자를 교육하기 위해 상당한 시간을 투자해야 할 수도 있습니다. 그래도 선임 / 리드 개발자의 최종 '통합'확인을 고려합니다.
Joppe

0

먼저 코딩 표준이 필요하며 이는 단순한 구문 이상의 것입니다. 사람들이 회사에서 시작할 때는 코딩을 시작하기 전에 가능한 한 회사의 지침을 배워야합니다 . 검토 과정에서 모든 종류의 위반이 발견되면 다음과 같은 가능성이 높습니다.

  • 시간 제약으로 인해 고정되지 않음
  • 지침이 가치있는 것보다 더 성가신 것으로 밝혀졌습니다.

지침은 이해가되어야하며 위반을 찾고 가능한 한 쉽게 리팩토링 할 수있는 적절한 툴링이 있어야합니다. 항상 지침의 목표와 코드 검토를보십시오

내 마음의 목표는 코드를 가능한 한 균일하게 만들고 유지 관리 및 가독성과 관련된 문제를 찾는 것입니다. 두 번째 목표는 특정 소프트웨어를 사용하여 더 많은 사람들이 속도를 높일 수 있도록하는 것입니다.

내 마음에 지침은 예를 들어 다음과 같이 존재할 수 있습니다.

  • 일반 구문 및 코딩 지침 (이미 존재하는 것을 선택하고 자동으로 확인하는 툴링 사용)
  • 적절한 예외 처리
  • 적절한 로깅
  • 언어에 대한 패러다임의 올바른 사용 (OOID 용 SOLID)
  • 구성 요소 간의 종속성을 명확하고 잘 알고 있어야합니다 (NDepend와 같은 도구 사용).
  • 작업 빌드 스크립트
  • 설명서 제시 (개발자 시작, 설치 매뉴얼)
  • 사용할 내부 라이브러리
  • 회사 정책
  • 허용되지 않는 타사 툴링
  • 단위 테스트가 존재하고 실패하지 않음
  • 90 %의 코드 범위
  • ...

이를 통해 코드 검토는 지침에 따라 점검되는 소프트웨어와 다음으로 구성됩니다.

  • 프로그래머와 위반에 대해 토론하다
  • 불필요한 위반을 고치다
  • 필요한 위반 사항에 대한 의견
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.