kok202
[2019.02.14] 클린 코드 (SerialDate 리팩토링 사례 분석)

2019. 2. 14. 23:19[공부] 독서/클린 코드

SerialDate : java.util.Date의 불편함을 해소하고자 만든 라이브러리


변경이력을 나타내는 주석은 더 이상 필요없다.

주석을 HTML 태그를 사용해서 표시하지마라


명칭에 관한 고민

어떤 기준을 기점으로 얼마나 ~가 지났는지를 표현하기에 Serial 은 적합한가? relative offset이 더 적합하다.

Serial은 일련번호, 즉 식별 번호에 사용하기 적합하다.


옛날 프로그래밍에서 사용하던 기교를 피하라

ex. Constant 클래스를 상속하게 해서 TARGET_CONSTANT에 접근할 때 Constant.TARGET_CONSTANT 와 같이 접근하는 것을 피하려던 기교.

바람직하지 못하므로 enum을 써라. 독자적인 enum 소스파일을 만들어 사용하라. enum에는 toInt()와 같은 것이 있으면 좋다.

public enum Day{

MONDAY(0);

TUESDAY(1);

WEDNESDAY(2)

THURSDAY(3);

FRIDAY(4);

SATURDAY(5);

SUNDAY(6);


private final int valueOfDay;


private Day(int i) { valueOfDay = i}


public int toInt() { return valueOfDay; }


public Day generateFromInt(int valueOfDay){

for(Day day : Day.values)

if(day.valueOfDay) == valueOfDay)

return valueOfDay;

}

}  





부모 클래스는 자식 클래스를 몰라야한다. 다음 아래 코드와 같은 경우를 피하라

class People{

public Male getMale(){ new Male(); }

public Female getFemale(){ new Female(); }

}

구조적으로 필요하다면 추상팩토리 패턴을 사용하라.