Refactoring
-
[SOLID] DIP에 대해 알아보자Refactoring 2024. 10. 8. 20:47
(기존 벨로그 링크) 드디어 SOLID에 마지막 법칙인 DIP !사실 DIP 없이는 OCP를 구현할 수 없다고 생각해서.. OCP를 완전히 이해하고 적용할 수 있는 사람이라면 DIP 개념이 어렵지 않을 것이라고 생각한다.그렇지만 처음 본다면 상당히 어려운 개념.. 쉬운 비유와 예시를 통해 마스터 해보도록 하자 ;-;DIPDependency Inversion Principle : 의존성 역전 법칙상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.이게 도대체 무슨 소리인가 싶지만.. 비유를 통해 차근차근 알아보자.노트북 VS 데스크탑일단 시작에 앞서 상위 모듈은 컴퓨터, 하위 모듈은 키보..
-
[SOLID] LSP와 ISP에 대해 알아보자Refactoring 2024. 10. 8. 20:45
(기존 벨로그 링크)LSPLiskov substitution principle : 리스코프 치환 원칙리스코프 형님이 만드신 원칙으로, ‘프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.’ 라고 정의되어 있다.이게 말이 참 어려운데.. 다른 정의도 살펴보자.‘자식클래스는 부모 클래스로써의 역할을 완벽히 할 수 있어야 한다’일단 두 개의 정의를 살펴보니 상속에 관한 얘기인 것 같고.. 아주 쉽게 정리하면 리스코프 원칙 따라서 상속 야무지게 해라! 라는 뜻으로 봐도 될 것 같다^^나는 처음 봤을 때 상속을 잘 하라는건 알겠는데 의문이 드는 말이 하나 있었다.‘부모 클래스를 자식 클래스로 대체해도 문제 없어야 한다’이게 도대체 무슨말이지..?많은 예시를 보면서..
-
[SOLID] OCP에 대해 알아보자Refactoring 2024. 10. 8. 20:44
(기존 벨로그 링크) 저번에 포스팅했던 SRP에 이어서 OCP를 공부해보려고 한다.OCPOpen-Closed Principle : 개방-폐쇄 원칙“소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”말이 참 어려운거 같은데 나는 이렇게 정리하고 싶다.확장에는 열려있다 : 새로운 코드를 추가하여 기능을 확장한다.변경에는 닫혀있다 : 기능을 확장할 때 원래 코드를 건들이지 않는다.쉽게 말하면 이미 짜놓은 코드 건들이지 말고 기능을 추가하거나 수정하라는 것 같다.근데 아무리 생각해도 기능을 추가하고 수정할 때 어떻게 원래 코드를 건들이지 말라는건가 싶다.그리고 원래 코드의 기준이 뭐지? 라는 생각도 들었다.그러면 코드를 보면서 이해해보자.아래 음식 주문을 받고 손님들에게 내어주어야 하는 중국집..
-
[SOLID] SRP에 대해 알아보자Refactoring 2024. 10. 8. 20:42
(기존 벨로그 링크) SOLID는 대학교에서 처음 접해 이론을 공부하고 정보처리기사를 딸 때 한 번 더 접했었다.이론을 공부하면서 ‘아, 이런 식으로 코드를 짜야 좋은 코드이구나’라고 생각만 했지 실제 코드에 적용해 본 적은 없었다. 원칙 따위 무시하고 기능 구현에만 급급했던..이번 야곰 리팩토링 아카데미에 참가하면서 SOLID의 중요성을 깊이 알게 되었고 코드에도 적용해보니 꼭 필요한 원칙임을 깨닫게 되었다. (특히 실무같이 큰 프로젝트에 있어서는 더더욱..)그래서 SOLID의 S인 SRP부터 차근차근 공부해 보려고 한다. SRPSingle Responsibility Principle, 단일 책임 원칙한 클래스는 하나의 책임만 가져야 한다!여기서는 클래스라고 나와 있지만 함수도 포함하여 생각하면 좋을 ..