블로그 이미지
Flying Mr.Cheon youGom

Recent Comment»

Recent Post»

Recent Trackback»

« 2025/5 »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

 
 




조슈아 케이에브스키 저, 윤성준/조상민 역, 인사이트 출판


1. 접근 계기
2. 리팩토링이란?
3. 왜 이책인가.
4. 널오브젝트


외부에서 들어온 코드를 다듬을 필요가 있었다.
코드를 받았을 때, 대박이었다. 도저히 확장이 불가능한 코드였다. 마음같아선 다시 만들고 싶었지만, 일정에 대한 고민 때문에 쉽사리 결정 할 수 없었다.

그 때 기억속에 희미하게 다가온 것은 리팩토링이었다.


리팩토링이 무엇인가에 대한 이야기를 잠깐 하겠다.

리팩토링은 코드를 재생산한다는 의미로 기존코드의 생산성을 높게 만드는 일이다.
리팩토링에 대한 이해가 없는 사람이 보았을 땐, 일을 하기 위한 일로 보일 수 있다. 왜 리팩토링이 필요한지 설명하기엔 어려운 부분이 많다. 개발일정에 리팩토링이란 기간은 산출되지 않으며, 리팩토링은 개발기간에 완료되어야 한다고 생각한다.

그렇다면 어떻게 해야하는가?!

간결하게 말하면, 리팩토링을 안하면 된다. 프로젝트에 사용된 코드는 한번 사용하고 버리면 된다는 말이다.

내가 관리자라면 추천하지만, 강요하지 않는다. 이유는 간단하다. 리팩토링을 하지 않으면, 본인 스스로가 괴롭기 때문이다.

무슨말인지 직접적으로 다가오지 않는가? 대한민국 사람이라면 누구나 배운 ' 산 수 ' 로 예를 들어보겠다.
[ 1 + 2 + 3 + 4 + 5 + 6 + 10 + 20 + 30 + 40 * 3 + 2 + 1 + 3x = ] 은 무엇일까? 왜 이걸 물을까?

저 산술식이 당신이 짜 놓은 코드와 별반 다를게 없다.

[ 81 + 120 + 6 + 3x = ], -> [ 207 + 3x = ] 이렇게 간단하게 해 놓으면 얼마나 보기 좋은가?

이게 바로 리팩토링이다.

영어라서 생소할 뿐이다. 위 처럼 재생산하는 방식을 [ 덧셈 제거 패턴 ] 이라 명명했다 치자.
영어로 하면 [ Plus Remove Pattern ] 뭐 이런 이름이 되지 않을까? 아무것도 아닌데.. 괜히 영어라 부담된다.

이게 우리나라 리팩토링과 기술에 관한 일반적인 접근 오류다.

여기까지 리팩토링이 무엇인지 잠깐 이야기 해 보았다.



리팩토링에 대한 책을 본지도 오래되어 되새김을 하기 위해 책 몇권을 빌렸다. ( 아마 4권 빌린거 같다. )
그중에서 내 손에 남은 것은 단 한권, 조슈아 케리에브스키가 쓴 [ 패터을 활용한 리팩토링 ] 이다.
다른 책에 눈에 들어오지 않는 건, 이전에 코드에 집중한 리팩토링을 많이 들어왔고, 이미 익숙해져버린 탓이라 생각한다.

이책은 소프트웨어 구조 관점에서 접근 했다. 일반적 코드 스타일의 오류나 패턴을 잘못 활용하는 부분에 대한 지적도 있었다. 여기에서 내가 생각했었던 패턴 남용에 대해서도 언급되어 자신감이 붙은 부분도 있고, 내가 오류를 범하고 있음 느끼기도 해주는 좋은 가이드라 생각한다. 




나는 이 책을 볼 때, 차례로 보지 않았다.
책의 하드케이스 부분, 앞 부분은 리팩토링 목록 / 방향, 뒷 부분에는 코드 냄새 / 학습 순서가 있다.
나는 뒷 부분의 코드 냄새와 학습 순서를 기준으로 책장을 넘겼다.

절반정도 본 상태다. 현재까지 본 내용 중, 나의 뇌리에 강한 충격을 준 부분은 Null Object 패턴이었다.
Null Object를 한마디로 설명할 수 있다.
[ Null 체크 없이, 소프트웨어를 안전성을 보장한다. ]

완성도를 높이기 위해 예외처리를 많이 해본 사람이라면, 이게 얼마나 대단한 것인지 느낄 수 있을 것이다.
이 것을 제대로 이해하고 사용하려면 OOP 인터페이스에 대한 이해가 깊어야 한다는 단점이 있다.
그러나, 그 단점을 딛고 일어선다면, 남들 코드 1000줄로 구현한 내용을 약 500줄로 줄일 수 있게 된다.
코드 줄수에 대한 내용은 추측이 아니다. 패턴을 활용한 프로그래밍으로 3만줄이 나 되는 코드를 1만줄 이하로 구현한 경험이 있기 때문에 당당하게 말한다.

그러나 주의해야 할 것이 있다. 패턴 남용에 대해 잠깐 이야기 하겠다.
패턴은 추천 사항이지 필수가 아니다. 간단한 예를 들겠다.
[ if else ] 의 단 두가지의 분기문에 대해 Strategy 를 사용할 필요는 없다는 것이다.
고작 2줄에서 10줄이면 끝날 내용을 패턴 남용으로 프로그램의 복잡도를 높일 필욘 없다는 것이다.


본래의 내용으로 돌아와 Null Object의 사용법에 대한 이야기다.

