본문 바로가기

레벨1

(12)
[코드 리뷰 정리] Level 1. 블랙잭 2021-03-15글 Controller에 있는 도메인 로직 게임 진행을 위해 Controller에 많은 역할을 구현했었다. 위 피드백을 받고 BlackjackGame이라는 객체를 만들어 게임의 진행을 하도록 구현했다. 각각의 플레이어들의 게임을 진행에 Input과 Output이 연결되어 있어서 처음 리팩토링에서는 BlackjackGame에서 플레이어들을 꺼내오고, 플레이어 하나 하나마다 게임을 진행하게 되었다. BlackjackController 일부 private void askWantToHit(Player player, BlackjackGame blackjackGame) { while (isAbleToAskHit(player, blackjackGame) && Answer.of(InputView.in..
📖 Exception에 대하여 2021-02-24 글 오늘 수업 시간에 자바의 Exception에 대해 배웠다. 수업을 듣고 들은 내용을 자바의 정석의 예외 처리를 함께 보면서 정리 ✍️ 프로그램 오류 종류 컴파일 에러 - 컴파일 시에 발생하는 에러 런타임 에러 - 실행 시에 발생하는 에러 논리적 에러 - 실행은 되지만, 의도와 다르게 동작하는 것 프로그램에서 실행 도중 발생할 수 있는 모든 경우의 수를 고려해 이에 대한 적절한 대비가 필요하다! Error와 Exception의 차이? Error 애플리케이션이 정상적으로 동작하는데 심각한 문제가 있는 경우 사용한다. ex) 메모리 부족이나 스택오버플로우 등 개발자가 Error를 사용하는 일은 거의 없다고 한다. Exception 비즈니스 로직 상에서 에러가 발생하는 경우 사용한다. 발..
📖 Enum 열거형 2021-02-21 열거형이란? JDK 1.5 부터 새로 추가된 개념이다. 기존의 언어들과 자바의 Enum이 다른 점은 열거형이 갖는 값 뿐만 아니라 타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다. '타입에 안전한 열거형'을 제공하여 실제 값이 같아도 타입이 다르면 조건식 결과가 false이다. 값 뿐만 아니라 타입까지 체크한다. 상수 값이 바뀌어도 기존 소스를 다시 컴파일하지 않아도 된다. 열거형의 정의와 사용 enum 열거형이름 {상수명1, 상수명2, ...} 열거형에 정의된 상수를 사요아는 방법은 열거형이름.상수명이다. 클래스의 static 변수를 참조하는 것과 동일하다. 열거형 상수간 비교 == 연산자를 사용하여 비교할 수 있다. equals()가 아닌 ==으로 비교가 가능하다는 것..
[강의] Level 1. TDD 강의 정리 2021-02-20 이번 로또 미션을 구현하면서 페어와 TDD를 연습하면서 강의에서 들었던 모든 이점들을 느낄 수 있었다. 사실 완벽하게 TDD를 진행했다고 자신할 수 없으나, 강의 내용에서 들었던 이점들을 페어와 함께 TDD를 진행하면서 경험할 수 있었다. 여기서는 TDD 강의 내용을 들으면서 정리한 것을 조금 가공해서 정말 간단히 기록한다 ✍️ TDD, 리팩토링이란? TDD(Test Driven Development) - 테스트 주도 개발 프로덕션 코드 프로그램 구현을 담당하는 코드 테스트 코드 프로덕션 코드가 정상적으로 동작하는지 확인하는 코드 TDD란? 일반적으로는 프로덕션 먼저 구현 후 테스트 였는데 이건 테스트를 먼저 한 후 프로덕션을 개발한다. TestFirstDevelopment + 리팩토..
[Effective java] item 34. int 상수 대신 열거 타입을 사용하라 2021-02-20 글 Enum ? [Java] Enum 열거형 int Enum Pattern의 단점 타입 안전을 보장할 방법이 없다. public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; 위와 같은 예제에서는 사과용 상수 이름은 모두 APPLE_로 시작, 오렌지용 상수는 ORANGE_로 시작한다. 이는 ..
[Effective java] item 28. 배열보다는 리스트를 사용하라 2021-02-17 글 이사 우테코 Level 1 로또 미션에서 "배열 대신 ArrayList를 사용한다."가 요구사항에 들어있었다. 왜 배열대신 ArrayList를 사용하라는 것일까? 찾아보니 이펙티브 자바에서도 그 내용이 나와 있어서 스스로의 물음에 답하는 내용을 정리하려 한다. Array(배열) vs ArrayList(리스트) 들어가기에 앞서 이펙티브 자바를 보기 전 Array과 ArrayList의 차이점을 간단히 적어본다. Array(배열) 사이즈가 정적인 데이터 구조이다. 일단 생성되면 크기를 변경할 수 없다. 원시 타입과 객체 모두 원소로 포함할 수 있다. for 또는 for-each 루프를 통해서 반복된다. 길이에 대해 length 변수를 사용한다. Generic(제네릭)을 사용 할 수 없다..
[Java] 불변 객체 (Immutable Class) 2021-02-15 글 불변 객체 (Immutable Class)란? 불변 객체란 말 그대로 변경이 불가능한 객체이다. 객체를 생성 후 외부에 의해 그 상태를 바꿀 수 없다. 여기서 바꿀 수 없다는 것은 heap 영역에서 그 객체가 가리키고 있는 데이터 자체의 변화가 불가능 함을 의미하며 stack에 있는 주소값을 다른 주소값을 가리키도록 변경하는 것은 문제 없다. ➕ 여기서 말하는 heap 영역이란 무엇인가? 간단하게 말해 원시타입(int, boolean 등)은 그대로 stack 영역에 올라가지만, 참조변수를 가지고 있는 타입(Object, Array 등)은 그 실제 데이터들은 heap 영역에 저장하고 이 주소값을 Stack 영역에 가지고 있다. 예시로 String name = "amazzi";에서 n..
[코드 리뷰 정리] Level 1. 자동차 경주 게임 2021-02-15 글 우테코 레벨 1 난생 처음으로 코드리뷰를 받게 되었다. 사실 TDD도 처음이고, 누군가 내 코드를 읽고 피드백 받는 것 또한 처음인데 이런 기회가 정말 감사하면서도 떨렸던 첫 리뷰 요청이었다 👀 코드 리뷰를 받으니 내가 모르는 부분과 나의 실수들을 명확히 볼 수 있었다. 또한 리뷰를 보니 나의 잘못된 코딩 습관도 발견할 수 있었다. 덕분에 고민하고 공부해봐야 할 것들을 알 수 있어 정말로 나에게 너무나도 큰 도움이 되었다 🙇‍♂️ 피드백 받은 부분에서 계속 머릿 속에 박기 위해 몇 가지는 정리하고 넘어가는 것이 좋을 것이라 판단이 되었다. 불필요한 객체 생성을 피하라 Pattern 객체는 비싸다 나는 지금껏 올바른 숫자인지, 문자인지 등을 검증할 때 대부분 Pattern 객체를 정..