ex)
1. 정해진 언어 사용
2. 새로운 함수 사용을 자제하자
등등
Test-Driven Development
--> 우리가 구현해야할 요구사항과 구현체를 분리한다
--> 구현하기 전에 test를 먼저 만든다(corner case, edge case ..) (구현 후에 test 케이스를 만들면 구현에 맞는 test case를 만들수도 있게됨)
--> 테스트는 실행가능한 문서다 (언제나 코드와 연결이 되어있음)
--> 구글은 테스트가 없으면 코드를 커밋할 수 없음
--> 작게 빨리빨리 커밋을 해야함 한번에 몰아서 하면 틀린점을 찾기 어려움
Testing
Testing Rocks! Debug Sucks!
--> debuging은 보통 문제를 찾는데 엄청 시간이 오래 걸림
--> 새로 작성한 코드에서도 결함을 검출할 수 있음
--> 유지보수 부담을 줄임
pair programming
--> 둘이 같이 앉아서 하나의 머신으로 코딩 (사수와 부사수)
Testing 종류
단계
1. 코드 update
2. code update owner가 comments를 동료들에게 요청함
3. 동료가 comments를 남김
4. review를 최소 2~3명이 남김 코드가 괜찮아보인다 라는 커멘트를 받으면
5. owner가 submit을 한다
코드 리뷰는 최소 두 명 이상이 해야 함
-- 해당 언어에 관한 전문가
-- project owner
함수는 하나에 한번만 쓰기 등
--> 하는 일이 뭔지 알아야하고 명확해야하고 이름에서 드러나야함
--> 하는 일이 여러개면 뭘하는지 어렵고 디버깅도 어렵게됨