잡담

크래프톤 정글 - 코드리뷰에 대해

에린_1 2024. 2. 16. 23:42
728x90

코드리뷰에 대해

  • 꼭 한번은 들어보면 좋을 것같은 강의 추천추천~
  • 코드리뷰가 왜 중요할까? 이걸 어떻게 해야할까? 코드리뷰는 어떤식으로 진행되고 뭐가 필요할까 많은 고민을 해결해 줄 수 있었다.

TEST-Drive Development - 테스트가 기본이다.

  • 요구사항과 구현을 분리하라
  • 테스트는 언제나 코드와 싱크되어 있다.
  • no test, no source code
  • 자잘하게 많이 커밋해라

Pair Programming - 선배 어깨 너머로 배우기

  • 둘이 나란히 한 컴퓨터로 프로그래밍
  • 실력이 정말 빠르게 증가한다.

Code Review - 이해하기 쉽고, 유지보수하기 쉽게

  • 꼭 필요한 한 단계이다.
  • 당신의 동료로 부터 내 코드를 피드백 받는 것을 의미한다.

It is not about code review

  • 소프트웨어 설계를 어떻게 할까 - 이런것은 화이트보드에. 코드리뷰는 코드 체인징에 관해서
  • 소프트웨어에 요구 계획 추가나 프로젝트 추가.

Step

  • LGTM가 나올때까지 코드리뷰
  • 코드리뷰는 읽는 사람을 위한 것이다. - 한달 후 내가 될 수도 있다.

왜 why 필요한가?

  • 당신의 CL(Change List)를 이해하기 쉽게 만든다.
    • 당신의 동료가 당신의 코드를 이해할 수 있어야 한다.
  • 당신의 CL에 동료가 남긴 의견으로 부터 tip&lessons을 배운다.
    • 숙련된 개발자로부터 코딩스타일과 팁을 배운다
    • 당신의 팀이 공통된 코딩스타일을 공유할 수 있다.
  • 결함을 줄일 수 있다.
  • 당신의 coding decision에 대한 개발 역사를 보관한다.
    • 동료의 의견은 코드 설계와 결정사항에 대해 이해하는데 매우 큰 도움이 된다.
    • 새로운 개발자는 committed log와 의견으로부터 코드의 구조와 결정사항을 이해할 수 있다.
  • 당신의 코드에 일관적인 코딩스타일을 유지할 수 있다.
    • 새로 온 개발자가 기존의 코딩 스타일을 따를 수 있도록 도와준다.
    • 일관적인 코딩 스타일은 이후에 코드를 refactoring 하거나 디버깅할 때 큰 도움이 된다.
  • 이러 이러한 이유로 이렇게 바꾸면 좋습니다 , 레퍼런스는 여기를 참조하시면 좋을것같습니다 << 이런식으로 코드리뷰를 하면 매우 좋다.
  • 남의 코드를 보면서 자기가 생각하는 것을 말하면서 많이 배울 수 있다.
    • 코드 리뷰를 통해서 대화
  • 코드리뷰를 하다보면 코드가 투명해지고, 확장성이 생긴다.
  • 코드의 표준이 올라간다.

Possible Downsides of Code Review

  • 거칠고 무례한 의견 때문에 CL owners may get discouraged
  • 리뷰가 늘어지면 개발기간이 늦어진다.
  • 코드 리뷰를 제대로 하려면 시간이 걸린다.
  • 경험이 부족한 개발자의 잘못된 CL을 리뷰하느라 숙련된 개발자의 시간이 허비될 수 있다.
  • 코드리뷰를 위해서는 어느정도 숙련된 개발자가 필요하다.

Google C++ Style Guide

코드리뷰를 위한 것

  • 묵시적인 것으로 에러가 발생한다면 나중에 디버깅하기 매우 힘들기 때문에 명시적으로 선언
  • 새로운 기술보다 기본에 충실하라. 하지만 최적화 부분이나, 속도가 차이난다면 속도를 우선시해라.
  • 도구가 할 수 있는것은 도구에게 맡겨라.
  • 함수는 최소한 작게 구현해라 - 함수는 하나의 일만 해야한다.
  • 함수의 이름에서 무슨 역할을 수행하는 함수인지 들어나야한다.

당신의 팀에는 일관적인 스타일이 있는것이 좋다.

Testing

  • Testing Rocks! Debug Sucks
  • 디버깅은 보통 문제를 찾는데 오랜 시간이 걸린다.
  • 테스팅은 새로 작성한 코드에서도 결합을 검출 할 수 있다.
  • 테스팅은 테스트 코드를 필요로 하기 때문에, 유지보수 부담을 줄인다.
  • unit testing : 함수 하나 하나를 테스팅
  • integration testing : 서로 다른 시스템들의 상호작용이 잘 이뤄지는지 테스트하는 것

Project Scalability

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

Code Refactoring

  • Refactoring은 SW의 동작을 바꾸지 않으면서 내부 구조를 개선하는 것이다. 즉, 코드의 구조를 잘 정해진 규정대로 수정하는 기술이다.
  • SW를 더 이해하기 쉽게 만들고, 수정하는 비율을 줄인다.
  • Why
    • SW 설계 개선
    • Refactoring이 없으면 프로그램의 설계가 낡아진다.
    • 설계가 좋지 않은 코드는 보통 같은 일을 하는데 코드가 길고, 같은 일을 여러곳에서 한다.
    • 이해하기 쉽다.
    • 대부분의 SW 개발 환경에서, 누군가 언젠가는 당신의 코드를 읽어야 할 때가 오기 때문에, 그들을 위해 이해하기 쉬운 코드를 작성해야 한다.
    • 결함을 검출 할 때도 있다.
    • 프로그램의 속도를 향상 시킬 수 있다.
      • 프로그램에 대해 더 잘 이해할 수 있기 때문에
728x90