이전 미션 공통 피드백
Java 컨벤션 & 스타일
네이밍 규칙
- 메서드
- 동사형으로 작성
- Lower camel case 사용
- 변수
- 명사형으로 작성
- Lower camel case 사용
- 상수
- UPPER_SNAKE_CASE 사용
- 클래스, 타입
- Upper camel case 사용
예시:
java
class Car {
private static final int DEFAULT_POSITION = 0;
private final String name;
private int position = DEFAULT_POSITION;
public void move() {
}
}
공백
- 공백도 의미를 담을 수 있다.
- 컨벤션을 지킨 공백
- 선언 사이의 공백
예시:
java
class Car {
private static final int DEFAULT_POSITION = 0;
private final String name;
private int position;
public void move() {
position++;
}
public String getName() {
return name;
}
}
또는
java
class Car {
private static final int DEFAULT_POSITION = 0;
private String name;
private int position;
public void move(int power) {
int move = power * 2;
boolean movable = true;
position++;
}
public String getName() {
return name;
}
}
메서드 순서
클래스 내 메서드의 순서도 역할을 표현할 수 있다. 자바에서 메소드 순서
intellij 자동 정렬 사용
- Window: Ctrl + Alt + L
- Mac: opt + cmd + L
- 컨벤션 적용: 인텔리제이 자바 프로젝트 코딩 컨벤션 적용하기
접근 제어자
- 접근 제어자도 의도를 표현한다.
- private, protected, (default), public
JCF 사용
- Java Collection Framework
- 배열 vs List: 기능이 더 많은 Collection 사용
- Interface type으로 선언
java코드 복사List<String> cars = new ArrayList<>(); List<String> cars = new LinkedList<>(); // 또는 ArrayList<String> cars = new ArrayList<>();
커밋 단위
- 커밋은 왜할까?
- 작업 단위 표시
- 롤백
- 기능 분류
- 가독성
- 커밋을 잘게 쪼개자 - 커밋은 언제 하는 것이 가장 좋을까?
매직넘버 제거하기
- 매직넘버란? 의미 있는 이름의 상수로 대체될 수 있는 숫자 코드의 매직 넘버 (Magic Number) 란 무엇일까?
java코드 복사class Car { private String name; private int position = 0; } // 또는 class Car { private static final int DEFAULT_POSITION = 0; private String name; private int position = DEFAULT_POSITION; }
EOF (End Of File)
intellij 파일 끝에 개행을 자동으로 추가하는 방법
주석
- 주석은 필수가 아니다.
- 주석도 적절히 활용하자
java코드 복사class Car { private int p; // 자동차 위치 public void move(int n) { // n은 이동 거리 p += n; } } // 또는 class Car { private int position; public void move(int distance) { position += distance; } }
객체를 객체답게
- 올바른 책임 부여하기
구현 방식
- Out → In or In → Out
- Out → In 접근 방식은 도메인 지식이 없거나 요구사항을 객체로 도출할 수 없는 경우 적합
- In → Out 접근 방식은 도메인 지식이 있거나 요구사항을 객체로 도출할 수 있는 경우 적합
- 애플리케이션 개발 단계에서 Out → In, In → Out 방식 중 하나만 사용되지 않는다.
- 두 방식이 핑퐁처럼 주고 받으며 개발이 진행된다.
- 현재 컨텍스트(도메인 지식 수준, 객체 설계 역량 등)에 따라 접근 방식은 달라질 수 있다.
구현 순서도 코딩 컨벤션이다
- 상수, 클래스 변수, 인스턴스 변수, 생성자, 메서드 순으로 작성한다.
클린 코드
거의 바이블 같이 활용된 도서 "Clean Code" - 로버트 마틴(2013)
'이해하기 쉬운', '테스트 가능한’ 코드가 클린하다
읽기 쉬운, 이해하기 쉬운, 간단한, 성능 좋은, 안전한, 우아한, 테스트 가능한, 캡슐화된, 확장 가능한, 유지보수 가능한, 재사용 가능한.
??: Clean code라는 건 없습니다.
Clean Code 라는 건 없습니다 | GeekNews
클린 코드를 위한 다양한 개념과 방식들이 존재함.
주석을 쓰냐, 파라미터 개수, 명명 방식, 줄바꿈, 구조, 불변 등등
클린 코드가 왜 중요하냐?
결국 팀으로 (혹은 과거의 나) 프로덕트를 개발하기 때문.
앞으로 하게 될 코딩은 대부분 팀 스포츠. 팀 전체가 공통적인 이해를 가지는 것이 중요하다.
코드가 클린한가? 아닌가? 는 크게 중요하지 않다. 왜 그 코드가 더 좋은지를 확실하게 말할 수 있어야 하며, 정확한 용어를 사용하여 코드를 설명할 줄 아는 것이 중요하다.
본인 혹은 팀에서 중요하게 여기는 코드 가치(퀄리티)를 잘 정의하고 추구할 것.
와닿지 않음. 당연함
앞으로 코드를 작성하면서, 스스로 물어보기
코드가 클린한가? 그 이유는? 을 대답할 수 있는 코드를 작성하도록 노력하기.
클린코드에 대한 직관 키우기
'멋쟁이사자처럼 동아리 > 공통피드백' 카테고리의 다른 글
7주차. 인증 (0) | 2024.06.22 |
---|---|
6주차 Spring core (0) | 2024.06.22 |
5주차. 스프링 JDBC (0) | 2024.06.22 |
4주차. 스프링 MVC (0) | 2024.06.22 |
2주차. 단위테스트 (0) | 2024.06.22 |