본문 바로가기

728x90
반응형
개발/Clean Code 8

[오브젝트] 14장. 일관성 있는 협력 일관성 없는 코드의 문제점 1. 개념적으로 연관되어있는 코드에 대해 서로 다른 구현 방식을 채택할수록 설계의 일관성이 무너지게 됨 2. 코드를 이해하기 어려움: 한가지를 이해했다고 다른 한가지를 이해하는 것이 아님 결론은 유사한 기능을 서로 다른 방식으로 구현 해서는 안 된다는 것이다. 일관성 없는 설계와 마주한 개발자는 여러 가지 해결 방법 중에서 현재의 요구사항을 해결하기에 가장 적절한 방법을 찾아야 하는 부담을 안게 된다. 유사한 기능은 유사한 방식으로 구현해야 한다. 객체 지향에서 기능을 구현하는 유일한 방법은 객체 사이의 협력을 만드는 것 뿐이므로 유지보수 가능한 시스템을 구축하는 첫걸음은 협력을 일관성 있게 만드는 것이다. 설계에 일관성 부여하기 일관성 있는 설계를 만드는 데 가장 훌륭한 조언.. 2021. 7. 14.
[오브젝트] 10장. 상속과 코드 재사용 상속과 중복 코드 DRY 원칙 모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을 만한 표현 양식을 가져야 한다. DRY(Don't Repeat Yourself)는 '반복하지 마라'라는 뜻 중복 코드는 변경을 방해 코드를 수정하는 데 필요한 노력을 몇 배로 증가 시킴 중복 여부를 판단하는 기준은 변경 → 요구사항이 변경 됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복 중복과 변경 중복코드는 새로운 중복코드를 부르고, 버그 발생가능성도 높아짐 (아주아주 문제가 많다 이마리야) 민첩하게 변경하기 위해서는 중복코드를 추가하는 대신 제거해야한다. 중복을 제거하는 방법 중 하나: 클래스를 하나로 합쳐 타입코드를 추가해 로직 분기 → 단점: 낮은 응집도와 높은 결합도를 갖게됨 상속을 이용해서.. 2021. 6. 4.
[오브젝트] 9장 유연한 설계 01. 개방-폐쇄 원칙 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 여기서 키워드는 '확장'과 '수정'이다. 이 둘은 순서대로 애플리케이션의 '동작'과 '코드'의 관점을 반영 확장에 대해 열려 있다: 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 '동작'을 추가해서 애플리케이션의 기능을 확장할 수 있다. 수정에 대해 닫혀 있다. 기존의 '코드'를 수정하지 않고도 애플리케이션의 동작을 추가하거나 변경할 수 있다. 컴파일 의존성을 고정시키고 런타임 의존성을 변경하라 의존성 관점에서 개방-폐쇄 원칙을 따르는 설계란, 컴파일타임 의존성은 유지하면서 런타임 의존성의 가능성을 확장하고 수정할 수 있는 구조를 의미 컴파일 의존성: 코드.. 2021. 6. 3.
[Clean Code] 15장. JUnit 들여다보기 Introduction본 챕터에서는 JUnit을 작성하고, 테스트 코드를 통해 코드를 리팩토링하는 과정 주로 다루고 있습니다.장 제목인 JUnit 들여다보기와 책의 내용이 다소 무관하다고 느꼈으며, 오히려 클린코드와 리팩토링에 초점이 맞춰져 있습니다.본 블로그에서는 코드를 세세하게 다루는 것 보다는, 지금까지 clean code를 통해 언급된 부분과 본 챕터에서 다뤄진 내용의 중복되는 내용을 서술하는 정도만 하겠습니다. JUnit 프레임워크JUnit위키백과, 우리 모두의 백과사전. JUnit(제이유닛)은 자바 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발 면에서 중요하며 SUnit과 함께 시작된 XUnit이라는 이름의 유닛 ko.wikipedia.orgJUnit(제이유닛)은.. 2021. 3. 8.
[Clean Code] 10장. 클래스 Intro 2021년 새해를 맞이한 첫 포스트다. 요 며칠 계속 클린코드에 대한 포스팅을 미뤘는데, 솔직히 말하면 12월 한달동안 조금 게으르고 노는 것에 좀 더 치중했던 것 같다. (*자기반성..) 그래서 스터디를 위해 책은 읽어도 블로그에 읽은 내용을 정리하는 시간을 계속 미뤄왔다. 다시 마음을 잡을 겸, 이번 주차에 대한 내용을 정리할 겸 다시 클린코드와 관련된 포스트를 진행하고자 한다. 10장 이전의 아직 올리지 못한 포스트는 최대한 빨리 정리해 올려야지... (게으른 자의 삶이란..) Overview 10장 이전까지는 코드 행과 코드 블록, 함수에 초점을 맞춰 클린코드에 대한 설명이 되어있었다. 코드의 표현력과 함수에 대해서 깨끗한 코드를 유지하는 것도 중요하지만, 그것보다 조금 더 고차원인 클.. 2021. 1. 3.
[Clean Code] 5장. 형식맞추기 Intro 코드의 형식을 맞추는 목적이 무엇일까? 깔끔하고, 일관적이며, 꼼꼼하고, 질서정연한 코드라고 느껴지는 코드는 어떤 코드일까? 책에서는, 그리고 나 또한 공감하는 부분으로써 가독성이 높고, 형식을 깔끔하게 맞춰서 규칙을 착실하게 지키는 코드를 보면 '깔끔하다', '질서정연하다', '진짜 잘짰다' 싶은 생각이 드는 것 같습니다. 이건 팀으로 일할 경우에도 합의하여 규칙을 정하고, 모두가 그 규칙을 따른다면 깔끔하고 잘짰다는 인상을 줄 수 있는 것 같아요. 책에서 필자는 다음과 같이 얘기를 합니다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. ... 코드가 많이 바뀌어도 맨 처음 잡아놓은 구현스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 그.. 2020. 12. 1.
728x90
반응형