리팩토링 2판
-
리팩토링 2판 - Chapter 11 (API 리팩터링)Engineering WIKI/Book 2022. 10. 20. 01:53
11.1 질의 함수와 변경 함수 분리하기 우리는 외부에서 관찰할 수 있는 겉보기 부수효과(observerable side effect)가 전혀 없이 값을 반환해주는 함수를 추구해야 한다. (...중략...) 겉보기 부수효과가 있는 함수와 없는 함수는 명확히 구분하는 것이 좋다. (...중략...) 이를 명령-질의 분리(command-query sepration)라 하는데 p.413 명령 - 질의 분리는 꽤나 유용한 행동지침입니다. 결과 값을 가져오는 것과 객체 내부 상태 변경을 한 번에 하고 있으면 사용하는 입장에서는 결과를 예측하기 어려워집니다... 그래서 두 개의 함수로 분리시키는 것이 유지보수에 좋습니다. 11.3 플래그 인수 제거하기 함수의 인자로 boolean 값을 넘기는 관례는 피해야 합니다...
-
리팩토링 2판 - Chapter 10 (조건부 로직 간소화)Engineering WIKI/Book 2022. 10. 20. 01:43
조건문이 복잡해지는 경우 다루기가 굉장히 까다로워지는데 이것을 해결하기 위한 다양한 방법들을 제안합니다. 10.3 중첩 조건문을 보호 구문으로 바꾸기 함수 중간에 guard 로 로직을 중단하는 게 의도를 더 드러낼 수 있는 경우가 있습니다. Swift에서는 명시적으로 guard라는 구문이 있어서 편리하게 사용할 수 있는데, 언어 레벨에서 구문을 지원하기 때문에 많은 개발자들이 더 활발하게 사용하게 되는 것 같습니다. 중첩 조건문을 보호 구문으로 바꾸기 리팩터링의 핵심은 의도를 부각하는데 있다. 나는 if-then-else 구조를 사용할 때 if절과 else절에 똑같은 무게를 두어, 코드를 읽는 이에게 양 갈래가 똑같이 중요하다는 뜻을 전달한다. 이와 달리, 보호 구문은 "이건 이 함수의 핵심이 아니다. ..
-
리팩토링 2판 - Chapter 9 (데이터 조직화)Engineering WIKI/Book 2022. 10. 20. 01:36
이번에는 데이터 구조에 집중한 리팩토링을 다룹니다. 9.2 필드 이름 바꾸기 데이터 구조는 무슨 일이 벌어지는지를 이해하는 열쇠다. p.334 image_credit — Educative 데이터 구조는 단순히 값을 담아두는 공간이 아니라 프로그램을 더 잘 이해할 수 있도록 유도하는 역할을 해줍니다. 데이터 구조를 잘 선택하는 것만으로도 프로그램의 이해도를 높일 수 있다고 합니다. 알고리즘 문제를 풀다 보면 큐나 스택을 적절히 고르는 것만으로 문제가 쉽게 해결되는 것을 경험한 적이 있는데 실무에서도 동일하게 적용될 수 있을 것으로 기대됩니다. 데이터 구조가 중요한 만큼 반드시 깔끔하게 관리해야 한다. 다른 요소와 마찬가지로 개발을 진행할수록 데이터를 더 잘 이해하게 된다. 따라서 그 깊어진 이해를 프로그램..
-
리팩토링 2판 - Chapter 8 (기능이동)Engineering WIKI/Book 2022. 10. 20. 01:32
Chapter 8: 기능이동 지금까지는 프로그램 요소를 생성 혹은 제거하거나 이름을 변경하는 리팩터링을 다뤘다. 여기에 더해 요소를 다른 컨텍스트(클래스나 모듈 등)로 옮기는 일 역시 리팩터링의 중요한 축이다. p.277 적절한 위치에 기능이 있는 것도 가독성을 증가시키고 이해를 잘 할 수 있도록 도와준다는 내용입니다. 좋은 소프트웨어 설계의 핵심은 모듈화가 얼마나 잘 되어 있느냐를 뜻하는 모듈성(modularity)이다. 모듈성이란 프로그램의 어딘가를 수정하려 할 때 해당 기능과 깊이 관련된 작은 부분만 이해해도 가능하게 해주는 능력이다. p.278 모듈성이 중요하다는 것은 알고 있었지만 개발하면서 해당 부분에 대한 이해도가 높아지면 적극적으로 모듈성을 개선할 수 있다는 생각은 잘 하지 못하고 있었습니..
-
리팩토링 2판 - Chapter2 요약Engineering WIKI/Book 2022. 10. 20. 00:49
리팩터링 2판 자바스크립트로 예시가 되어 있음 리팩터링 패러다임은 언어를 초월하여 의미가 있음 그러나 실제 활용은 언어에 귀속됨 배워서 어디에 써먹을까? 리팩터링이 필요한 이유를 설득할 수 있음 책 한권 읽는다고 설득할 수 있는 것은 아님 적어도 물꼬는 틔워줄 수 있음 리팩터링 중 발생하는 고민을 일정량 줄일 수 있다. 간결한 코드가 좋을까, 성능이 우월한 방법이 좋을까? 어느정도의 성능 감소를 용인할 수 있을까? 깔끔한 코드와 디버깅이 용이한 코드 중 무엇을 할까? 언제 리팩터링 할까? 냄새나는 코드 냄새가 얼마나 나야 리팩터링 해야하나? 훨씬 깔끔한 코드를 작성할 수 있음 리팩터링을 수정하는 것이지만, 창조할때도 유용 동료의 Code Review 할 때 동료와 팀의 생산성에 기여할 수 있다! 스터디에..
-
리팩토링 2판 - Chapter 1Engineering WIKI/Book 2022. 10. 20. 00:41
1.1 ~ 1.4 가장 먼저 변수의 이름을 더 명확하게 바꾸기 매개변수의 역할이 뚜렷하지 않을 때는 부정관사(a/an)을 붙인다. 추출작업 전에는 지역변수부터 제거 1.5 ~ 1.8 단계 쪼개기 함수 추출하기로 뽑아내야한다. 2.1 ~ 2.4 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링을 하는 이유 → 리팩토링하면 소프트웨어 설계 좋아진다. 중복 코드 제거는 설계 개선 작업의 중요한 한 축. 소프트웨어를 이해하기 쉬워진다. 버그를 쉽게 찾을 수 있다. 프로그래밍 속도를 높일 수 있다. 언제 리팩터링해야 할까? 처음에는 그냥 한다. 비슷한 일을 두 번째로 하게 되는 경우 비슷한 일을 세 번째 하게 되는 경우. 코드 리뷰의 결..
-