본문 바로가기

개발79

DRY 원칙! Don't Repeat Yourself. 반복하지 말라. 말 그대로 시스템을 개발함에 있어 똑같은 로직을 반복해서 작성하지 말라는 의미입니다. 간단 명료하지만 생각보다 잘 지켜지지 않아 결국 시스템 완성 후에 추가 요구사항과 버그 문제 해결에 큰 걸림돌로 되돌아 오지요. 중복의 특성은 아래와 같습니다. 1. 환경에 휩쓸려 선택의 여지가 없다고 생각하며 일으키는 안일함의 중복. 2. 간단하고 빠르게 진행할 수 있다고 착각하며 발생하는 성급함의 중복. 3. 중복 자체를 깨닫지 못하는 무지의 중복. 4. 충분한 정보 교환이 이루어지지 못해 발생하는 개발자간 중복. 우리가 늘쌍 겪고 있는 한국 IT 현실의 과거와 현재의 모습이기도 합니다. 비단 개발자 뿐만 아니라 기획자, 팀장, 업무 리더 등의 여러 파트에 책.. 2011. 11. 13.
NHibernate one-to-one Select N+1 문제 해결.... 지난 글에 표준 Linq를 제공하는 NHibernate.Query()에서 one-to-one에서 Select N+1 문제를 일으킨다는 내용을 보셨을 겁니다. (최근이죠...) 디밥 (http://debop.egloos.com/) 님께 자문을 구해 몇가지 해결책을 얻어 해결했기에 그 내용을 적어볼까 합니다. 저의 프로젝트 목적의 가장 첫 번째 기준은 "유연성"입니다. 유연성이라는 단어로 여러가지 장점 (확장성, 유지보수성, 테스트 용이성, 기타 등등)을 표현할 수 있겠는데요, 제가 목표로하는 유연성을 위한 구체적인 방법 중 하나는 "분리" 입니다. 구체적인 (코딩, 프레임워크 사용 등) 것 중에 하나인 하이버네이트는 ORM 도구로 데이터베이스의 데이터를 도메인 모델 클래스과 매핑해주는 도구입니다. 즉, 데.. 2011. 9. 18.
Visual Studio 의 초강력 리펙터링 툴인 ReSharper를 내려놓다.... 비주얼 스튜디오를 사용하시면서 한 번쯤 Visual Assist X (http://wholetomato.com/)라는 플러그인 툴을 들어보셨거나 사용해보신 적이 있을 겁니다. 다만 이 툴이 c# 쪽보다는 C++ 쪽에 좀 더 특화되어 있다라고 하더군요 (저는 하이라이팅용으로 잠깐 사용해봤습니다.) C# 쪽 (VB 포함) 에도 강력한 플러그인 툴이 있는데 바로 ReSharper (http://www.jetbrains.com/resharper/) 라는 도구입니다. 프레임워크 버전에 따라 코드를 간소화 시켜주거나 불필요한 키워드를 제거할 수 있게 개발자에게 통지해 주거나 코드상의 문제등을 경고하여 개발자로 하여금 혹시 모르고 지나칠 수 있는 부분까지 커버해주는 아주 훌륭한 툴입니다. 저는 작년 어느 과장님의 소.. 2011. 9. 15.
[NHibernate] one-to-one 설정시 N+1 Select 문제.... 쿨럭~~ 본래 의도는 부모 레코드와 1:1 관계에 있는 자식레코드를 join을 통해 오직 1번만 요청하는 페이징 쿼리를 호출하는 것이었습니다. 하지만 스샷에서처럼 자식 레코드가 식별자 개수만큼 개별적인 SELECT가 발생하네요... 어떤 실수나 문제가 있는지 정말 찾기 어렵네요.... 2011. 9. 9.