생각보다 힘들다. T-T
첫번째 DB 추상화
<query id="getBoardList" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="in" column="module" default="'board','guestbook','blog'" />
<group pipe="and">
<condition operation="like" column="mid" var="s_mid" pipe="or" />
<condition operation="like" column="title" var="s_title" pipe="or" />
<condition operation="like" column="comment" var="s_comment" pipe="or" />
<condition operation="equal" column="module" var="s_module" pipe="or" />
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
</group>
</conditions>
<navigation>
<index var="sort_index" default="module_srl" order="desc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>위의 코드는 db쿼리문이다. 일종의 DB쿼리 추상화문인데...
다양한 DB지원을 위해 코드 추상화를 하는 건 알겠다만. 이건 배보다 배꼽이 큰게 아닐런지?
한줄 두줄이면 나오는 쿼리를 이렇게 따로 따로 각각 쿼리문을 추상화해서 코드에 넣고, 관리한다는 건 좀 문제가 있지 않을까 싶다.
문득 Rails의 간편한 추상화 문법들이 그리웠다. T-T
두번재 OOP도 알맞게
오픈 소스라고 한다면, 어느정도 일반사람들도 구문을 이해하고, 수정/개발이 쉬워야 한다고 생각한다. 특히 OOP의 경우 상속이 2~3 level만 가도 난공불락의 요새가 되어버린다.예전인가? python 소스 overriding 된 함수 하나 해석하는데 많은 시간을 소비했던걸 기억한다.
XpressEngine 소스를 살펴보니 예전 Visual C++, MFC, ActiveX, ATL 프로그램 하는 것 같더라. 소스의 세부사항은 모르면서 이럴때에는 이걸 써야 하고, 저럴때에는 이걸 써야 하고... 에휴...
class simplepiexeAdminView extends simplepiexe {
/**
* @brief 초기화
**/
function init() {
// module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅
$module_srl = Context::get('module_srl');
if(!$module_srl && $this->module_srl) {
$module_srl = $this->module_srl;
Context::set('module_srl', $module_srl);
}
// module model 객체 생성
$oModuleModel = &getModel('module');
// module_srl이 넘어오면 해당 모듈의 정보를 미리 구해 놓음
if($module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if(!$module_info) {
Context::set('module_srl','');
$this->act = 'dispSimplepiexeAdminIndex';
} else {
ModuleModel::syncModuleToSite($module_info);
$this->module_info = $module_info;
Context::set('module_info',$module_info);
}
}
if($module_info && $module_info->module != 'simplepie') return $this->stop("msg_invalid_request");
// 모듈 카테고리 목록을 구함
$module_category = $oModuleModel->getModuleCategories();
Context::set('module_category', $module_category);
$template_path = sprintf("%stpl/",$this->module_path);
$this->setTemplatePath($template_path);
}
}문득 이런 XpressEngine의 코딩을 해야하는 내가 이런 잡다한 코딩 스타일로 시간을 죽이고 있는게 아닌지 회의가 든다.
Posted by 엽기민원


