parksunwoo / memo-archive

memo of dev issues
0 stars 0 forks source link

코드리뷰 #5

Open parksunwoo opened 3 years ago

parksunwoo commented 3 years ago

Who?

같은 프로젝트, 같은 성격을 갖고 있는 프로젝트를 진행하고 있는 개발자

Why?

코드 리뷰는 성숙한 개발 조직의 문화, '문화'란 특별한 이유없이 구성원이 모두 동의했을때, 그것을 문화라고 한다

코드 리뷰는 성장하고자 하는 개발자의 권리, 조직으로부터 권리를 보장받을 수 있어야 함

코드 리뷰는 잔소리가 아닌 코드로 하는 커뮤니케이션

How?

1.1 모두에게 해당

1.2 내 코드를 리뷰 받을 때

1.3 코드를 리뷰할 때

왜 이 코드가 필요한지 이해한다. (버그, 사용자 경험, 리팩토링.) 그러고 나서:

좋은 커밋 메시지는 패치에 관한 다음 세 가지 질문에 답을 할 수 있어야 한다:

커밋 메시지의 구조

(50자 미만의) 변경에 대한 짧은 요약

필요하다면 상세한 설명을 첨가한다. 행 당 72자가 넘지 않도록 유의한다. 맥락에 따라 첫 줄은 이메일의 제목처럼,
나머지는 본문처럼 다뤄지는 경우가 있다. 요약과 본문을 구분하는 빈 행은 본문을 생략하지 않는 이상 필수적이다.
rebase와 같은 도구를 사용하면 혼란을 줄 수 있기 때문이다.

추가적인 문단은 빈 행 다음에 작성한다.

- 개조식 서술 또한 괜찮음

- 블릿(bullet)으로 하이픈(-)이나 별표(*)를 사용하고, 한 칸의 공간을 띄고 각 항목 사이 빈 행을 넣는
  방식이 일반적이나 다양한 관례가 있음.

예제 코드 제공에 관대해라

절대 "너"라고 하지마라 → "너"를 "우리"로 변경하라

피드백은 명령이 아니라 요청으로 표현해라

ex.

의견이 아니라 원칙에 기반하여 피드백하라

제안하는 변경과 변경의 이유를 모두 설명하라

리뷰의 범위를 존중하라

Changelist에 포함되지 않은 라인은 리뷰 범위가 아님

진정한 칭찬을 해라

진심어린 칭찬은 리뷰어가 잔인한 감시자가 아니라 도와주려는 팀동료라는 것을 보여서 이런 긴장감을 낮춰준다

교착상태를 적극적으로 처리해라

코드 리뷰의 최악의 결과는 교착상태

만나서 얘기하라

설계 리뷰를 고려하라

인정하거나

인정이 불가한 경우

논의를 팀장이나 테크 리더에게 Escalation 권유

다른 리뷰어에게 할당을 권유

시멘틱 버전과 컨벤셔널 커밋

시멘틱 버전이란 소프트웨어 패키지의 버전을 관리하는 프로토콜을 의미한다.

{MAJOR}.{MINOR}.{PATCH}

로 나누어

fix: correct MINOR typos in code

see the issue for details
on typos fixed.

Reviewed-by: Z
Refs #133

가장 첫번째 줄에 fix: 키워드를 통해 해당 커밋은 버그 수정임을 알 수 있다.

PATCH 업데이트

* 8fffafb fix: somethin
* c87775a refactor: something

위와 같은 커밋메시지는 PATCH 버전의 변화를 의미한다. 새로운 피쳐(feat)가 추가 되지 않았기 때문이다.

MINOR 업데이트

* 8fffafb feat: create a new helper function
* c87775a fix: remove a condition

위 커밋 메시지들을 살펴보면 MINOR 버전의 변화를 의미한다. 새로운 피쳐의 추가를 의미하는 feat 키워드가 사용되었기 때문이다.

MAJOR 업데이트

그럼 MAJOR 버전의 변화를 의미하는 커밋 메시지는 어떻게 생겼을까?

아래와 같이 BREAKING CHANGE 라는 키워드를 커밋 메시지에 추가해준다.

feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files.

일관된 커밋 메시지를 사용함으로써 CHANGELOG 또한 자동으로 생성할 수 있게 된다. 시맨틱 릴리즈를 사용하면 앞으로 시맨틱 버전과 함께 CHANGELOG 또한 자동으로 생성된다.

참고자료

https://github.com/JaeYeopHan/tip-archive/issues/13

https://tech.kakao.com/2016/02/04/code-review/

https://www.slideshare.net/JiyeonSeo2/ss-73455188

https://edykim.com/ko/post/code-review-guide/

https://www.slideshare.net/codetemplate/2018-01code-review-95601233

컨벤셔널 커밋을 이용한 CHANGELOG 및 시멘틱 버저닝(Semantic Versioning) 자동화

LINE 광고 서버 개발 팀의 DevOps 문화