본문 바로가기

분류 전체보기

(126)
[강의] 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..
[Java] String vs StringBuffer vs StringBuilder 2021-02-15 글 자바의 불변 객체를 공부하다가 String 과 StringBuilder가 예시로 자주 등장함을 보게 되었다. 나도 Java를 제대로 공부한지 얼마 안되서, 사실 String, StringBuffer, StringBuilder의 명확한 차이를 잘모르고 그냥 가져다 썼는데, 자바의 정석을 읽어보니 이 String이 굉장히 흥미로워서 👀 이번 기회에 명확히 정리하고 가는 것이 좋다고 생각했다. String String은 참 특이한 존재이다. 다른 언어에서 문자열이란 대부분 char형의 배열로 다루는데, 자바에서는 이 문자열을 위한 클래스가 존재한다는 것이다. 이 String 클래스를 깊게 보기 위해 String 클래스가 어떻게 이루어져 있는지 들여다보자. String.java 일부 pu..
[Git] 간죽간살 git profile 꾸미기🎀 2020-10-22 글 깃 프로필 작성해야지 작성해야지••• 맨날 다짐만 하다가 드디어 프로필을 작성했다. 근데 밋밋한 프로필을 그대로 놔두지 못하는 사람•••🙋‍♀️ 내가 Git 프로필을 꾸민 과정을 기록하겠다. 참고 자료 Github Profile Readme로 프로필 꾸미기 capsule-render 🚩 README.md로 프로필 등록하기 자 이제 내 깃헙으로 들어오자마자 보이는 프로필을 작성하고 꾸밀 것이다. 본인 깃허브에서 새로운 Repository를 생성한다. 이때 Repository 이름은 자신의 닉네임과 동일하게 설정하면 "You found a secret! NewWisdom/NewWisdom is a ✨special ✨ repository that you can use to add a R..
[코드 리뷰 정리] Level 1. 자동차 경주 게임 2021-02-15 글 우테코 레벨 1 난생 처음으로 코드리뷰를 받게 되었다. 사실 TDD도 처음이고, 누군가 내 코드를 읽고 피드백 받는 것 또한 처음인데 이런 기회가 정말 감사하면서도 떨렸던 첫 리뷰 요청이었다 👀 코드 리뷰를 받으니 내가 모르는 부분과 나의 실수들을 명확히 볼 수 있었다. 또한 리뷰를 보니 나의 잘못된 코딩 습관도 발견할 수 있었다. 덕분에 고민하고 공부해봐야 할 것들을 알 수 있어 정말로 나에게 너무나도 큰 도움이 되었다 🙇‍♂️ 피드백 받은 부분에서 계속 머릿 속에 박기 위해 몇 가지는 정리하고 넘어가는 것이 좋을 것이라 판단이 되었다. 불필요한 객체 생성을 피하라 Pattern 객체는 비싸다 나는 지금껏 올바른 숫자인지, 문자인지 등을 검증할 때 대부분 Pattern 객체를 정..
[Effective java] item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 2021-02-14 글 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 디자인 패턴의 팩터리 메서드와는 다르다. 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 하지만 정적 팩터리 메서드는 반한될 객체의 특성을 메소드명을 통해 드러낼 수 있다. Exmaple - 생성자 public Cars(List names) { validateNonDuplicatedNames(names); for (String name : names) { cars.add(new Car(name)); } } private void validateNonDuplicatedNames(final List names..