ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [1주차 미션] 후기 및 피드백
    교육/우아한 테크 코스 2019. 5. 24. 17:09
    SMALL

    1주차의 미션은 프리 코스때 진행했던 "자동차 경주 게임"이였다.

     

    https://github.com/G-ONL/java-racingcar-1

     

    G-ONL/java-racingcar-1

    자동차 경주 게임 미션 저장소. Contribute to G-ONL/java-racingcar-1 development by creating an account on GitHub.

    github.com

     

    1주차에서는 해보았던 미션이지만, 짝(=페어) 프로그래밍으로 새로운 코드를 짰다.

    페어 프로그래밍은 2명 이상의 개발자가 한 컴퓨터에서 같이 코드를 구현해나가는 것이다.

    해 본 결과 페어 프로그래밍의 장점은 생각보다 견고한 설계와 디버깅이 함께 되어 시간이 확 단축되는 느낌이다.

    또한 의식적으로 단축키 사용이나 컨벤션을 지키려고 했고, 못 지켰을 시에는 페어분의 지적이 도움이 많이 되었다.

     

    1주차에 package와 import / class와 instance / 단위테스트에 대한 개념을 습득하고 프로그래밍을 진행했다.

    저번에 진행했던 부분이랑 짧은 시간이 걸려 완성을 할 수 있었다.

    미션안에 작은 미션이 따로 있는데 문자열 계산기를 만드는 부분이였다.

    이 부분에서 if (+,-,*,/) 를 안쓰고 구현하는 부분에 대해 미션을 주셨는데, Enum으로 해결을 했다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package calculator;
     
     
    public enum Operator {
        PLUS("+", (num1, num2) -> num1 + num2),
        MINUS("-", (num1, num2) -> num1 - num2),
        DIVIDE("/", (num1, num2) -> num1 / num2),
        MULTIPLE("*", (num1, num2) -> num1 * num2);
     
        private String operator;
        private BiFunction<Integer, Integer, Integer> expression;
     
        Operator(String operator, BiFunction<Integer, Integer, Integer> expression) {
            this.operator = operator;
            this.expression = expression;
        }
     
        static Operator of(String operator) {
            return Arrays.stream(values())
                    .filter(v -> operator.equals(v.operator))
                    .findFirst()
                    .orElseThrow(() -> new IllegalArgumentException(String.format("%s는 사칙연산에 해당하지 않는 표현식입니다.", operator)));
        }
     
        public int calculate(int i, int j) {
            return expression.apply(i, j);
        }
    }
     
     

    그래서 input 값(+,-,/,*)가 오더라도 of를 통해서 Enum 객체를 불러오고, 그 객체를 calculate 시켜서 Enum 에 저장해 놓은 식을 실행시킨다.  처음 람다식을 사용해보았는데, 공부를 해두면 확실히 편리할꺼 같은 부분이다.

     

    코드리뷰 피드백을 받은 부분을 정리하자면

     

    1. 코드 컨벤션 (축약어 사용 지양, 매직넘버, 하드코딩)

    2. 단일 책임의 원칙 (메서드 분리)

    3. 사용하지 않는 코드(=주석 처리된 코드) 지우기

    4. 다른 API가 없는지 찾아보기 (특히, 테스트와 관련된 부분 containsExactly(), isTrue(), isFalse())

    5. 추상적인 클래스 명 (Validator, View)

    6. 변수,메서드명에 자료구조, 타입형 쓰지 않기 (ex CarList, CarString)

    7. 일급컬렉션 사용하기

    8. 도메인에서 뷰 로직 분리하기

    9. 테스트 코드가 프러덕션 코드에 영향을 주면 안된다.

     

    이 정도의 피드백이 돌아왔고, 수정할 것은 수정하고, 의문점이 든 부분은 질문을 했습니다.

     

    공부할게 쌓여만 가는데 좋네요.

    LIST

    '교육 > 우아한 테크 코스' 카테고리의 다른 글

    [2주차 미션] 후기 및 피드백  (0) 2019.05.27
    단위 테스트  (0) 2019.05.12
    코드 컨벤션  (0) 2019.05.10
    우아한 테크코스 채용과정에 대한 소개와 느낀점  (0) 2019.05.09

    댓글

Designed by Tistory.