ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Code Review 강의(류석영 교수님)
    기타/SW 정글 2022. 5. 6. 09:33

    코드 리뷰 강의 - 류석영 교수님

     

    Code Review - Google에서 제일 많이 하는 것

    - Test-Driven Development  -> 구현해야할 요구사항이랑 구현체를 분리하는 것

     

    구현하기 전에 테스트부터 짜는 것

    test는 실행 가능한 문서

    테스트 없이는 코드 삽입 못함

    Code Commit 하기 전에 테스트부터 해야함

    자잘하게 많이 많이 commit을 많이 해야함.

     

    - Pair programming -> 선배 어깨너머로 배우는 것이 정말 좋다.

     

    둘이 나란히 앉아서 지식을 전파

    어떻게 하는지 배우는 것 —> 진짜 빨리 배운다.

    혼자하다 보면 다른생각도하지만 같이하면 확실하게 집중할 수 있다.

     

    ---------------------------------------------------------------------------------------------------

     

    What is Code Review? (=코드리뷰가 무엇인가?) 

    소프트웨어 개발 단계에서 꼭 필요한 단계

    소프트웨어 설계를 어떻게 할 것인가? 이런 것은 code review가 아니다

    Code 변화에 대한 단계이다.

    Code Review Example

     

    왜 필요?

    - 당신의 CL을 이해하기 쉽게 만듬 —> 당신의 동료가 당신의 코드를 이해할 수 있음

    - 당신의 CL에 동료가 남긴의견으로부터 tip이나 lesson을 받음

    - 숙련된 개발자로부터 코딩 스타일과 팁을 배움

    - 당신의 팀이 공통된 코딩 스타일을 공유할 수 있음.

    - 당신의 coding decision에 대한 개발 역사를 보관함

    —> 동료의 의견은 코드 설계와 결정 사항에 대해 이해하는 데 매우 큰 도움이 됨

    —> 새로 온 개발자는 committed logs와 의견으로부터 코드의 구조와 결정 사항을 이해할 수 있음

    - 당신의 코드에 일관적인 코딩 스타일을 유지할 수 있음

    —> 새로 온 개발자가 기존의 코딩 스타일을 따를 수 있도록 도와줌

    —> 일관적인 코딩 스타일은 이후에 코드를 refactoring하거나 디버깅할 때 큰 도움이 됨.

     

    제일 좋은 코드 리뷰

    --> 이 것은 이러한 이유로 이렇게 바꾸는 게 좋습니다. 링크까지 넣어주면 더 좋음

     

    코드리뷰 단점

    - 거칠고 무례한 의견 때문에 CL Oweners may get discouraged.

    - 리뷰가 늦어지면 개발 기간이 늦어짐

    - 코드 리뷰를 제대로 하려면 시간이 걸림

    - 코드 리뷰를 위해서는 어느 정도 숙련된 개발자가 필요

     

    코드 잘 짓기

    - 이름을 잘 짓기

    - Function —> 함수는 한 역할만 하게 해라. 매우 중요

    이유 : test 어렵고, 디버깅 어렵고 등등 

    -------------------------------------------------------------------------------------------------------

    TESTING

    Why is Testing So Important?

     

    Testing Rocks! Debug Sucks!

    디버깅은 보통 문제를 찾는 데 엄청 시간이 오래 걸림.

    테스팅은 새로 작성한 코드에서도 결함을 검출할 수 있음

    테스팅은 테스트 코드를 필요로 하기 때문에, 유지보수 부담을 줄임.

     

    Project Scalability

    새로 온 개발자도 테스트 코드를 잘 작성해서 프로젝트에 기여할 수 있음

    동료나 외부 기여자에게서 도움을 받기에 가장 적합함.

     

    Testing Types

    Unit Testing

    Integration Testing

    Regression Testing

    End-to-End Testing

     

    Code Refactoring

    SW의 동작을 바꾸지 않으면서 내부 구조 개선을 하는 것. 즉, 코드의 구조를 잘 정해진 규정대로 수정하는 기술임

    SW를 더 이해하기 쉽게 만들고 수정하는 비용을 줄임

    꽤 오랫동안 숙련된 개발자들 사이에 전해내려오는 노하우로, 정돈되지 않고 일관적이지 않았음.

    Refactoring is an overhead activity

     

    Why Refactor?

    Refactoring이 없으면 프로그램의 설계는 낡아짐

    설계가 좋지 않은 코드는 보통 같은 일을 하는데 코드가 길고, 같은 일을 여러 곳에서 함.

    이해하기 쉬움

    결함 검출할 때도 있음

    프로그램 속도 향상

     

    ---------------------------------------------------------------------------------------------------------------

    TESTING? DEBUGGING?

    TESTING - 프로그램 짜기 전에 (코드 작성하기 전에) 실행해야할 것

    DEBUGGING - 코드를 마무리하고 문제가 생겼을 사용

    '기타 > SW 정글' 카테고리의 다른 글

    Week 00 : JWT 설명  (0) 2022.04.04
    Week 00: 정글 미니 프로젝트  (0) 2022.04.04
    Week00 : 특별한 과제(성찰)  (4) 2022.04.01
    Week00 : 정글 입성  (0) 2022.03.29
Designed by Tistory.