함수 추출하기는 내가 가장 많이 사용하는 리팩터링 중 하나다객체는 특정 로직과 데이터를 외부와 공유하려 할 때 공유할 .. 설명해주는 적당한 크기의 문맥이 되어준다.좋은 이름을 떠올리는 데 효과적인 방법이 하나 있다. 바로 주석을 이용해 함수의 목적을 설명해보는 것이다
단순한 출력 이상의 기능이 필요해지는 순간 그 데이터를 표현하는 전용 클래스를 정의한다.아래는 기본형을 Priority 클래스를 바꾼 모습!변수 대신 컨텍스트와 메소르를 제공하면 다른 곳에서 사용할 수 있어 코드 중복이 줄어든다!https://zigsong.g
모듈화: 서로 관련 있는 들이 잘 모아 놓는 것. 모듈성이 좋다면 해당 기능을 수정하려고 할 때 다른 것들은 이해하지 못해도 할 수 있게 만들어줌. 그리고 수정이 한 곳에서만 일어날 수 있음. 모든 함수는 컨텍스트 안에 존재하며, 대부분 특정 모듈에 속한다. 캡슐화를
이 포스트는 지그송님의 "리팩터링 8장 -2" 를 참고하여 거의 똑같이 타이핑하였습니다.함수는 코드를 이해하기 쉽게 해주고 중복을 없애준다.inline 코드를 함수로 치환한 모습이다.특히 라이브러리가 제공하는 함수로 대체할 수 있다면 더 좋다.하나의 데이터 구조를 이용
특정 값에 대해 동일하게 반응하는 코드가 여러 곳이라면 한데 모으는 게 효율적.리펙터링의 대상이 될 속성을 담은 데이터 구조를 컨테이너라고 하자.1\. 컨테이너에 특이 케이스인지를 검사하는 속성을 추가하고, false 를 반환하게 한다.2\. 특이 케이스 객체를 만든다
역할이 둘 이상인 변수가 있다면 쪼개야 한다. 역할 하나당 변수 하나다.1\. 변수를 선언한 곳과 값을 처음 대입하는 곳에서 변수 이름을 바꾼다.2\. 가능하면 이때 불변으로 선언한다.3\. 이 변수에 두 번째로 값을 대입하는 곳 앞까지의 모든 참조(이 변수가 쓰인 곳
겉보기 부수효과가 있는 함수와 없는 함수는 명확히 구분하는 것이 좋다. 질의함수(읽기함수)는 모두 부수효과가 없어야 한다. 이를 '명령-질의 분리'라고도 한다.예제 생략. 두 함수의 로직이 아주 비슷하고 단지 리터럴 값만 다르다면, 그 다른 값만 매개변수로 받아 처리하
세터 메서드가 있다는 것은 필드가 수정될 수 있다는 뜻이다. 객체 생성 후에는 수정되지 않길 원하는 필드라면 세터를 제공하지 않았을 것이다.세터 제거하기 리팩터링이 필요한 상황은 주로 두 가지다. 첫째, 사람들이 무조건 접근자 메서드를 통해서만 필드를 다루려 할 때다.
메서드 올리기를 적용하기 쉬운 상황은 메서드들의 본문 코드가 똑같을 때다. 그러나 메서드 올리기 리팩터링을 적용하려면 선행 단계를 거쳐야 할 때가 많다.메서드 올리기를 적용하기에 가장 이상하고 복잡한 상황은 해당 메서드의 본문에서 참조하는 필드들이 서브클래스에만 있는