프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면,
먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서
원하는 기능을 추가한다.
리팩터링하기 전에 제대로 된 테스트부터 마련한다.테스트는 반드시 자가진단하도록 만든다.
리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다.그래서 중간에 실수하더라도 버그를 쉽게 찾을 수 있다.
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다.사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다.
다형성은 단일 작업을 다른 형태들로 수행하는 객체지향 패러다임의 핵심 개념이다.다른 객체들에서 같은 매서드를 호출할 수 있다.
class A {
display() {
document.writeln("A is invoked");
}
}
class B extends A {
display() {
document.writeln("B is invoked");
}
}
var a = [new A(), new B()];
a.forEach(function (msg) {
msg.display();
// A is invoked
// B is invoked
});
좋은 코드를 가능하는 확실한 방법은 '얼마나 수정하기 쉬운가'다
미적인 관점에서 좋은코드의 기준은 불명확하지만 수정하기 쉬운 코드라는 기준이 좀더 좋은 코드의 기준에 가깝다.수정하기 쉬운 코드는 수정시 빠르고 저렴하여 생산성이 극대화 된다.
리팩토링을 효과적으로 처리하는 핵심은 단계를 잘게 나눠야 더 빠르게 처리할 수 있고,코드는 절대 깨지지 않으며 이러한 작은 단계들이 모여 상당히 큰 변화를 이룰 수 있다는 사실을 깨닫는 것이다.