미션2. 로또 - TDD 회고
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
본격적으로 TDD 기반으로 테스트 코드를 작성했다. 도메인 설계 기본기가 부족하니 객체에 대한 책임을 분리하는 게 어려웠다. 처음에는 프로덕션 코드보다 테스트 코드를 먼저 짜는 게 이상하고, 시간적으로 비효율적이라고 생각했는데 '이건 이렇게 동작해야 해!' 하는 테스트 코드가 있으니 과감하지만 안정적으로 리팩토링 할 수 있었다. 😮 1단계 - 문자열 계산기 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 이를 계산해 10을 출력하는 계산기를 구현해야 했다. 항상 메서드 재사용을 고려하자 나는 사칙연산 기호+기능을 enum 클래스로 구현했기 때문에 연산을 하려면 문자열 내의 기호와 일치하는 상수 값을 찾아야 했다. 처음에는 `values()` 메서드를 그대로 사용했다. public enum Ope..
미션1. 자동차 경주 - 단위테스트 회고
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
포비님이 첫 번째 미션은 쉽다고 말하셔서 할만하겠지 했는데 완전 오산이었다.첫 번째 미션부터 정말 어려웠고, 단기간에 이렇게 많은 블로그를 보고 학습한 적이 있었나 싶을 정도였다.몇 시간 동안 고민하다 손도 못 댈 때도 있고, 진지하게 내 수준이 아닌 것 같아서 그만둬야 되는 거 아닌가 생각했다 😥매 단계마다 엄청나게 많은 리뷰가 쏟아졌고, 계속 리팩토링 하면서 '재밌다!'라고 느끼는 게 신기했다! 1단계 - 학습 테스트 실습1단계는 본 미션에 들어가기 전 워밍업 단계로 String과 Set Collection에 대한 테스트를 구현하는 미션이었다. @DisplayName()에는 테스트 대상의 input과 output에 대한 시나리오를 설명하자처음에는 아래처럼 테스트 이름에 코드 로직을 설명했었다.@Te..
[Git] 원격 저장소의 브랜치 가져오기 (remote branch)
·
🛠 DevOps & Tool/Git
나는 최근 repository 하나를 2대의 PC에서 작업하고 있다. 즉 집에서 step1 브랜치에서 작업하다가, 회사 가서 step1 브랜치에서 이어서 작업한다. 평소처럼 집에서 push해놓은 걸 회사에서 이어서 작업하고 push 하려는데...! 회사 로컬에 원격 저장소의 step1 브랜치가 계속 안 떴다. 로컬, 원격 저장소를 확인하니 원격 저장소에 기본 브랜치만 뜸.. 구글링해서 `git remote update` , `git checkout -t origin/step1` 를 해봐도 안 됐다.....😥 해결 1. 원격 저장소의 모든 브랜치를 가져온다. $ git remote set-branches origin \* 2. 원격 저장소에 변경사항이 있는지 확인한다. $ git fetch origin 없..
동등성과 동일성&String.equals()
·
💻 Dev/Java
동일성, ==동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 것은 두 객체의 주소값이 같아 동일하다고 봐도 무방하다는 말이다. ==와 != 연산자는 기본 자료형에서만 값 비교를 위해 사용할 수 있다.참조 자료형에서 사용해도 되지만 참조 자료형에서 사용하면 값을 비교하는 게 아니라 주소값을 비교한다.Parent parent1 = new Parent("hyun");Parent parent2 = new Parent("hyun");System.out.println(parent1 == parent2); //falseParent 객체 안에 String name 이라는 변수에 같은 값을 넣고 비교해도 결과는 false다. 두 객체는 각자의 생성자를 사용하여 만들었기 때문..
TDD, 클린 코드 with Java 17기를 시작하며
·
📝 끄적끄적/TDD, 클린 코드 with Java 17기
NEXTSTEP에서 진행하는 TDD, 클린 코드 with Java 17기에 합류했다.🙌시작하게 된 이유 이제 구현했다고 손 놓고 좋아하는 연차는 지났다. 점점 연차가 쌓이면서 번아웃이 오는 와중에최근 프로젝트에서 계~속 닦달하는 바람에 거지같이 개발하면서 정말 현타가 왔다.급한 로직을 부탁해서 구현하면 오오 해주지만 이건 진짜 구현만 한건데하고 기분이 더 안 좋았다.그래서 자바 기본서를 사서 다시 읽었고, 클린 코드를 읽으면서 실무에 조금씩 적용하니 개발이 좀 재밌어졌다.근데 코드 리뷰를 받질 않으니 잘 하고 있는건가? 계속 의심이 생겼다. 80만 원은 적지 않은 돈이다.또 수료율이 30%도 안 된다고 하는데, 수료도 못하는데 듣는 게 맞나? 하고 많이 고민했다.결제하기까지 정말 많은 회고록을 읽었고 ..
3. 함수
·
📝 끄적끄적/📖 Clean Code
작게 만들어라!함수는 작을수록 좋다.20줄도 길다.들여쓰기(indent)는 1단이나 2단을 넘어가면 안 된다. 한 가지만 해라!함수의 추상화 수준은 하나여야 한다.지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 하는 것이다. 서술적인 이름을 사용하라!코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다. 함수가 작고 단순할수록 서술적인 이름을 고르기도 쉬워진다.길고 서술적인 이름이 짧고 어려운 이름보다 좋다.IDE에서 이런저런 이름을 시도한 후 최대한 서술적인 이름을 골라도 좋다. 또한 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사, 동사를 사용한다.ex)`includeSetupAndTe..