카테고리 없음

객체지향 원칙에 대한 고찰

pine tree root 2022. 10. 28. 20:51

1. 기능 구현 목록을 만들고 시작하자. 그리고 레거시라 느껴지고 도메인 지식이 늘어난다면 버리고 다시 짜라.
2. 테스트를 위한 생성자.
3. 컴파일 에러를 두려워 말자. 처음은 컴파일 에러가 당연하다. 왜냐면 프로덕션 코드가 없기 때문에.
4. iter를 치게 된다면, for ( 객체 : 객체 리스트) 가 나오게 된다.
5. 최대한 테스트를 통과할수 있도록 구현에만 집중하자.
6. 게터 메서드로 비교하지말고, 이퀄시를 통해서 객체간의 비교를 수행하자.
7. 구현과 설계를 한번에 하면 안된다. 구현을 빨리 해서 보려던 성급. 구현에만 집중해서 코드를 엉망으로 구현해서.
8. 구현 후 이너피스를 얻고 리팩토링(설계를 자주 한다)을 수행한다.
9. 블랭크는 메소드를 분리하기 위해 사용하기도 한다. a메소드 호출 후 한칸 뛰고 b메소드 호출.
10. 비즈니스 로직을 메소드화 해라. 로직의 중복이 줄어드는 효과를 얻을 수 있다.
11. 디미터 법칙을 위반하지 말라. 디미터 법칙 : 한줄에 점 하나만 찍는다. car.getPositon(). -> 점 2개 위반.
12. TDD를 하려면, 메시지를 잘 보낼줄 알아야 한다. 비즈니스 로직을 메소드 안에. 레거시 코드 로직이 비즈니스, 서비스 레이어에 있다고 한다. 대표적인 절차 지향 개발.
13. 상태 데이터를 가지는 객체에 메시지를 보내면, 중복을 상당히 줄일 수 있다.
14. 테스트 하기 어려운 코드가 설계를 개선해서 설계 가능하도록 개선할수 있는지.
15. 테스트 하기 어렵게 만드는 코드의 의존관계를 옮겨라. 즉 상위로 옮겨라. 그래서 상위로 옮기고 상위는 테스트를 안하고 옮겨서 테스트가 가능한 코드에 대해서 테스트를 수행한다.
16. 리팩토링 안전하게 as-is와 to-be가 공존하게 하는 것이다.
17. 전지할까 말까 -> 스트래티지 : 전략
18. 위처럼 인터페이스 기반으로 개발시 좋은점 : OCP원칙을 지킬수 있게 되는거다. 의존성 주입, 의존관계 주입이 되는거다.
19. 클래스 분리 원칙 : 원시값 포장 -> 변수값이 클래스명이 되는 경우가 많다.
20. 값을 포장해서 position.getPosition() 이러지 말고, Position에 메시지를 보낸다. 
21. 로직을 다 포장하고 추상화 하는거다. 또 모이게 만들수도 있다. 객체를 포장할때 생성자에서 익셉션을 날릴수도 있다.
22. 일급 콜렉션 : 인스턴스 변수로 콜렉스 하나만 가지는것.