1주차 미션 숫자계산기와 레이싱게임을 진행하며 리뷰어님께 집중적으로 받은 피드백을 정리하여 다시 실수 하지 않게 위해 작성한 포스트입니다.
1차 GIT Full-Request 진행내역에서 1차 피드백 전체 내역을 확인 할 수 있습니다.
2차 GIT Full-Request 진행내역에서 2차 피드백 전체 내역을 확인 할 수 있습니다.
명사
로 할 것동사
로 할것 (동사
or 전치사
로 시작) 👉자주 사용되는 동사들자료형
을 사용해서 네이밍 하지 말 것 (혹시 추후에 자료형이 바뀔 경우 수정하기 곤란)자세한 내용은 내 블로그의 의미있는 네이밍 하는법 참조
하나의 메서드에 여러 기능을 넣으면 안된다.
ex) 정수를 더하고
더해진 정수를 리스트에 넣어 결과 리스트를 만든다
(두가지 기능을 가지면 ❌)
개념은 빈 행으로 구분한다.
패키지 선언부, import문, 각 함수 사이를 공백으로
상수는 맨 위에 배치.
인스턴스 변수는 공백없이 한곳에 모은다.
public
메서드 -> public 메서드에 포함되는 private
메서드 순으로 배치하자.
종속 함수
한 함수가 다른 함수를 호출 할때 호출 하는 함수를 먼저 배치한다.
함수 호출 종속성을 아래 방향으로 유지해 큰 단위에서 세부 단위로 배치되게한다.
즉, 기능상으로 중요한 로직이 포함된 메서드들을 위쪽으로 배치해주는 것이 좋다.
(getter
, setter
는 가장 하단에 배치된다.)
0
, 1
과 같이 의미를 한번에 알 수 없는 숫자나 기호를 의미한다.public static final int COMMAND_ATTACK = 0;
static
(정적 필드)을 사용하자.Input
클래스의 Scanner
객체 생성static
사용 고려Output
, Input
클래스for (int index = 0; index < stringArray.length; index++) {
String element = stringArray[index];
대신👇
for (String element : stringArray) {
// do something
}
이 부분이 가장 어려웠던 개념이었는데,
"객체가 가진 상태는 무조건 그 객체에서 관리하자" 로 생각 할 수 있을 것 같습니다.
즉, 한 클래스안에 있는 상태(변수)를 다른 클래스에서 변경하지 말자
ex) Car
의 moveCount
를 RacingGame
에서 변경하지 말자
블로그의 Enum 포스트 참조
내 블로그 단위테스트 어노테이션 정리 참고
1주차의 피드백중 절반이 메소드 네이밍 관련이었다.
축약, 매직넘버, 의미를 알 수 없는 네이밍 관련된 피드백이 중복해서 등장했기 때문에 좀 더 신경을 쓸 필요가 있다.
모두가 이해할 수 있게 네이밍을 하는게 진짜 정말 어렵다.
심지어 코드 작성시간중 네이밍 고민만 30% 이상 차지하는 기분이 든다..
나만 그런건 아닌듯함 ㅋㅋ