우리는 일반적으로 널체크를 하고 안전하게 사용한다.
if( null == pGeneralObj )  pGeneralObj->Method();

널체크 없이 그냥 사용해도 소프트웨어의 안정성은 보장된다.
pNullObj->Method();

어떻게 이것이 가능할까?

이렇게 구현하면 된다.
class IMethod {
    public:
    void Method() = 0;
 };

class NullObj : public IMethod()
{
    public :
    void Method() {}
};

class RealObj : public IMethod()
{
    public:
    void Method() { cout << "oops! real object?"; }
};

어느 정도 힌트를 얻었을거라 생각한다.

우리는 오브젝트를 초기화할때, pObj = null; 와 같은 코드를 많이 사용한다.
만약, pObj = NullObj::GetInstace(); 를 사용하면 코드의 안정성과 개발 생산성의 가속을 얻게 된다.


한가지 주의 할 점이 있다.
Null Object도 마찬가지로 추천사항이지, 필수 사항이 아니다.
널체크 두 세번만 사용하는 부분이나 객체 수가 현저히 적은 부분에 사용할 필요는 없다.



책을 좀 더 보다가, 잼있는 내용이 있으면 더 덧붙일까 한다. ^-^ !




:

[책] 돈을 이기는 기술

책/독서후정리 | 2011. 6. 10. 18:51 | Posted by youGom
지은이 : 정우식

 회사에서 근골격검사 받으러 가는길에, 기다리는 시간을 달래기 위한 도구(?)로 책 한권을 보려고 했다. 그 책은 바로 "돈을 이기는 기술" 이다.
 평소, 돈을 더 많이 벌기 위해, 더 나은 삶을 살기 위해, 재밌는 삶을 위해, 행복한 삶을 위해, 경제 서적을 자주 접하고 있다. 그 중 가장 많이 본 책의 종류는 돈을 벌어 들이는 내용이었다. 부분에 책이 입을 늘려주는 용이다. 평소 경제 서적을 읽을 때, 스크( 단점 ) 에 대한 내용은 겨진다.
 그래서 너무 이익( 장점 )에만 치중되는 책의 내용은 믿지 않는 습관이 생겼다. 최근에 그런 생각이 들어서 그랬는지, 위 책이 내눈에 들어왔다.
 책을 꺼내, 책의 흐름을 살펴 보았다. 기다리는 동안, 쉽게 훑어 읽을 수 있을 것 같았다. 그래서 이 책을 선택했다. ( 책을 구입한게 아니라, 빌림 ) 


 이 책의 핵심은 [ 내가 제어할 수 있어야 한다. ]는 것이다.
 그에 대한 부제로, 마이너스를 마이너스 해라.
 산수를 배울 때, 2 - ( - 2 ) = 4를 배운다. 이 개념을 여기에서는 뉴 플러스라 칭한다. 
 
 이 책에서 말하는 마이너스는 지출이다. 일정 수입이 있고, 그 수입은 언제 끊길지 모른다. 그러나 수입이 많던, 적든, 우리는 계속, 수 지출과출을 하게 된다. 필수 지출은 반드시 지출되어야 하는 것이고, 선택 지출은 더 나은 삶을 영위하기 위한 지출로 나뉘게 된다.
  지출은 이 외에도 대출에 의한 지출도 있다, 자녀와 부모님 부양을 위한 지출도 포함한다. 이런 지출들을 그냥 흘려 보낼 것이 아니라, 무 계획을 세워서 체계적으로 해야한다.
 재무 계획은 가까운 미래와 먼 미래를 설계 하는 계획서라고 한다면, 과거의 지출을 기록하고 분석하기 위한 계부가 필요하다. 그리고 현재 지출을 통제할 수 있는 도구로 여러 장을 사용할 수 있다. 통장 활용에 대한 책은 [ 4개의 통장 ( 저자 : 고경호 ), 링크1 ]을 보면 도움이 된다. 

 돈을 이기는 기술 중에서 가장 중요한 것은 자기 절제인 것이다. 부자라고 해서 돈을 쉽게 사용하지 않는다. 오히려 부자들이 10원 100원에 대한 지출에 엄격하다. 돈을 제어하고 돈에 이끌리지 않는다면, 지금 당장 부유하게 살수 있게 된다. 반드시 돈이 많다고 해서 부유한 삶을 사는 것은 아니라는 말이다.
  1000만원을 벌어서 1000만원을 소비 하면, 그는 부자가 아니다. 1000만원을 벌어 100만원을 쓰는 사람이 부자되는 것이다. 물론, 부자가 되는 방법은 여러가지가 있다.
 가장 먼저 해야 할 것은 마음가짐과, 그 마음가짐을 주변에 표현하는 것이다. 그리고 가난한자의 언어를 사용하는 것이 아닌, 부자의 언어로 사람들과 소통해야 한다.

 진정한 부자는 돈이 이끌려 욕심을 채우는 것이 아니다.
마음의 안정을 얻고, 작은 것에도 감사하며 지내는 행복한 사람들이 부자인 것이다.
여러분들도 이미 부자임에도 불구하고, 마음에서 욕심을 부르고 있을지도 모른다.

 자신을 어 할 줄 알고, 남과 눌 줄 알며, 감사하는 마음으로 사는 사람이 끝내 부자의 길에 오르게 된다. 


 내가 과연 [ 돈을 이길수 있을까? ] 라는 생각이 든다면, 가볍게 이 책을 읽어보길 권한다.
 
 
링크1 : http://book.naver.com/bookdb/book_detail.nhn?bid=5325461



: