류석영 교수님 코드리뷰

HEllo·2022년 5월 25일

코드리뷰에서 가장 중요한 두 가지

  1. Test-Driven Development (테스트가 기본이다.)
    우리가 구현해야 할 요구사항이랑 구현을 분리하는 것. 그래서 문제가 무엇인지 알았으면, 구현하기 전에 테스트 먼저 짠다. '아 이게 제대로 동작하려면 ~input 일 때 이렇게 돼야 하지?, 항상 input이 이쁘게 들어올리가 없으니까(corner case, edge case) 이렇게 하겠지?' 이런걸 쭉 만든다. 그걸 먼저 만들지 않고 코딩먼저 하면 내가 나를 속이게 된다. 내 코드에 맞는 테스트만 생각이 난다.

    가장 중요한 것. comment 많이 써라!
    
    테스트는 실행 가능한 문서다. 
    code commit하기 전에 항상 test 해야한다. 
    자잘하게 빨리빨리 많이많이 commit 해야 문제가 발생했을 때 범인을 찾기 쉽다.
  2. Pair programming
    실력이 가장 빨리 느는 방법은 선배 어깨너머로 배우는 것. 요즘은 pair로 programming 한다.

그래서 code reviwe 가 뭐냐
이제는 sw 개발 workflow 에서 꼭 필요한 한 단계. 해도 되고 안 해도 되는 것이 아니다. 당신의 동료로부터 당신의 코드에 대해서 피드백을 받는 것.

코드 리뷰는 코드를 작성한 사람을 위한 것이 아니라 읽는 사람을 위한 것.

코드리뷰를 하다보면 코드가 매우 건강하고 확장가능한 코드가 된다.
코드리뷰는 팀워크이다. 구글에서는 코드리뷰를 같은 팀끼리만 하지 않는다. 그 전에는 자기 팀끼리만 알았는데 다른팀 끼리도 코드리뷰를 한다. 그래서 협력이 늘어났다.

코드리뷰 스킬 중 중요하다고 생각하는 것.
함수는 작게 짜라! 한번에 한놈만 패라. 함수는 하나만 해야 된다. 하는 일이 뭔지 알아야 되고 명확해야 하고 이름에서 드러나야 한다. 잘게 쪼개서 짜라. 그래야 디버깅 하기도 편하다.

Why is Testing So Important?

  • Testing Rocks! Debug Sucks!
    디버깅은 보통 문제를 찾는 데 엄청 시간이 오래 걸림.
    테스팅은 새로 작성한 코드에서도 결함을 검출할 수 있음.
    테스팅은 테스트 코드를 필요로 하기 때문에, 유지보수 부담을 줄임

  • Project Scalability
    새로 온 개발자도 테스트 코드를 잘 작성해서 프로젝트에 기여할 수 있음.
    동료나 외부 기여자에게서 도움을 받기에 가장 적합함.

Code Refactoring

  • Refactoring은 SW의 동작을 바꾸지 않으면서 내부 구조를 개선하는 것. 즉, 코드의 구조를 잘 정해진 규정대로 수정하는 기술임.
  • SW를 더 이해하기 쉽게 만들고 수정하는 비용을 줄임.
  • 꽤 오랫동안 숙련된 개발자들 사이에 전해 내려오는 노하우로, 정돈되지 않고 일관적이지 않았음.
  • Refactoring is an overhead activity.

코드리뷰 가장 중요한 두 개.
1. 이해하기 쉬운 것 (나도 이해하기 쉽고, 동료도 이해하기 쉽고) 그래야 2번.
2. 유지보수하기 쉽다.

Why Refactor?

  • SW 설계 개선
    Refactoring이 없으면 프로그램의 설계는 낡아짐. (SW도 나이를 먹는다.)
    설계가 좋지 않은 코드는 보통 같은 일을 하는데 코드가 길고, 같은 일을 여러 곳에서 함.
  • 이해하기 쉬움
    대부분의 SW 개발 환경에서, 누군가 언젠가는 당신의 코드를 읽어야 할 때가 오기 때문에, 그들을 위해 이해하기 쉬운 코드를 작성해야 함.
  • 결함 검출할 때도 있음.
  • 프로그램 속도 향상
    프로그램에 대해 더 잘 이해하기 때문에
profile
HEllo

0개의 댓글