코드리뷰에서 가장 중요한 두 가지
Test-Driven Development (테스트가 기본이다.)
우리가 구현해야 할 요구사항이랑 구현을 분리하는 것. 그래서 문제가 무엇인지 알았으면, 구현하기 전에 테스트 먼저 짠다. '아 이게 제대로 동작하려면 ~input 일 때 이렇게 돼야 하지?, 항상 input이 이쁘게 들어올리가 없으니까(corner case, edge case) 이렇게 하겠지?' 이런걸 쭉 만든다. 그걸 먼저 만들지 않고 코딩먼저 하면 내가 나를 속이게 된다. 내 코드에 맞는 테스트만 생각이 난다.
가장 중요한 것. comment 많이 써라!
테스트는 실행 가능한 문서다.
code commit하기 전에 항상 test 해야한다.
자잘하게 빨리빨리 많이많이 commit 해야 문제가 발생했을 때 범인을 찾기 쉽다.
Pair programming
실력이 가장 빨리 느는 방법은 선배 어깨너머로 배우는 것. 요즘은 pair로 programming 한다.
그래서 code reviwe 가 뭐냐
이제는 sw 개발 workflow 에서 꼭 필요한 한 단계. 해도 되고 안 해도 되는 것이 아니다. 당신의 동료로부터 당신의 코드에 대해서 피드백을 받는 것.
코드 리뷰는 코드를 작성한 사람을 위한 것이 아니라 읽는 사람을 위한 것.
코드리뷰를 하다보면 코드가 매우 건강하고 확장가능한 코드가 된다.
코드리뷰는 팀워크이다. 구글에서는 코드리뷰를 같은 팀끼리만 하지 않는다. 그 전에는 자기 팀끼리만 알았는데 다른팀 끼리도 코드리뷰를 한다. 그래서 협력이 늘어났다.
코드리뷰 스킬 중 중요하다고 생각하는 것.
함수는 작게 짜라! 한번에 한놈만 패라. 함수는 하나만 해야 된다. 하는 일이 뭔지 알아야 되고 명확해야 하고 이름에서 드러나야 한다. 잘게 쪼개서 짜라. 그래야 디버깅 하기도 편하다.
Why is Testing So Important?
Testing Rocks! Debug Sucks!
디버깅은 보통 문제를 찾는 데 엄청 시간이 오래 걸림.
테스팅은 새로 작성한 코드에서도 결함을 검출할 수 있음.
테스팅은 테스트 코드를 필요로 하기 때문에, 유지보수 부담을 줄임
Project Scalability
새로 온 개발자도 테스트 코드를 잘 작성해서 프로젝트에 기여할 수 있음.
동료나 외부 기여자에게서 도움을 받기에 가장 적합함.
Code Refactoring
코드리뷰 가장 중요한 두 개.
1. 이해하기 쉬운 것 (나도 이해하기 쉽고, 동료도 이해하기 쉽고) 그래야 2번.
2. 유지보수하기 쉽다.
Why Refactor?