[Refactoring] 제어할 수 있는 코드를 작성하자!
·
우테코 7기/2주차
❐ Description 이번 과제에서는 랜덤하게 값을 출력하는 유틸성 클래스가 있다.랜덤 값을 테스트하기 위해선 어떻게 해야할까?     ❐ 랜덤 값을 제어할 수 없는 구조처음에는 랜덤 값 생성을 `getCondition()`에서 진행해주었다. 그리고 상황에 따라서 Condition을 조회하는테스트 코드를 작성할 때 문제가 발생했다. 상황에 맞게 끔 랜덤 값을 생성해줘야 하는데 이를 내가 제어할 수없는 것이다. 그래도 정말 말도 안되는 방법으로 테스트를 작성하기는 했다.`System.setProperty()` 메소드를 사용해서 테스트할 때만 프로퍼티를 셋팅해준다.프로퍼티를 셋팅할 때 테스트 값을 value로 넣어준다.그 결과 불필요한 클래스들이 생겨나기 시작했다.     ❐ 랜덤 값을 제어할 수 있는 ..
[Refactoring] 패키지가 무엇을 제공하는지 전달하자!
·
우테코 7기/2주차
❐ Description주로 Common, Util, Global과 같은 패키지 명을 많이 쓰는데, 이번에 과제하면서Util도 여러 곳에서 사용하니깐 Common 하위에 들어가야 하지 않을까? 라는 생각을 했다. 그래서 아래의 키워드로 구글링을 했는데util package goes under common?구글링 과정에서 알게 Common, Util, Global, Base 같은 패키지명 사용을 지양하라는 글을 봤고,이를 과제에 적용해보았다.     ❐ Tag_v1.0tag v1.0에서 사용한 패키지명을 다음과 같다. #️⃣ Common여기서 common의 역할은 프로젝트 전반에 사용되는 정보들을 제공한다. 하지만 네이밍만 봐서는 해당 패키지가무엇을 제공하는지 명확하게 알기가 어렵다. 하물며 common은..
2주차 회고
·
우테코 7기/2주차
❐ Description2주차 작업 과정에서 느꼈던 점과 과제 후기를 작성한다.     ❐ Source code GitHub - Gilbert9172/java-racingcar-7Contribute to Gilbert9172/java-racingcar-7 development by creating an account on GitHub.github.com     ❐ Self - Review1.  [문자열 덧셈 계산기]에서 받은 피드백을 적용해보았는가?최초 개발 과정에서는 저번 피드백을 최대한 반영하면서 개발을 해보았다.모든 상수를 하나의 클래스에서 관리패키지명에 대한 피드백 (Infra)책임이 많은 도메인[Error]를 Prefix로 설정해보기부정어를 사용한 boolean 네이밍 등등..이걸 최대한 다 ..
코드 리뷰 & 피드백
·
우테코 7기/1주차
❐ Description1주차 피드백을 정리하자.PR link     ❐ Code Review자신의 아이디러를 멋지게 표현한 코드들을 리뷰 하면서 정말 많은 것들을 경험할 수 있었다. 특히, 아키텍쳐 능력이 뛰어난 분도 여럿 본거 같다. 내가 받은 피드백을 정리해보았다.  Reviewer : 20HyeonsuLee & songsunkook & NaMinhyeok & phk1128  #️⃣ 책임이 많은 도메인 설계feedback linkfeedback commit link : TODOSeparateManager가 많은 책임을 가지고 있는게 아닌가요? 라는 피드백을 받았다.SeparateManager가 문자열을 분리하고, 커스텀 구분자를 추출하는 역할까지 하고 있었다. 최대한 책임을 덜어냈다고 생각했지만..
메소드 파라미터에 final 사용하기
·
우테코 7기/1주차
❐ Description1주차 과제 제출 후 코드 리뷰 과정에서 파라미터에 final을 선언하는 코드를 봤다.그래서 왜 선언하는지 정리해보려고 한다.     ❐ Call by value & Call by reference1. Call by valuecall by value는 메서드에 인자로 전달된 값의 복사본이 메서드에 전달된다는 것을 의미한다. 즉, 메서드 내에서해당 파라미터를 변경해도 원래 값에는 영향을 미치지 않는다. 자바는 Call  by value 방식을 채택한 언어이다. public class Main { public static void main(String[] args) { int original = 10; modifyValue(original); ..
자동차 경주
·
우테코 7기/2주차
❐ Description과제 기한2024.10.22(화) 15:00 ~ 2024.10.28(월) 00:00과제 진행 Branchhttps://github.com/Gilbert9172/java-racingcar-7과제 제출 PR 링크https://github.com/woowacourse-precourse/java-racingcar-7/pull/53Git conventionhttps://gist.github.com/stephenparish/9941e89d80e2bc58a153#file-commit-md     ❐ Requirements1. User경주할 자동차 이름을 입력할 수 있다.1개 이상구분은 쉼표(,)로 한다.이름은 5자 이하만 입력할 수 있다.이동 횟수를 입력할 수 있다. 2. System자동차에는..
[JUnit5] 입력 값을 mockking할 수 있을까?
·
우테코 7기/1주차
❐ DescriptionController 테스트를 작성하기 위해서는 사용자의 입력을 mockking해줘야 한다.오늘은 사용자 값을 mockking해서 테스트를 작성하는 과정을 정리하고 그에 필요한 지식들을 정리하려고 한다.     ❐ 배경 지식From. 자바의 정석 Chap.151. 입출력이란?우선 자바의 입출력을 제대로 이해해야 한다.입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고 받는 것을 의미한다. 자바에서 입출력을수행하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 stream이라고 정의한다.자바에는 바이트 기반의 스트림과 문자 기반의 스트림이 있는데, 오늘은 바이트 기반의 스트림을 사용하게 된다. 2. 바이트 기반 스트림 (InputStream..
[Java] 객체를 복사해보자
·
우테코 7기/1주차
❐ Description프리코스를 진행하면서 Immutable 객체를 복사해서 사용해야 할 일이 있었고,작업 과정에서 알게된 내용을 정리하고 옛날에 공부했던 내용을 복습할까 한다.     ❐ Shallow & Deep1. Shallow얕은 복사는 객체를 복사할 때, 객체의 필드 값만 복사하는 방식이다. 즉, 기본 타입(예: int, double 등)은값 자체를 복사하지만, 참조 타입(예: 객체, 배열 등)은 참조 주소만 복사한다. 따라서 얕은 복사를 하면 복사된 객체와 원본 객체가 동일한 참조 필드를 공유하게 된다.만약 복사된 객체나 원본 객체에서 참조 타입 필드가 가리키는 객체를 변경하면, 다른 객체도 영향을 받는다. Arrays.copyOf() 메소드는 shallow copy를 수행한다.   2. D..