리팩터링5 [리팩터링] 7장 캡슐화 캡술화란? 데이터에 대한 접근을 함수로만 한정하는 것 캡슐화의 이점 데이터에 대한 접근을 한정함으로써 의도치 않은 변경을 예방한다.(전역변수/가변데이터) 데이터 입출력시 추가로직을 쉽게 한다. ex) 객체의 사본 제공, 특정 입력 무시 1. 레코드 캡슐화하기 레코드를 데이터 클래스로 전환하기 레코드 간단히 말하자면 구조체 JS 에서 모든 object는 그 자체로 레코드로 사용 가능. HashMap 등으로도 레코드 사용 가능. 레코드 캡슐화의 결과는 결국 레코드를 클래스로 만드는 것. 레코드는 데이터의 집합. 레코드 캡술화는 이 데이터들에 대한 입출력 함수를 만드는 것. 데이터 + 입출력 함수 = 클래스 2. 컬렉션 캡슐화하기 컬렉션 자체를 반환하지 않는다. 복제본을 반환. 읽기 전용으로 제공 등을 이용한.. 2022. 9. 4. [리팩터링] 6장 기본적인 리팩터링 1. 함수 추출하기 코드를 언제 독립된 함수로 묶어야 할까? 많은 의견들이 있지만, 저자는 '목적과 구현을 분리'를 기준으로 추천한다. 코드를 보고 무슨 일을 하는지 파악하는데 한 참을 걸린다면 그 부분을 함수로 추출한 뒤 '무슨 일' 에 걸맞는 이름을 짓는다. 이렇게 해두면 나중에 코드를 다시 읽을 때 함수의 목적이 눈에 확 들어오고, 본문 코드(그 함수가 목적을 이루기 위해 구체적으로 수행하는 일)에 대해서는 더 이상 신경 쓸 일이 없다. 함수를 새로 만들고 이름을 붙일 때 "어떻게" 가 아닌 "무엇을" 하는지가 드러나는 이름을 짓도록 주의하자. 목적을 잘 드러내는 이름을 붙여야 한다. 2. 함수 인라인하기 때로는 함수 본문이 이름만큼 명확한 경우도 있다. 리팩터링 과정에.. 2022. 9. 4. [리팩터링] 4장 테스트 구축하기 리팩토링의 핵심은 겉보기 동작의 유지 "코드가 깨졌다면 그것은 리팩터링이 아니라 어설픈 리스트럭쳐링" 그것을 보장해 주는 것이 테스트 테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전 테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 구현보다 인터페이스에 집중하게 된다면 장점도 있다. 게다가 코딩이 완료되는 시점을 전확하게 판단할 수 있다 .테스트를 모두 통과한 시점이 바로 코드를 완성한 시점이다. TDD 테스트 주도 개발 (처음에는 통과하지 못할) 테스트를 작성하고, 이 테스트를 통과하게끔 코드를 작성하고, 결과 코드를 최대한 깖끔하게 리팩터링하는 과정을 짧은 주기로 반복. 이러한 테스트-코딩-리팩터링 과정을 한 시간에도 여러 차례 진행하기 때문에 코드를 대.. 2022. 9. 4. [리팩터링] 3. 코드에서 나는 악취 코드에서 나는 악취에 대해 어떤 경우에 악취가 나는지 간단히 알아보자. 나중에 기법들을 배우며 다시 돌아볼 것. 1. 기이한 이름 2. 중복 코드 3. 긴 함수 4. 긴 매개변수 목록 5. 전역 데이터 전역 데이터 사용 주의하자6. 가변 데이터 (const가 아닌 것. 주의하자.)7. 뒤엉킨 변경 단일 책임 원칙이 제대로 지켜지지 않을 때, 즉 하나의 모듈이 서로 다른 이유들로 인해 여러가지 방식으로 변경되는 일이 많을 때. 예를 들어 지원해야 할 DB가 추가될 때마다 함수 세 개를 바꿔야 하고, 금융 상품이 추가될 때마다 또 다른 함수 네개를 바꿔야 하는 모듈이 있다면 뒤엉킨 변경이 발생한 것.8. 산탄총 수술 코드를 변경할 떄마다 자잘하게 수정해야 하는 클래스가 많을 때 풍김.9. 기능 편애 어떤 함.. 2022. 9. 4. [리팩터링] 2. 리팩터링 원칙 리팩터링 정의 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 두 개의 모자 리팩터링 기능 추가 이 두 가지를 한꺼번에 고려하며 작업하지 말고, 각각 리팩터링 모자를 썼을 때와 그렇지 않을 떄를 구분해서 작업하자. 리팩터링의 이유 리팩터링을 하는 이유: 경제적인 이유(프로그래밍 속도) 도덕적인 이유(그냥 해야하는 것 같아서)가 아님. 리팩터링 언제?? 3의 법칙 일단 개발한다. 같은 일을 두번하게 되면.. 일단 한다. 또 같은 일을 하면, 리팩터링 하자! 준비를 위한 리팩터링 기능 추가하기 전에, 리팩터링 하면 더 쉽게 추가할 수 있음. 이해를 위한 리팩터링 코드 파악에 리팩터링이 효과적일 수 있음. 쓰레기 줍기 비효율적인 코드 발견 .. 2022. 8. 23. 이전 1 다음 반응형