Code Review - cleancodeclass/cleancode_theory GitHub Wiki
-
Code Reviewλ?
- μ ν΅μ μ μ : μννΈμ¨μ΄λ₯Ό μ€ννμ§ μκ³ μμ€μ½λ κ²ν λ₯Ό ν΅ν΄ μ μ¬λ κ²°ν¨μ μ°Ύμλ΄κ³ κ°μ ν΄λκ°λ©΄μ μννΈμ¨μ΄μ νμ§μ λμ΄λ νλ
- μ΅κ·Όμ μ½λ리뷰
- Goal is cooperation, not only bug-hunting
- μ½λλ₯Ό ν΅ν΄ μλ‘ μν΅νκ³ λ°°μμ μ£Όκ³ λ°λ νλ
- κ°λ°μλ£ λ¨κ³μ νλ κ²μ΄ μλλΌ κ°λ° μ€ μΌμμ μΌλ‘ μν -"Code review is the discipline of discussing your code with your peers" Derek Prior, RailsConf 2015
-
The Ten Commandments of Egoless Programming(λΉμμμ νλ‘κ·Έλλ°μ μν 10κ°μ μμΉ)
- Understand and accept that you will make mistakes.
- You are not your code.
- No matter how much "karate" you know, someone else will always know more.
- Don't rewrite code without consultation.
- Treat people who know less than you with respect, deference, and patience.
- The only constant in the world is change.
- The only true authority stems from knowledge, not from position.
- Fight for what you believe, but gracefully accept defeat.
- Don't be "the guy in the room."
- Critique code instead of people β be kind to the coder, not to the code.
-
μ½λ리뷰μ λͺ©ν
- κ°λ°μ§ν μ€μ μΌμ° κ²°ν¨μ λ°κ²¬νκ³ κ³ μΉκΈ° μν΄
- ν λ©€λ²λ‘μ μ½λ λ² μ΄μ€μ μ΄ν΄λ₯Ό 곡μ λ₯Ό ν΅ν΄ μλ‘ λ°°μ(νλ°° μμ± λ° κΈ°μ μ΄μ )
- λμμΈκ³Ό ꡬνμμ μΌκ΄μ±μ λ 벨μ μ μ§
- μ¬μμ μ μ€μ΄λ κ²κ³Ό κ°μ νν κ²°ν¨μ νμΈνκΈ° μν΄ λμμ μ€
- μ€νλ¨κ³ κΈ°μ μ μΈ νμ§μ λν μ΄ν΄κ΄κ³μμ μ λ’°
- νλ©€λ²λ€κ°μ μμ€λ₯Ό 곡μ νμ¬ λ€λ₯Έ κ°λ°μμ μν λν κ°λ₯(λ°±μ κ°λ )
- κ΄μ μ λ¬λ¦¬νμ¬ λλ£μ 리뷰λ₯Ό ν΅νμ¬ λ¬Έμ λ₯Ό λ°κ²¬νκΈ° μν κ³κΈ°κ° λ¨
- μλΆμ¬, 보μ, μ½λ© κΈ°λμ μΈμ μΌλ‘ νλ‘κ·Έλλ¨Έ μ¬κΈ° μ§μ
- νμ μμ§λ ₯. ν λ©€λ²λ€κ° λ κ°κΉμμ§ μ μκ² λμ
- μ½λ리뷰μ μνλ μμΈ
- μμ€μ½λκ° μλ²½νμ§ μλ€λ κ²μ μΈμ νμ.
- Code Reviewλ₯Ό ν΅ν΄ μλ‘μ΄ μμ΄λμ΄ λ° μ΅κ΄μ λ°°μΈ μ μλ€κ³ μκ°νμ.
- Code Reviewλ₯Ό νλ κ°μ₯ ν° μ΄μ λ λ λμμ§κΈ° μν λ°©λ²μ΄λ€.
- λλ€μ νλ‘κ·Έλλ°μμ λ΄λ €μ§ κ²°μ μ κ°κ°μ 견ν΄μ λ°λ₯Έλ€λ μ¬μ€μ λ°μλ€μΈλ€. μ΄λ μͺ½μ΄ λ μ’μμ§ μ₯λ¨μ μ μλ Όνκ³ λΉ λ₯΄κ² κ²°μ μ λ΄λ¦°λ€.
- μ§λ¬Ένλ€. λμ λ΅μ κ°μνμ§ μλλ€. (βμ΄ :user_idλΌλ λ€μ΄λ°μ λν΄ μ΄λ»κ² μκ°νλμ?β)
- λͺ ννκ² ν΄λ¬λΌκ³ 묻λλ€. (βμ κ° μ΄ν΄νμ§ λͺ»νμ΄μ. λ€μ μ€λͺ ν΄μ€ μ μμ΄μ?β)
- μ½λμ μμ κΆμ λν΄ νΉμ νλ κ²μ νΌνλ€. (βλ΄κ° μμ±νβ, βλ΄ μ½λκ° μλβ, βλΉμ μ΄ μμ±νβ)
- κ°μΈμ μΈ νΉμ§μ μΈκΈνλ κ²μΌλ‘ λ³΄μΌ μ μλ λ¨μ΄λ₯Ό νΌνλ€. (βλ°λ³΄β, βλ©μ²νβ). λͺ¨λ μ¬λμ΄ λ§€λ ₯μ μ΄κ³ λλνλ©° μ μκ° μλ κ²μΌλ‘ μ¬κ²¨μΌ νλ€.
- λͺ μμ μΌλ‘ νλ€. μ¬λλ€μ μ¨λΌμΈμμ λΉμ μ μλ΄λ₯Ό νμ μ½κ² μ΄ν΄ν μ μλ κ²μ μλλ μ μ μ λ νλ€.
- κ²Έμν΄μΌ νλ€. (βνμ νκΈ° μ΄λ ΅λ€. νλ² μ΄ν΄λ³΄κ² λ€.β)
- κ³Όμ₯νμ§ μλλ€. (βνμβ, βμ λβ, βλμμμ΄β, βμ무κ²λβ)
- λΉμ λμ§ μλλ€.
- μ€μ μ²λΌ νλν΄μΌ νλ€. λΉμ μκ² ν΄λΉνμ§ μλ μ΄λͺ¨μ§, μμ§€ gif λλ μ λ¨Έλ₯Ό μ¬μ©νλλΌλ κ·Έ μ¬λλ€μ λΉκΌ¬μμλ μλλ€. λ§μ½ κ·Έλ€μ΄ κ·Έλ° νλμ νλ€λ©΄ μΉ¨μ°©νκ² λμνλ€.
- βμ΄ν΄ν μ μλ€β λλ βλμ:β μμ μ½λ©νΈλ₯Ό λ무 λ§μ΄ μ¬μ©νλ€λ©΄ λνκ° νμνλ€. μ€νλΌμΈμμ λνν λ΄μ©μ μμ½ν΄ νμ μ½λ©νΈλ‘ λ¨κΈ΄λ€.
- λ΄ μ½λλ₯Ό 리뷰λ°μ λ
- μμ μ μ½λλ₯Ό λ¨μ΄ μ€λͺ ν λλ λ¨μ΄ λ κ°κ΄μ μΌλ‘ μ½λ©νΈλ₯Ό μ€λ€κ³ μκ°νμ.
- 리뷰μ΄μ μΆμ²μ κ°μ¬ν΄μΌ νλ€. (β리뷰 κ³ λ§λ€. κ·Έλ κ² λ³κ²½νλλ‘ νκ² λ€.β)
- κ°μΈμ μΈ λΆλΆμΌλ‘ λ°μλ€μ΄μ§ μλλ€. 리뷰μ λμμ μ½λμ§ λΉμ μ΄ μλλ€.
- μ μ½λκ° μ‘΄μ¬νλμ§ μ€λͺ νλ€. (βμ΄ λΆλΆμ μ΄λ κ² μ§ μ΄μ λ μ΄λ° μ΄μ λλ¬Έμ΄λ€. λ΄κ° ν΄λμ€/νμΌ/λ©μλ/ν¨μλͺ μ μ΄λ κ² λ°κΎΈλ©΄ λ λͺ νν΄μ§ μ μμκΉ?β)
- λ³κ²½μ κ³Ό κ°μ μ μ κΊΌλ΄ λ―Έλμ ν°μΌ/μ€ν λ¦¬λ‘ λλ€.
- ν°μΌ/μ€ν 리μ μ½λ 리뷰λ₯Ό λ§ν¬νλ€. (β리뷰λ₯Ό μν μ€λΉκ° λμμ:β)
- μ΄κΈ° νΌλλ°±μ λ°μ λλ λ 립μ μΈ μ»€λ°μΌλ‘ λ§λ€μ΄ λΈλμΉλ‘ νΈμνλ€. λΈλ°μΉκ° λ¨Έμ§λκΈ° μ κΉμ§ 컀λ°μ λμ³λ²λ¦¬μ§ μλλ€. 리뷰μ΄λ μ΄κΈ° νΌλλ°±μ κΈ°λ°μ λ¬ μμ±ν κ°κ°μ μ λ°μ΄νΈλ₯Ό μ½λ κ²μ΄ κ°λ₯ν΄μΌ νλ€.
- 리뷰μ΄μ κ΄μ μμ μ΄ν΄νλλ‘ λ Έλ ₯νλ€.
- λͺ¨λ μ½λ©νΈμ μλ΅νλλ‘ λ Έλ ₯νλ€.
- μ§μμ μΈ ν΅ν©(TDDium, TravisCI λ±)μ΄ λΈλμΉμμ λͺ¨λ ν μ€νΈκ° ν΅κ³ΌλκΈ° μ κΉμ§ λΈλμΉλ‘ λ¨Έμ§νμ§ μκ³ κΈ°λ€λ¦°λ€.
- μ½λλ₯Ό λ¨Έμ§νλ μΌμ νλ‘μ νΈμ μν₯μ μ€λ€. κ·Έλ¬λ―λ‘ μμ μ μ½λμ νμ μ΄ μμ λ λ¨Έμ§νλ€.
- λ€λ₯Έ μ¬λμ μ½λλ₯Ό 리뷰ν λ
- μ€ν λ§μΈλλ‘ λ€λ₯Έ μ¬λμ μ½λλ₯Ό λ³΄κ³ , κ°μ μ μ μμλ μ΄μ λ₯Ό μ μ€λͺ νμ.
- μ μ΄ μ½λκ° νμνμ§ μ΄ν΄νλ€. (λ²κ·Έ, μ¬μ©μ κ²½ν, 리ν©ν λ§.) κ·Έλ¬κ³ λμ:
- μ΄λ μμ΄λμ΄κ° κ°μ μ΄λΌ μκ°λλμ§, νΉμ κ·Έ λ°λμΈμ§ μν΅νλ€.
- λ¬Έμ λ₯Ό ν΄κ²°ν λκΉμ§ μ½λλ₯Ό λ¨μννλ κ²μΌλ‘ λ°©ν₯μ μ°ΎμλΌ.
- λ Όμκ° μ² νμ μ΄κ±°λ νλ¬Έμ μΌλ‘ νλ₯Ό λλ κ·Έ μ£Όμ λ₯Ό κΈμμΌ μ€ν κΈ°μ ν μμ²λΌ μ€νλΌμΈμΌλ‘ κ°μ Έμμ λ Όμνλ€. κ·Έ ν μ½λ μμ±μκ° λμμ μΈ κ΅¬νμΌλ‘ μ΅μ’ κ²°μ μ λ΄λ¦¬λλ‘ νλ€.
- λμμ μΈ κ΅¬νμ μ 곡ν λλ μμ±μκ° μ΄λ―Έ κ·Έ ꡬνμ κ³ λ €νμ κ²μΌλ‘ κ°μ νλ€. (βcustom validatorλ₯Ό μ¬κΈ°μ μ¬μ©νλ κ²μ λν΄ μ΄λ»κ² μκ°νλμ?β)
- μμ±μμ κ΄μ μ μ΄ν΄νλλ‘ λ Έλ ₯νλ€.
- βλ¨Έμ§ μ€λΉλ¨ Ready to mergeβμ κ°μ μ½λ©νΈμ ν¨κ» ν 리νμ€νΈλ₯Ό μλ½νλ€.