개발 노트 Physical Design of Code 2018/03/08 10:44 by cagetu


: Logical Design은 코드의 구조/아키텍쳐에 대한 고민이고, Physical Design은 실제 코드와 파일들을 어떻게 나누고 구현할 것인지에 대한 고민에 대한 이야기이다. 최대한 의존성이 없고, 빠르게 빌드되는 코드를 만드는 것이 목표이다. Our Machinary의 결론은 간단하다. C 형태로 간다는 것이다. 특히 "Morden C++" 형태를 과감하게 벗어버렸다. 이 프로젝트 굉장히 재미있고 관심가는 주제들이 가득하다.

: windows.h를 최소화하는 것에 대한 내용. WIN32_LEAN_AND_MEAN를 적용하기도 하고, 실제로 각종 매크로들을 덜어낸 github에 최소화 버전 프로젝트를 실행하는 분도 있다능...

: Header Hero에 대한 이야기. 파일들이 얼마나 의존성이 있는지 분석해주는 툴~

의존성 벗어나기 위해서는 다음과 같은 전략이 있음.
1) 전방선언 (일반 클래스처럼 typedef와 template도 된다는 사실을 기억하자!
class MyClass; 
typedef int Id;
template <class T> class Vector;

2) PIMPL 
3) in-place 변수 -> pointer 변수 + 전방선언 (가독성이 떨어짐으로 간절히 필요한 곳(desperate)에만 사용)
// a.h
class B;
class A 
 A();
 B *_b;
 static const int SIZE_OF_B = 20;
 char _b_storage[SIZE_OF_B];
}; 

// a.cpp 
#include ”b.h” 
A::A()
{
 XASSERT(sizeof(B) == SIZE_OF_B);
 _b = new (_b_storage) B(); 
}
이건 이렇게 활용되기도 한다. 


* 기타
 

덧글

댓글 입력 영역



메모장

내가 먼 훗날에 이 글들을 보았을 때, 좋은 추억이 될 수 있기를...

나를 위해... 나에게 쓰는...

msn: cagetu@hotmail.com
mail: cagetu79@gmail.com
twitter: twitter.com/cagetu
facebook: facebook.com/cagetu