Skip to content

CHAPTER 5 리팩터링 기법 #5

@lee-ji-hoon

Description

@lee-ji-hoon

1. 코드를 리팩터링할 때 겪을 수 있는 문제는 어떤 것들이 있을까? 코드 리팩터링과 관련하여 어떤 생각을 가지고 있는지 이야기해보자.

2. 이진 검색 알고리즘의 개선된 형태를 설계한다고 가정하자. 증가하는 배열에서 주어진 값보다 크거나 같은 첫 번째 요소를 찾은 다음, 이 알고리즘에 대한 단위 테스트 케이스를 설계해보자.

3-1. 정적함수를 호출하는 코드인 IdGenerator.generateTransactionId()가 포함되어있다. 이 것이 코드의 테스트 용이성에 영향을 미치는지 생각해보자. 그리고 단위 테스트를 작성할 때 정적 함수인 generateTransatcionId()를 모의구현해야 하는지도 생각해보자.

3-2. 의존성 주입은 클래스 내부에서 객체를 생성하는 것이 아니라 외부에서 객체를 생성한 후 클래스에 전달하는 것을 의미하는데, 모든 객체를 클래스 외부에서 생성해야 하는 것이 옳은가? 또한 코드의 테스트 용이성에 영향을 주지 않고 클래스 내에서 생성할 수 있는 유형의 객체는 어떤 것이 있는가?

4. 일반적인 개발에서 디커플링은 어디에서나 볼 수 있다. 예를 들어 Spring의 AOP는 비즈니스 코드와 그렇지 않은 코드의 디커플링을 구현할 수 있게 도와주며, IoC는 객체 생성과 사용의 디커플링을 구현할 수 있는데, 이외에 또 다른 디커플링 방법이 있는지 생각해보자.

5. Logger 클래스의 객체인 logger는 static final로 정의되어 클래스 내부에 생성되는데, 이것이 IdGenerator 클래스의 테스트 용이성에 영향을 미치는지 생각을 해보고, Logger 클래스의 객체 logger를 의존성 주입을 통해 IdGenerator 클래스에 주입해야 하는지 생각해보자.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions