마지막으로 블로그에 포스팅을 한지 2달이 넘었다. 처음 블로그를 개설하고 나서 계속해서 꾸준히 글을 올리려고 노력했었는데 지난 2달 동안은 여러 이유로 소홀하게 되었다. 우선 이번 포스트 주제인 리팩터링에 대한 온라인 강의를 결제해서 공부를 했는데 강의 영상과 관련된
책에서 소개하는 리팩터링 기법에 대해서 복습 겸 정리하고 있지만 가장 중요한건 어떤 코드가 더 좋은 코드인지 판단하는 능력이다.
시작하며
기능 이동 함수 옮기기 좋은 소프트웨어 설계의 핵심은 모듈화가 얼마나 잘 되어 있느냐를 뜻하는 모듈성이다. 서로 연관된 요소들을 함께 묶고, 요소 사이의 연결 관계를 쉽게 찾고 이해할 수 있도록 하면 프로그램의 어딘가를 수정하려 할때 해당 기능과 깊이 관련된 작은 일부만 이해해도 가능하게 해준다. 다른 함수 안에서 도우미 역할로 정의된 함수 중 독립적으...
변수는 긴 코드의 결과를 저장했다가 나중에 쉽게 참조하려는 목적으로 흔히 쓰이는데 이런 변수에는 값을 단 한 번만 대입해야 한다. 대입이 두 번 이상 이뤄진다면 여러 가지 역할을 수행한다는 신호다. 역할이 둘 이상인 변수가 있다면 쪼개야 한다.데이터 구조는 프로그램을
복잡한 조건부 로직은 프로그램을 복잡하게 만드는 가능 흔한 원흉에 속한다. 조건을 검사하고 그 결과에 따른 동작을 표현한 코드는 무슨 일이 일어나는지는 이야기해주지만 왜 일어나는지는 제대로 말해주지 않는다. 코드를 부위별로 분해한 다음 해체된 코드 덩어리들을 각 덩어리
외부에서 관찰할 수 있는 겉보기 부수효과가 전혀 없이 값을 반환해주는 함수를 추구해야 하기 때문에 겉보기 부수효과가 있는 함수와 없는 함수는 명확히 구분하는 것이 좋다. 값을 반환하면 서 부수효과도 있는 함수를 발견하면 상태를 변경하는 부분과 질의하는 부분을 분리해야
무언가 중복되었다는 것은 한쪽의 변경이 다른 쪽에는 반영되지 않을 수 있다는 위험을 항상 수반하기 때문에 메서드들의 본문 코드가 똑같을 때는 메서드 올리기를 적용할 수 있다. 서브클래스들이 독립적으로 개발되었거나 뒤늦게 하나의 계층 구조로 리팩터링된 경우라면 필드가 중