본문 바로가기
일기/우아한테크코스 3기

[우아한테크코스 3기] 레벨 1 - 7주차 회고

by 검프 2021. 4. 8.

한 주 명언

“Happiness is a direction, not a place.” – Sydney J. Harris
- 행복은 어떠한 장소가 아닌 방향이다.

브라운조 데일리원들과 크루들이 생일축하를 해줘서 정말 행복한 한주였어요.

누군가 생일인 크루가 있다면, 받은 만큼 더 축하해주고 싶어요.

 

5Fs란?

1. Facts(한 것)

실제로 했던 일이나 겪었던 일의 사실을 적습니다.

2. Feelings(느낀 것)

일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다.

3. Findings(배운 것)

일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다.

4. Future Actions(할 것)

배운 점을 토태로 이후엔 어떻게 유지하고 개선할 것인지 적습니다.

5. Feedbacks(시간이 지난후 결과)

적절한 기간 이후 (저는 1달로 정함) 결과가 어떘는지 적습니다.

 

1. Facts(한 것)

지노에게 2단계 블랙젝 피드백을 받았다.

  • 리팩토링을 진행했다.

지노에게 2단계 2번째 pr을 보냈다.

  • 리팩토링을 진행했다.

함수형 프로그래밍 수업을 들었다.

다니와의 체스 페어프로그래밍이 시작했다.

포모에게 페어프로그래밍 피드백을 받았다.

크루들이랑 카페에서 모여 코딩을 했다.

테코톡이 진행됐다.

  • 피카가 TDD와 단위테스트를 주제료 발표를 했다.
  • 바다가 JUnit 5 사용법에 관한 발표를했다.

포비가 엘레강트 오브젝트 수업을 진행했다.

 

2. Feelings(느낀 것)

질문을 할때에는 내가 이해했던 부분과 의문점인 부분을 글로 정리해야한다는 것을 알게됐다.

  • 정리하다보면 어느정도 답을 찾게된다.

페어에 대한 피드백은 꼭 하는것이 좋은거 같다.

  • 나의 문제점, 고쳐야할 부분들을 정확하게 알게된다.

크루들과 만나서 할때 효율과 혼자서 할 때의 효율이 극명하다.

  • 아에 모르는 것들이 있을 때, 크루들과 함께 고민을 얘기하다 보면 어느새 풀려있다.

공부해야할 것이 정말 많다.

  • 해도해도 끝이없다. 재밌다.

 

3. Findings(배운 것)

함수형 프로그래밍

  1. 변경 가능한 상태를 불변상태(Immutab)로 만들어 SideEffect를 없애자.
  2. 모든 것은 객체이다.
  3. 코드를 간결하게 하고 가독성을 높여 구현할 로직에 집중 시키자.
  4. 동시성 작업을 보다 쉽게 안전하게 구현 하자.

페어프로그랭시 무조건 다 구현해야하나?

그렇지는 않다. 어느정도 도메인 설계만 완료하고, 찢어지는 페어들도 많음

인터페이스와 추상클래스는 언제 사용할까?

Question

현재 Car가 하나만 정의되어있는데, 

인터페이스의 구현체인 SonataCar, AvanTeCar, porshecCar 등의 객체가 생길때 

move를 위한 로직이 중복될거 같아요.

중복코드를 인터페이스를 사용하여 어떻게 줄일 수 있을까요?

Answer

인터페이스 - 추상클래스 - 클래스 이런 구조로 중복을 제거 한다. 

인터페이스의 디폴트 메서드는 정말 필요할 때만 사용한다.

이때,

부모클래스의 인스턴스 변수를 전부 private를 만들어라.

재정의하지 않는 메서드는 final화 하라

클래스의 이름은 무엇인지에 기반해 짓는다.

객체는 그의 역량(capability)으로 특정지어야 한다.

public class Cash {
        private int dollars;

        public Cash(int dollars) {
                this.dollars = dollars;
        }

        public String usd() {
                return String.format("$ %d", this.dollars);
        }
}

메소드의 이름을 작성할땐 빌더(builder)의 이름은 명사로, 조정자(manipulator)의 이름은 동사로

빌더(builder):

뭔가를 만들고 새로운 객체를 반환하는 메서드

반환 타입은 절대 void가 될 수 없으며, 이름은 항상 명사여야 한다.

int pow(int base, int power);
loat speed();
String parsedCell(int x, int y);

형용사를 덧붙여 메서드의 의미를 좀더 풍부하게 해도 괜찮.

조정자(manipulator)

객체로 추상화한 실세계 엔티티를 수정하는 메서드

반환 타입은 항상 void이고, 이름은 항상 동사여야 한다.

void save(String content);

자바가 제공하는 자료구조와 라이브러리는 그냥 있는거 쓰자

관념적인 부분은 포기해야한다.

생성자 하나를 주 생성자로 만들어라

클래스에는 23개의 메서드와 510개의 생성자를 포함하는 것이 적당

주 생성자는 프로퍼터를 초기화 하는 일만 담당. 이런 초기화를 주 생성자만 담당하게 해야함

부 생성자는 주 생성자를 호출하도록 한다.

https://user-images.githubusercontent.com/48986787/114009230-edb0b380-989d-11eb-8efb-bee2f0042ea8.png

  • 이때 주생성자는 아래에 두는게 조금더 좋다(포비 입장)

테스트를 위해 생성자를 추가하는 것은 좋다.

생성자를 부담없이 추가하자.

생성자에 코드를 넣지 마라

== 전달인자에 손대지 마라

https://user-images.githubusercontent.com/48986787/114009881-86dfca00-989e-11eb-837d-4d0550490d68.png

4. Future Actions(할 것)

레벨별 이슈들 정리하기

 

5. Feedbacks(시간이 지난후 결과)

댓글