TIL
🌱 난 오늘 무엇을 공부했을까?
📌 좋은 품질의 코드?
📍 3가지 가치
📍 3가지 가치를 매기는 기준
- 이걸 지켜야 회사는 돈을 줄인다
- 이걸 지켜야 나의 몸값이 올라간다
📍 무조건 지켜야 하는가
- 상황에 맞게 최선의 방법을 찾는다
- 하지만, 훈련은 극단적으로 해본다. -> 현재의 나
📍 OOP
- 객체지향의 사실과 오해 -> 읽으면 좋다.
- 객체 속성을 가져오지 말고 객체가 일하도록 시켜라.
📌 SOLID (객체 지향 설계)
📍 SOLID란?
- 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다
- SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가
읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링
하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다.
📍 SOLID 5가지 원칙
- S: SRP
단일 책임 원칙 (Single responsibility principle)
한 클래스는 하나의 책임만 가져야 한다.
- O: OCP
개방-폐쇄 원칙 (Open/closed principle)
“소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”
- 확장을 할때는 기존의 코드를 최대한 건드리지않고 확장하자
- 기존의 코드를 수정하게되면 연쇄적인 수정을 하지 않을 수 있게 하자
- L: LSP
리스코프 치환 원칙 (Liskov substitution principle)
“프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.” 계약에 의한 설계를 참고하라.
- 부모 클래스의 역할을 자식 클래스에서도 할 수 있어야 한다.
- I: ISP
인터페이스 분리 원칙 (Interface segregation principle)
“특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.”
- D: DIP
의존관계 역전 원칙 (Dependency inversion principle)
프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
- 상위 수준의 모듈은 하위수준의 모듈에 의존해서는 안된다.
원칙은 가치를 지키키 위해 존재한다.
원칙은 극단적으로 연습해본다.