이 블로그 검색

2014년 4월 13일 일요일

내가 본 거지같은 소스들 - 잘못된 추상화

지금까지 일한곳들에 존재하는, 기존 거지 발싸개 같은 소스들을 유지, 보수하면서 느낀점들을 정리한다.  

잘못된 추상화

추상화란 프로그램이 사용할 객체를 정의하기 위해, 필요한 정보들을 뽑아내는 작업이라고 할수있다. 잘못된 추상화란 객체를 잘못 정의하는것이다. 예를 들어 데이터베이스 테이블을 위한 객체를 정의한다고 해보자. 어떤  객체를 정의해야 할까? 
일단 각각의 테이블들을 각각의 객체로 정의한다고 가정해보자. 

자.. 여기서 내가 실제 겪고 있는 거지소스를 예로 한번 들어본다. 

누군가 DataFormat  테이블을 위해 CDataFormat 이라는 객체를 정의했다. 그런데 이 객체가 하는일이 무엇이라고 생각되는가? 난 이름만 보고 DataFormat 테이블에서 select 를 통해서 가져오는 데이터 집합을 관리하는 역활을 수행한다고 생각했다 (왜냐면 클래스명이 테이블명과 동일하고, 알다시피 데이터베이스 테이블은 집합의 개념 아닌가?). 그런데 코드를 분석할수록 점점 이해가 힘든 부분이 많아졌다. 그리고 결국 이 소스가 읽기 어려운 원인은 이 클래스가 DataFormat table의 하나의 데이터(1 row)  를 위한 객체였다는것을 알게 되었다.