Search
⚠️

2 주차 공통 피드백

태그
피드백
목차

README.md

해당 프로젝트가 어떠한 프로젝트이며, 어떤 기능을 담고 있는지 기술하기!

기능 목록에 관하여

기능 목록을 클래스 설계와 구현, 함수(메서드) 설계와 구현과 같이 너무 상세하게 작성하지 않습니다.
클래스 이름, 함수(메서드) 시그니처와 반환값은 언제든지 변경될 수 있기 때문!
너무 세세한 부분까지 정리하기보다 구현해야 할 기능 목록을 정리하는 데 집중합니다.
예외적인 상황도 기능 목록에 정리합니다.
특히 예외 상황은 시작 단계에서 모두 찾기 힘들기 때문에 기능을 구현 하면서 계속해서 추가해 나갑니다!
기능 목록은 기능 구현을 하면서 변경될 수 있다는것을 인지하기!
기능을 구현하면서 문서를 계속 업데이트합니다.
죽은 문서가 아니라 살아있는 문서를 만들기 위해 노력하기!

구현

하드 코딩에 관하여

문자열, 숫자 등의 값을 하드 코딩하지 말기!
상수(static final)를 만들고 이름을 부여해 이 변수의 역할이 무엇인지 의도를 드러내기!

구현 순서

클래스는 상수, 멤버 변수, 생성자, 메서드 순으로 작성합니다.

변수 이름

변수 이름에 자료형, 자료 구조 등을 사용하면

한 함수가 한 가지 기능만 담당하게 구현하기

함수 길이가 길어진다면 한 함수에서 여러 일을 하려고 하는 경우일 가능성이 높습니다.
아래와 같이 한 함수에서 안내 문구 출력, 사용자 입력, 유효값 검증 등 여러 일을 하고 있다면 이를 적절하게 분리한다.
public List<String> userInput() { System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."); String userInput = Console.readLine().trim(); String[] splittedName = userInput.split(","); for (int index = 0; index < splittedName.length; index++) { if (splittedName.length < 1 || splittedName.length > 5) { throw new IllegalArgumentException("[ERROR] 자동차 이름은 1자 이상 5자 이하만 가능합니다."); } } return Arrays.asList(splittedName); }
Java
복사

함수가 한 가지 기능을 하는지 확인하는 기준을 세우기

만약 여러 함수에서 중복되어 사용 되는 코드가 있다면 함수 분리를 고민해 본다.
함수의 길이는 15라인을 넘어가지 않도록 하기.

테스트

테스트 코드를 왜 작성 하는지 고찰하기

단지 기능을 점검하기 위한 목적으로 테스트를 작성하는 것은 아닙니다. 테스트를 작성하는 과정을 통해서 나의 코드에 대해 빠르게 피드백을 받을 수 있을 뿐만 아니라 학습 도구로도 활용할 수 있습니다!

처음부터 큰 단위의 테스트를 만들지 않는다

테스트의 중요한 목적 중 하나는 내가 작성하는 코드에 대해 빠르게 피드백을 받는 것입니다.
시작부터 큰 단위의 테스트를 만들게 된다면 작성한 코드에 대한 피드백을 받기까지 많은 시간이 걸립니다
문제를 작게 나누고, 그 중 핵심 기능에 가까운 부분부터 작게 테스트를 만들어 나갑니다.
큰 단위의 테스트
자동차경주를 시작해서 사용자가 이름, 진행 횟수를 입력하면, 게임을 진행한 후 그 결과를 알려 준다.
작은 단위의 테스트
무작위 값이 4 이상이면 자동차가 전진한다.
무작위 값이 3 이하이면 자동차가 전진하지 않는다.