본문 바로가기

마틴파울러

[클린 코드] 서문, 0장 들어가면서 최근 좋은 기회로 당근마켓 개발자분들과 우아한형제들 개발자분들이 함께하는 클린 코드 북스터디에 함께하게 되었다. 느슨한 코드에 한 줄기 긴장감이 되어줄 책 읽기와 북스터디 활동이 기대된다. 앞으로 매 장 스터디하며 인상깊은 구절을 정리해보려고 한다. (원래는 1장부터 적어보려했는데, 서문에도 인상 깊은 구절이 많아서 따로 적어보았다.) 서문 옮긴이 서문 (박재호님) 이 책은 로버트 C. 마틴이 40년 이상의 개발 경험을 토대로, 프로 개발자가 어떤 마음가짐으로 개발에 임해야하는지를 다루고 있다. 이 책을 읽고 나면, 왜 전문가 정신, 그리고 장인 정신이 강조되어야 하는지 이해할 수 있다. 이 글은 Java 언어를 베이스로 하지만, 언어나 프레임워크에 관계 없이 우리가 얻어가야할 원칙과 기본은 변하지 않았.. 더보기
[리팩터링 2판 - 실전편] 11장 API 리팩터링 마틴파울러 리팩터링 2판 정주행 스터디 - 실전편 모듈과 함수는 소프트웨어를 구성하는 빌딩 블록이며, API는 이 블록들을 끼워 맞추는 연결부다. 이런 API를 이해하기 쉽고 사용하기 쉽게 만드는 일은 중요한 동시에 어렵기도 하다. 그래서 API를 개선하는 방법을 새로 깨달을 때마다 그에 맞게 리팩터링해야 한다. 11.01 질의함수와 변경함수 분리하기 Separate Query from Modifier 우리는 사이드이펙트가 전혀 없이 값을 반환해주는 함수를 추구해야 한다. 사이드이펙트가 있는 함수와 없는 함수는 명확히 구분하는 것이 좋다. '질의함수(읽기함수)는 모두 사이드이펙트가 없어야 한다.'라는 규칙을 따르자. 이를 명령-질의 분리(command-query separation)이라고 한다. http.. 더보기
[리팩터링 2판 - 실전편] 10장 조건부 로직 간소화 마틴파울러 리팩터링 2판 정주행 스터디 - 실전편 10.1 조건문 분해하기 Decompose Conditional 복잡한 조건부 로직은 프로그램을 복잡하게 만드는 가장 흔한 원흉에 속한다. 긴 함수는 그 자체로 읽기가 어렵지만, 조건문은 그 어려움을 한층 가중시킨다. 조건을 검사하고 그 결과에 따른 동작을 표현한 코드는 무슨 일이 일어나는지는 이야기해주지만 '왜'일어나는지는 제대로 말해주지 않을 때가 많은 것이 문제다. 거대한 코드 블록이 주어지면 코드를 부위별로 분해한 다음 해체된 코드 덩어리들을 각 덩어리의 의도를 살린 이름의 함수 호출로 바꿔주자. 그러면 전체적인 의도가 더 확실히 드러난다. 10.2 조건식 통합하기 Consolidate Conditional Expression 비교하는 조건은 다르.. 더보기
[리팩터링 2판 - 실전편] 09장 데이터 조직화 마틴파울러 리팩터링 2판 정주행 스터디 - 실전편 9.1 변수 쪼개기 Split Variable 변수에 대입이 두 번 이상 이뤄진다면 여러 가지 역할을 수행한다는 신호다. 역할이 둘 이상인 변수가 있다면 쪼개야 한다. 예외는 없다. 역할 하나당 변수 하나다. 여러 용도로 쓰인 변수는 코드를 읽는 이에게 커다란 혼란을 주기 때문이다. 9.2 필드 이름 바꾸기 Rename Field 데이터 구조가 중요한 만큼 반드시 깔끔하게 관리해야 한다. 개발을 진행할수록 데이터를 더 잘 이해하게 된다. 따라서 그 깊어진 이해를 프로그램에 반드시 반영해야 한다. 한 함수 안에서만 쓰였다면 캡슐화할 필요없이 그저 원하는 속성들의 이름을 바꿔주는 것으로 끝이다. 9.3 파생 변수를 질의 함수로 바꾸기 Replace Deriv.. 더보기
[리팩터링 2판 - 실전편] 08장 기능이동 마틴파울러 리팩터링 2판 정주행 스터디 - 실전편 8.1 함수 옮기기 Move Function 좋은 소프트웨어 설계의 핵심은 모듈화가 얼마나 잘 되어있느냐를 뜻하는 modularity이다. 모듈성이란 프로그램의 어딘가를 수정하려 할 때 해당 기능과 깊이 관련된 작은 일부만 이해해도 가능하게 해주는 능력이다. 모듈성을 높이려면 서로 연관도니 요소들을 함께 묶고, 요소 사이의 연결 관계를 쉽게 찾고 이해할 수 있도록 해야한다. 이해도가 높아질수록 소프트웨어 요소들을 더 잘 묶는 새로운 방법을 깨우치게 된다. 그래서 높아진 이해를 반영하려면 요소들을 이리저리 옮겨야 할 수 있다. 어떤 함수가 자신이 속한 모듈 A의 요소들보다 다른 모듈 B의 요소를 더 많이 참조한다면 모듈 B로 옮겨줘야 마땅하다. 이렇게하면 .. 더보기