본문 바로가기
도서/파이브 라인스 오브 코드

1부- 2장. 리팩터링 깊게 들여다보기

by 패쓰킴 2023. 8. 19.
728x90

리팩터링의 이점과 핵심을 정리한다.

 

가독성

의도가 잘 전달되어야 한다는 의미

예.

if a != false {
    return false
} else {
    return true
}

위와 같이 첫 조건문에 false를 사용하는 것은 (부정문을 사용하는 것은) 읽기 어렵고,

단순하게 만들 수 있는 코드를 길게 풀어 씀으로써 또 읽기 어려운 코드이다.

이를.

return a

위와 같이 리팩터링 하면, 같은 기능을 하며 가독성 좋은 코드로 만들 수 있다.

 

유지보수성

변경(수정 및 추가)되는 부분이 많으면 안된다. 한군데서 무언가 수정함으로 관련 없는 다른 곳에 문제가 발생하는 것은 코드가 취악한 것이고, 일반적으로 이 근원은 전역변수에 있다.

전역 변수는 어디서든 읽고 쓰기가 가능하여 값의 변경이 나타날 수 있다. 그러므로 얘기치 못한 상황으로 인해 불변속성이 유지 된다는 것은 불가능하다.

 

전역변수의 문제점

1. 어디서든 접근 가능 하므로 예상치 못한 문제가 발생할 수 있다.

2. 수정 시 전역변수를 사용한 모든 곳을 수정해야할 수 있다.

3. 사용범위가 클 경우 가독성이 떨어진다.

4. 어느 파일에서든 접근 가능한 전역 변수일 경우 동일한 변수나 메소드를 생성하게 되는 문제가 발생할 수 있다.

5. 동시에 여러 스레드에서 접근시 안정성 문제가 발생한다.

| 이러한 이유들은 OOP의 은폐성에 위반된다. 따라서 변수의 영향을 미치는 곳 내에 선언되어야 발생할 수 있는 문제를 줄일 수 있다. |

 

전역변수의 문제점을 해결하는 방법

1. 추상적으로 만들기

2. 사용 범위 제한하기

3. 싱글톤 패턴 사용하기

 

리팩터링의 핵심

리팩터링은 성능에 신경 쓰지 않아야 한다.

대부분의 시스템에서 성능은 가독성과 유지보수성보다 가치가 떨어지고, 성능을 신경써야 한다면 다른 도구 또는 전문가를 통해 처리 해야한다.(즉, 리팩토링은 성능을 개선시키는 것이 아니다)

리팩터링을 하여 하나의 for문의 이중 for문이 된다하여 좋지 않은 코드가 아니라는 뜻이다.

 

1. 가독성을 향상시킨다.

2. 유지보수성을 향상시킨다.

3. 기능에 변화가 없어야 한다.

 

유지보수성이 좋은 코드를 만드는 방법

상속보다 컴포지션을 사용한다.

만약, A 클래스를 사용해야 하는 B 클래스가 있다면
B 클래스에서 A 클래스를 상속하는 것이 아니라
B 클래스 내부에 A 클래스의 프로퍼티를 생성한다.
이렇게 컴포지션을 사용하게 되면 상속했을 때는 A 클래스의 메서드를 구현하거나 재정의 해주어야 하지만 컴포지션을 사용함으로써 유연한 코드를 작성할 수 있게 해준다.

 

 

참고:

https://codingcoding.tistory.com/361

https://creatijin.tistory.com/241

https://1y9u9j2in.tistory.com/155

728x90

댓글