[Code Review] NEXT_STEP 코드 리뷰 1주차 정리 및 회고

Jae Eon·2021년 5월 10일
0

코드 리뷰

목록 보기
1/2

들어가며

1주차 미션 숫자계산기와 레이싱게임을 진행하며 리뷰어님께 집중적으로 받은 피드백을 정리하여 다시 실수 하지 않게 위해 작성한 포스트입니다.

🍊 1차 피드백 전체 내역

1차 GIT Full-Request 진행내역에서 1차 피드백 전체 내역을 확인 할 수 있습니다.
2차 GIT Full-Request 진행내역에서 2차 피드백 전체 내역을 확인 할 수 있습니다.


🥭 코드 네이밍(Google Java Style Guide 이용)

  • 모든 코드의 네이밍에서 의미가 드러나도록 할 것 (❌절대 축약 하지 말자❌).
    ex) int a = [x], int firstNumber = [o]
  • 클래스의 이름은 명사로 할 것
  • 메서드의 이름은 동사로 할것 (동사 or 전치사로 시작) 👉자주 사용되는 동사들
  • 자료형을 사용해서 네이밍 하지 말 것 (혹시 추후에 자료형이 바뀔 경우 수정하기 곤란)
    ex) carList = [x], cars = [o] || keyMap = [x], bunchOfKey = [o]

자세한 내용은 내 블로그의 의미있는 네이밍 하는법 참조


🍇 메서드를 분리 하자 (메서드는 한가지 기능만 하자)

하나의 메서드에 여러 기능을 넣으면 안된다.
ex) 정수를 더하고 더해진 정수를 리스트에 넣어 결과 리스트를 만든다 (두가지 기능을 가지면 ❌)

🍑 메서드 배치를 형식에 맞게 하자

  • 개념은 빈 행으로 구분한다.
    패키지 선언부, import문, 각 함수 사이를 공백으로

  • 상수는 맨 위에 배치.

  • 인스턴스 변수는 공백없이 한곳에 모은다.

  • public 메서드 -> public 메서드에 포함되는 private 메서드 순으로 배치하자.

  • 종속 함수
    한 함수가 다른 함수를 호출 할때 호출 하는 함수를 먼저 배치한다.
    함수 호출 종속성을 아래 방향으로 유지해 큰 단위에서 세부 단위로 배치되게한다.
    즉, 기능상으로 중요한 로직이 포함된 메서드들을 위쪽으로 배치해주는 것이 좋다.
    (getter, setter는 가장 하단에 배치된다.)


🍍 매직넘버는 상수화 하자

  • 매직 넘버란 0, 1 과 같이 의미를 한번에 알 수 없는 숫자나 기호를 의미한다.
    ex) 0이 공격, 1이 방어 커맨드라고 할때 아래와 같이 상수화 한다.
public static final int COMMAND_ATTACK = 0;

🍎 Static 사용을 고려하자

  • 각 메서드마다 동일한 객체를 생성하거나 사용 할때, static(정적 필드)을 사용하자.
    ex) Input 클래스의 Scanner 객체 생성
  • 상태(필드)를 가지지 않는 클래스의 메서드들은 static 사용 고려
    ex)Output, Input 클래스

🍈 전통적인 for문 보다는 향상된 for문(for-each) 사용

for (int index = 0; index < stringArray.length; index++) {
    String element = stringArray[index];
대신👇

for (String element : stringArray) {
    // do something
}

for-each 참고자료


🍓 객체의 책임을 정확히 사용하자

이 부분이 가장 어려웠던 개념이었는데,
"객체가 가진 상태는 무조건 그 객체에서 관리하자" 로 생각 할 수 있을 것 같습니다.
즉, 한 클래스안에 있는 상태(변수)를 다른 클래스에서 변경하지 말자
ex) CarmoveCountRacingGame에서 변경하지 말자

🍒 Enum 사용하기

블로그의 Enum 포스트 참조

🍅 모든 기능이있는 메서드는 TEST 코드로 검증하기

  • Junit5 의 Assertions를 사용하여 검증하자

🍋 @ParameterizedTest 사용하기

내 블로그 단위테스트 어노테이션 정리 참고

🍭 후기

1주차의 피드백중 절반이 메소드 네이밍 관련이었다.
축약, 매직넘버, 의미를 알 수 없는 네이밍 관련된 피드백이 중복해서 등장했기 때문에 좀 더 신경을 쓸 필요가 있다.
모두가 이해할 수 있게 네이밍을 하는게 진짜 정말 어렵다.
심지어 코드 작성시간중 네이밍 고민만 30% 이상 차지하는 기분이 든다..
나만 그런건 아닌듯함 ㅋㅋ

profile
🖋정리를 안하면 잊어버린다.👣한 발자국씩 가보자!

0개의 댓글