1주차 미션 정리
- 이 글은 프로그래머스 - 쉽게 구현해보는 자바 애플리케이션 스터디를 참여하며 쓴 글입니다.
- 1주차의 미션은 문자열 계산기(우선순위 적용)와 숫자 야구 게임을 구현하는 내용이었습니다.
문자열 계산기를 통해 배운점
1. 매직넘버를 의미 있는 단어로
public void hasPriority() {
for (int i = 0; i < formula.size(); i++) {
if (formula.get(i).equals("*") || formula.get(i).equals("/")) {
public static final String MULTIPLY_OPERATOR = "*";
public static final String DIVIDE_OPERATOR = "/";
public void hasPriority() {
for (int i = 0; i < formula.size(); i++) {
if (formula.get(i).equals(MULTIPLY_OPERATOR)||formula.get(i).equals(MULTIPLY_OPERATOR)) {
위에처럼 "*" , "/" 같은 매직넘버를 사용하는 게 아닌 상수로 하여 나타냄으로써 코드의 가독성을 높이고 의미 전달이 잘 될 수 있게 수정하자.
2. 변수명으로 의미가 전달되게 하자
public static String calculate(String operator, int startValue, int endValue) {
return String.valueOf(
getOperator(operator).getExpression().apply(startValue, endValue));
}
public static String calculate(String operator, int startOperand, int endOperand) {
return String.valueOf(
getOperator(operator).getExpression().apply(startOperand, endOperand));
}
위에 코드는 startValue, endValue로 나타내면 어떤 값을 넣는지 시작 값과 끝 값이라는 내용밖에 얻지 못하지만 Operand(피연산자)로 변경하게 되면 의미가 더 확실하게 전달될 수 있다.
3. 개행에도 의미가 있다
개발자의 따라 다르겠지만 개행에도 의미를 부여할 수 있다 예를 들어 상수 변수와 멤버 변수를 구분하기 위해 개행을 사용한다던가
클래스 레벨에서는 메서드와 메서드 사이 메서드 안에서는 로컬 변수 선언과 로직 사이에 개행이 사용될 수 있다. 의미 없는 개행은 삭제하자!
4. Return of boolean Exception
public boolean getStrike(Balls userBalls, int index) {
if (balls.get(index).equals(userBalls.balls.get(index))) {
return true;
}
return false;
}
public boolean getStrike(Balls userBalls, int index) {
return balls.get(index).equals(userBalls.balls.get(index))
}
equals메서드 또한 반환형이 boolean이기 때문에 굳이 if문을 사용해서 사용하는 거보다 코드를 더 간결하게 사용할 수 있다. 안일하게 코드를 길게 사용한 거 같아서 이런 코드 작성은 피해야겠다고 생각했다..
5. Collectors.toUnmodifiableList()
public List<Integer> createRandomNumbers() {
return Stream.generate(() -> (int) (Math.random() * Ball.MAX_BALL_NUMBER) + Ball.MIN_BALL_NUMBER)
.distinct()
.limit(Balls.BALL_SIZE)
.collect(Collectors.toUnmodifiableList());
}
스트림을 이용한 데이터 수집하고 변경이 없을 데이터라면 Collectors.toUnmodifiableList()로 반환한다 Collectors.toUnmodifiableList()는 자바10 버전에 추가된 메서드로 List객체를 수정 불가능하게 만들어준다. 만약 수정하려 한다면 UnsupportedOperationException 예외를 발생시킨다.
1주차 간단 후기
자바 공부를 독학으로 하고 순수 자바 프로젝트를 따로 만들어본 적이 없었는데 이번 스터디를 통해 자바로 구현사항을 구현해 나가면서 책으로 학습하던 것과는 다른 고민을 하게 되고 어려움을 느끼는 부분을 새삼 깨닫게 되었다. 자바 언어를 접하고 문법을 공부하는 것만으로 자바를 잘 활용하기는 힘들다고 생각된다. 성장을 원한다면 비싼 비용이 아니기 때문에 자신이 공부한 내용을 확인하고 더 성장하고 싶다면 꼭 추천하고 싶다. 리뷰어분들이 따로 미션전에 강의 영상도 올려주시고 참고하면 좋을 자료 또한 공유해주시기 때문에 미션을 해결하지 못하면 어떡하나 하는 걱정은 하지 않아도 될 거 같다! 또한 슬랙을 통한 질문도 가능하기 때문에 자바를 학습 중 인분이라면 성장하기 위한 하나의 방법이 될 거 같다.
추가로 피드백받은 전략 패턴, enum의 대한 부분은 추가 게시물로 자세히 다뤄보겠다!
'개발 이야기' 카테고리의 다른 글
SK 데보션 온라인 세미나(Goodbye Passwords! Hello Passkey!) 후기 (0) | 2022.08.29 |
---|---|
[회고] 2022 상반기 회고 (4) | 2022.07.11 |
글또 7기 다짐글 (0) | 2022.05.11 |