C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1103] Main 폼이 너무 비대해져 코드컴플리션이 먹지 않을때는 어떻게 하면 되나요?
김태선 [cppbuilder] 7805 읽음    2012-08-30 18:18
main.cpp main.h 가 있다고 한다면
메인폼은 UI이니 UI 관련 코드를 넣고
비지니스 로직이 있는 부분은 전부 클래스화 시켜서 따로
다른 소스로 빼내는 것이 좋습니다.

그런데, main.cpp 코드가 1만줄에 가까워지면
코드컴플리션이 고장나 먹지 않는 경우가 태반입니다.
7천여줄 넘어가도 이런 현상이 생기기도 하고요.

코드 컴플리션이 안되면 코딩이 시간이 더 걸리고 귀찮게 됩니다.
코드 컴플리션이 안되는 이유는 코드에 이상이 있어서 그런게 아니라
빌더 IDE 자체의 문제로 인한 경우가 대부분입니다.

이럴때 main.cpp를 2개로 분리하면 문제를 해결할 수 있습니다.

가령 TFormMain 폼 클래스를 main.cpp 에 코딩 해 왔다면
main_ext.cpp 같은 유닛을 만들어(폼이 아니라 유닛)
TFormMain의 메소드를 적당량 분리해서 넣고, 계속 코딩해 나가면 됩니다.
그러면 코드 컴플리션을 계속 사용할 수 있습니다.

물론 TFormMain 클래스의 헤더는 당연히 main.h 에만 있어야겠지요.

그런데 폼 내의 컨트롤과 연결된 핸들러를 옮기면
폼 에디팅 모드나 인스펙트에서 바로 접근이 안되는 문제가 있으니
그건 main.cpp에 두고
내용물만 옮기는 방법을 쓰거나, 핸들러가 아닌 메소드를 옮기는 것을 먼저 해야 합니다.



이건 간단하지만 의외로 모르시는 분들이 많아 올려둡니다.


빌더 6에서는 이런데 상위 버전은 몇만줄 넘어가도 코드컴플리션이 잘 먹나 모르겠군요.
김태선 [cppbuilder]   2012-10-17 13:34 X
코드컴플리션이 먹통이 되는 현상중에
#if
#if
이 문장 안에서 그런 일이 잦게 일어 납니다.
이 경우는 조건 컴파일을 제거해주고
컴파일 되지 않을 코드는 주석 처리해주면 됩니다.
#endif
#endif
김태선 [cppbuilder]   2012-10-17 16:13 X
# 조건 컴파일이 중첩될때
종종 코드컴플리션이 동작을 잃어 버리는 경우가 있습니다.
그러니까 컴파일은  잘되는데 코드컴플리션이 먹지 않을때
조건 컴파일 중첩을 제일 먼저 체크해보고
중첩이 아닌데 그런 경우는 조건 컴파일을 한번 해제해 보면
될때가 많습니다.
김태선 [cppbuilder]   2012-10-31 13:30 X
템플릿을 쓴 곳은 코드컴플리션이 잘 먹지 않는 수 있는 경향이
매우 높습니다.
안그래도 복잡한 템플릿이 코드컴플리션이 먹지 않으면 당황스러울수 있는데
그럴때는 템플릿은 가급적 cpp 구현파일 쪽으로 옮기고
헤더 파일쪽은 템플릿이 간단하거나 없는 쪽의 구성으로 대체하면 됩니다.

아무튼 컴파일러 성향을 잘 파악해서 피해가는 방법을 강구하면 됩니다.

+ -

관련 글 리스트
1103 Main 폼이 너무 비대해져 코드컴플리션이 먹지 않을때는 어떻게 하면 되나요? 김태선 7805 2012/08/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.