리뷰에서 개인 을 채점 하는 것은 내가 함께 작업 한 대부분의 성공적인 시스템에 대한 것입니다. 그러나 제가 20 년 넘게 달성하려는 목표는 버그를 줄이고 엔지니어 당 시간당 생산성을 높이는 것입니다. 개인을 채점하는 것이 목표라면 리뷰를 사용할 수 있다고 생각합니다. 나는 노동자 나 지도자로서 필요한 상황을 본 적이 없다.
일부 객관적인 연구 (Fagan 등)와 많은 대중적 지혜는 동료 관계가 버그를 줄이고 생산성을 높이기위한 코드 검토를 촉진 한다고 제안합니다 . 실무 관리자는 관리자가 아닌 근로자로 참여할 수 있습니다. 논의의 요점에 주목하고, 검토자를 만족시키기위한 변경은 일반적으로 좋은 일이지만 필수는 아닙니다. 따라서 동료 관계.
모든 자동화 된 도구 할 수 있습니다 추가 분석이나 판단없이 수락 - 좋은 보풀 C, C ++, 자바있다. 정기적 인 편집. 컴파일러는 findng 컴파일러 버그에 능숙합니다. 자동화 된 검사에서 편차를 문서화하면 자동화 된 검사가 미묘하게 표시되는 것처럼 들립니다. 편차를 허용하는 코드 지시문 (Java와 동일)은 매우 위험합니다 (IMHO). 문제의 핵심을 신속하게 파악할 수 있도록 디버깅에 유용합니다. 문서화되지 않은 50,000 개의 주석 처리되지 않은 코드 블록을 찾는 것이 좋지 않습니다.
일부 규칙은 어리석지 만 시행하기 쉽습니다. 예를 들어 도달 할 수없는 경우에도 모든 스위치 명령문의 기본값입니다. 그런 다음 확인란 일 뿐이므로 일치하지 않는 값으로 시간과 비용을 테스트 할 필요가 없습니다. 당신이있는 경우 규칙을 , 당신이해야 어리 석음을 , 그들은있다 불가분 연결 . 모든 규칙의 이점은 비용이 드는 어리 석음의 가치가 있어야하며 해당 관계는 정기적으로 확인해야합니다.
다른 한편으로, "It runs"는 검토 전에 미덕이 아니며, 검토에서 방어입니다. 개발이 폭포 모델 을 따른다면 복잡한 오류가 발견되고 해결되기 전에 코딩이 85 % 완료 될 때 검토를 수행하려고합니다. 검토가 더 저렴한 방법이기 때문입니다. 실제 생활은 폭포 모델이 아니므로 검토 시점은 다소 예술적이며 사회적 규범에 해당합니다. 실제로 코드를 읽고 문제를 찾는 사람들은 순금입니다. 지속적인 방식으로이를 지원하는 관리는 가격 이상의 진주입니다. 리뷰 는 체크인- 초기 및 자주와 같아야합니다 .
나는 이것들이 유익하다는 것을 알았다.
1) 스타일 전쟁 없음 . 열린 중괄호 가있는 곳은 주어진 파일에서 일관성 검사를 받아야합니다. 모두 같은. 그럼 괜찮습니다. 저두 압입 깊이 **의 **는 탭 폭 . 대부분의 조직은 넓은 공간으로 사용되는 탭에 대한 공통 표준이 필요하다는 것을 알고 있습니다.
2)`비정형
looking
그렇지 않은 텍스트
line up is hard to read
내용을 위해 .`
BTW, K & R은 5 개의 공간을 들여 쓰기 했으므로 권위에 대한 호소는 가치가 없습니다. 일관성을 유지하십시오.
3) 검토 할 파일의 줄 번호가 변경되지 않은 공개적으로 사용 가능한 파일의 사본을 검토하기 전에 72 시간 이상 지적해야합니다.
4) 즉시 디자인이 없습니다. 문제가 있거나 문제가 있으면 해당 위치를 기록하고 계속 움직이십시오.
5) 개발 환경에서 모든 경로를 통과하는 테스트는 매우 좋은 아이디어입니다. 방대한 외부 데이터, 하드웨어 리소스, 고객 사이트 사용 등을 요구하는 테스트는 비용이 많이 들고 철저하지 않은 테스트입니다.
6) 작성, 표시, 편집 등의 도구가 있거나 개발 초기에 작성된 경우 ASCII가 아닌 파일 형식을 사용할 수 있습니다. 이것은 개인적인 편견이지만 지배적 인 OS가 1 기가 바이트 미만의 RAM으로 자체적으로 벗어날 수없는 세계에서 10 메가 바이트 미만의 파일이 왜 필요한지 이해할 수 없습니다. ASCII 또는 기타 상업적으로 지원되는 형식 이외의 형식. 그래픽, 사운드, 동영상, 실행 파일 및 함께 제공되는 도구에 대한 표준이 있습니다. 일부 객체의 이진 표현을 포함하는 파일에 대한 변명은 없습니다.
릴리스 된 코드의 유지 관리, 리팩토링 또는 개발을 위해 한 그룹의 동료가 다른 사람의 검토를 사용 하여 디스플레이에 앉아 오래된 체크인 과 새로운 체크인을 분기 체크인의 게이트웨이로 사용했습니다. 나는 그것을 좋아했다, 그것은 싸고, 빠르고, 비교적 쉬운 일이었다. 코드를 미리 읽지 않은 사람들을위한 연습은 교육용이지만 개발자의 코드를 거의 개선하지는 않습니다.
지리적으로 분산되어 있다면 다른 사람과 대화를 나누면서 화면에서 차이점을 보는 것이 비교적 쉽습니다. 여기에는 변화를보고있는 두 사람이 포함됩니다. 문제의 코드를 읽은 더 큰 그룹의 경우 여러 사이트가 한 방에있는 것보다 훨씬 어렵지 않습니다. IMHO는 공유 컴퓨터 화면과 스 쿼크 박스로 연결된 여러 개의 방이 잘 작동합니다. 사이트가 많을수록 회의 관리가 더 필요합니다. 촉진자로서의 관리자는 여기에서 보관할 수 있습니다. 자신이없는 사이트를 계속 폴링해야합니다.
한 시점에서 동일한 조직은 회귀 테스트로 사용되는 자동화 된 단위 테스트를 수행했습니다. 정말 좋았습니다. 물론 우리는 플랫폼을 바꾸었고 자동화 된 테스트는 뒤쳐졌습니다. Agile Manifesto가 지적한 것처럼 프로세스 나 도구보다 관계가 더 중요합니다 . 그러나 일단 검토를 받으면 자동화 된 단위 테스트 / 회귀 테스트는 좋은 소프트웨어를 만드는 데있어 다음으로 중요한 도움이됩니다.
"해리가 샐리를 만났을 때"에서 말하는 것처럼, 요구 사항에 따라 테스트를 수행 할 수 있다면 , 그녀가 가진 것을 갖게 될 것입니다!
모든 리뷰에는 코딩 위의 수준에서 요구 사항과 디자인 문제를 포착하기 위해 주차장 이 있어야 합니다 . 일단 주차장에 속하는 것으로 인식되면 검토에서 논의를 중단해야합니다.
때로는 코드 검토가 하드웨어 설계의 회로도 검토와 같아야한다고 생각합니다. 완전히 공개적이며 철저한 자습서, 프로세스의 끝, 빌드 및 테스트 후 게이트웨이입니다. 그러나 물리적 객체를 변경하는 것은 비용이 많이 들기 때문에 회로도 검토는 무겁습니다. 소프트웨어의 아키텍처, 인터페이스 및 문서 검토는 아마도 무거울 것입니다. 코드가 더 유동적입니다. 코드 검토는 더 가벼워 야합니다.
많은 방법으로 기술은 특정 도구에 대한 것만 큼 문화와 기대에 관한 것이라고 생각합니다. 마음을 즐겁게하고 마음에 도전하는 모든 " Swiss Family Robinson "/ Flintstones / McGyver 즉흥 연주를 생각하십시오. 우리는 우리의 물건이 작동하기를 원합니다 . 1960 년대 AI 프로그램에 의해 어떻게 추상화되고 자동화 될 수있는 "지능"이 존재하는 것 이상으로 그 길은 하나도 없습니다 .