강의도 좋지만 책을 읽는 것이 중요
오브젝트는 상태와 행동을 가지는데 행동이 중요
상태는 행동을 실행했던 결과값을 상태에 저장
프로그램은 요구사항이 있으며 이를 충족하며 하나의 커다란 프로그램을 만듭니다.
이를 유지보수하기 쉽게 책임을 가지고 객체를 분리합니다.
요구사항에 필요한 여러 행동들을 묶어 하나의 객체를 생성하게됩니다.
객체는 행동(메소드)를 행하며 자기만의 목적을 수행하고 여러 객체의 협력을 통해 프로그램의 목적을 수행하게 됩니다.
매개변수를 많이 써야하는 이유?
메소드를 수행하는데 사용하는 변수가 명확해지므로 가독성이 향상됩니다.
멀티쓰레드에서 각 쓰레드마다 스택을 가지고있으며 힙을 공유한다. 쓰레드 세이프하게 하기위해서는 필드변수 보다 매개변수를 많이 쓰는 것이 좋습니다.
야크쉐에빙(야크털깎기) 하지않아야한다.
https://www.lesstif.com/software-engineering/yak-shaving-29590364.html
스프링부트는 스프링을 쉽게할수있도록 하는 것 기본적으로 JPA를 탑재, 다만 우리나라에서는 MYBATIS를 더 많이 사용합니다.
도메인은 해결하고자 하는 비즈니스 영역(문제 해결 영역)을 말합니다.
이는 DDD(도메인 주도 개발)에서 나온 용어입니다.
클래스에는 상태가 없으며 매개변수를 받아 메소드를 수행한다면 이는 유틸성 클래스로 볼 수 있습니다.
validation, 검증과정은 프론트에서도 하지만 백엔드에서도 해야합니다. 내 객체에서 필요한 검증은 내 객체내에서 하는 것이 좋습니다.
에러문 출력은 System.err.println()을 사용하는 것이 좋습니다. out은 버퍼에 모아서 출력하지만 err은 flush로 바로 출력합니다.
불필요한 의존성은 제거하여 의존성을 최소화 하는 것이 좋습니다.
CQRS 알아볼것