C 코딩할 때 모듈별로 소스를 분리하십니까 함수별로 분리하십니까?

송지석의 이미지
송지석의 이미지

C 코딩할 때 저는 모듈별로 파일을 분리하거든요

그런데 점점 시간이 지나다보면 모듈이 무지 비대해져서...

다시 나누려고 하면 한동안 고생해야 되고..

시간이 갈수록유지보수가 힘들어지더군요.

어디서 보니 함수별로 분리하는 경우도 있더군요. (global) 함수 단위로 말이죠.

어느 방법이 더 좋은 방법일까요?

송지석의 이미지

대부분 모듈별로 분리하시는군요.
그렇다면 모듈이 비대해지면 어떻게 처리하시나요?
저는 삽질 끝에 분리하긴 하는데, 처음부터 모듈 디자인을 잘 하기가 힘들어서... 나중에는 다 갈아 엎고 다시 해야 좋아질 것 같더라구요. (실제로 그렇게 한적 많음.. ㅡㅡ)
혹시 비법이랄가 나름대로의 노하우를 공개해 주실 분 있으실까요?

펑키의 이미지

C정말 속써이긴 합니다만 이제 얼마 않하고 그만둔다는 생각에 C++나 자바를 배울 생각을 도통 않하고 있습니다. 전혀 모르는 신규 프로젝은 아예 않할려고 하고 예전에 만들어 놓은거 어찌 써먹을까 고민하는 정도입니다. (앞으로 길어야 1년정도만...)

그런데 제 생각에는 오히려 모듈로 분리하는게 더 좋지 않을까 생각됩니다. 어짜피 표준 C를 하신다면 함수단위로 파일을 열어 놓고 쓴다는게 여간 번거럽지 않을까 생각됩니다.(정말 클레스 단위로만 쫓아가고 파일이 무엇인지는 신경 않쓰면 좋기야 할텐데)

몇가지 함수단위로 분리해놓은것을 보긴 했는데 더 번거러울듯 싶습니다. 모듈이 커질 경우에는(보안쪽을 하게 될 경우 이렇게 되는 경우가 왕왕 생기지만) 디렉토리를 따로 할당해서 작업을 하는 편입니다.

즉, 루트라고 해놓을만한 곳에는 몇가지 메모해놓는 문서나 잡동사나 넣어놓고 메인 소스 디렉토리 안에 이것 저것 디렉토리를 만들어 놓았습니다. 통신(TCP/IP, X.25/ SNA), 보안(SSL), 유틸리티 함수 디렉토리 뭐 이런식 정도 밖에 않됩니다. 저도 별수 없나 봅니다. 저도 다른분들 의견을 한번 듣고 싶네요.

송지석의 이미지

펑키 wrote:
C정말 속써이긴 합니다만 이제 얼마 않하고 그만둔다는 생각에 C++나 자바를 배울 생각을 도통 않하고 있습니다. 전혀 모르는 신규 프로젝은 아예 않할려고 하고 예전에 만들어 놓은거 어찌 써먹을까 고민하는 정도입니다. (앞으로 길어야 1년정도만...)

옷, 혹시 은퇴하시는 건가요? 결혼이라도?
umean2me의 이미지

저는 모듈별로 분리합니다. 어디선가 함수별로 분리하는 경우를 보았는데 내가 분석하고자 하니 굉장히 힘들었습니다.

전 모듈이 비대해저도 꼭 모듈별로 분리하고자 하는 습성이 강합니다. 이유는 추 후에 한번만 오픈해서 분석하기 위함이고 같은 성격을 가지고 있기 때문이거든요. 즉, 함수별 통신을 하기 위해 구조체를 작성해서 이것들을 컨트롤 하는 함수 모음이기때문이죠.

이제 저도 C++을 배워 적용하기 시작하였습니다만 C++이란놈이 생각보단 별거 아니란 생각 들더군요.(물론 아직 잘 모르는게 많지만요.) 이놈이 개념상 이득을 보는것 뿐이지 그 이상 그 이하도 아니구요. 다른분들 말씀데로 C로도 충분히 C++의 개념을 적용할 수 있다는데에 동의하는 사람입니다.(+개념에 따른 문법검사를 잘해주는...)

아무튼 이렇게 저렇게 따지고 보니 어떤 클래스를 파일로 저장하는거나 모듈별로 짜서 정리하는거나 똑같다는 생각이 들데요. 모듈별로 하는데 비대해 진다면 클래스의 상속처럼 인클루드 따위로 어떤 상속에 개념을 주면 어떤가 하는 생각도 들구요.

함수별로 분리한다면 설계가 잘 되어있어도 때때로 이 함수를 만들것인가 말것인가 등등에 고민이 있을때는 어떻게들 하시는지........

mastercho의 이미지

전 클래스로 모듈 삼아 나누는데.......

--;

"클래스로 별로 나눈다 " 이거 추가좀..

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

송지석의 이미지

mastercho wrote:
전 클래스로 모듈 삼아 나누는데.......

--;

"클래스로 별로 나눈다 " 이거 추가좀..


C 코딩 할 때를 한정한 거라 클래스를 염두하진 않았습니다.
C++이나 자바로 짤 땐 클래스 단위로 파일을 나누지 않나요? 저는 C++은 별로 안해봤고 JAVA를 좀 해봐었는데 JAVA에선 보통 한 클래스에 한개 파일이던데요.
그러고 보니, C에서는 이 클래스가 대부분의 경우는 모듈단위로 보이지만 어떤 경우엔 함수하나, struct 하나로 보일 수 있어서 애매한 면이 생기는 게 아닐까요?