[리팩터링] 1장

코드깎는 노인·2022년 3월 27일
0

1.2

프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면,
먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서
원하는 기능을 추가한다.

  • 사람은 미적 상태에 민감하기에 기능,성능상에 문제가 없더라도 쉽게 파악할 수 있어야 한다.
  • 리팩터링이 필요한 이유는 나중에 변경할 일이 대부분 일어나고 다른 사람이 쉽게 이해할 수 있어야 하기 때문이다.

1.3

리팩터링하기 전에 제대로 된 테스트부터 마련한다.테스트는 반드시 자가진단하도록 만든다.

  • 원하는 내용을 소스코드와 테스트에 적어두면 중복검사로 실수가 줄어 전체 작업시간이 단축된다.

1.4

  • 코드를 분석하여 머리속에 임시 저장하며 이해해야하는 방식의 코딩은 피해야 한다.머리의 기억은 신뢰하기 어렵다.

    리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다.그래서 중간에 실수하더라도 버그를 쉽게 찾을 수 있다.

  • 아무리 간단한 수정이라도 수정 후 테스트하는것이 리팩터링의 핵심이다.작은 범위내에서 문제를 찾을 수 있기 때문이다.큰 범위내에서 디버깅시 전체 작업시간이 늘어난다.

    컴퓨터가 이해하는 코드는 바보도 작성할 수 있다.사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다.

  • 좋은 코드는 하는 일이 명확하게 드러나야 하는데 변수이름이 중요한 역할을 한다.
  • 리팩토링으로 성능이 저하될 수 있지만 리팩터링된 코드는 성능개선이 수월하므로 걱정하지 않아도 된다.
  • 필요없는 매개변수같은 변수를 제거해야 함수 쪼개기가 수월하다

1.5

  • 연극장르에 따라 계산방식이 다른데 장르추가시 조건부 로직을 수정해야한다.객체지향의 핵심이 다형성을 활용하는것이 적절하다

다형성이란

다형성은 단일 작업을 다른 형태들로 수행하는 객체지향 패러다임의 핵심 개념이다.다른 객체들에서 같은 매서드를 호출할 수 있다.

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
});

1.10

좋은 코드를 가능하는 확실한 방법은 '얼마나 수정하기 쉬운가'다

미적인 관점에서 좋은코드의 기준은 불명확하지만 수정하기 쉬운 코드라는 기준이 좀더 좋은 코드의 기준에 가깝다.수정하기 쉬운 코드는 수정시 빠르고 저렴하여 생산성이 극대화 된다.

리팩토링을 효과적으로 처리하는 핵심은 단계를 잘게 나눠야 더 빠르게 처리할 수 있고,코드는 절대 깨지지 않으며 이러한 작은 단계들이 모여 상당히 큰 변화를 이룰 수 있다는 사실을 깨닫는 것이다.

profile
내가 볼려고 만든 블로그

0개의 댓글