作者iamstudent (stu)
看板C_and_CPP
標題[問題] 關於純c的程式重構
時間Fri Nov 11 16:35:56 2011
我目前遇到一份程式碼
整理問題並簡化之後大致如下
有 A.h A.c
B.c
而B.c會include A.h
因為我覺得B.c的內容非常多,卻沒有head檔
所以想要把函數與型態定義提出去作成B.h
然後把函數功能註解到head檔以增加可讀性
但是卻遭遇到一些問題
所以想要釐清一下觀念
首先
A.c與B.c有一些完全相同的函數名稱
但是工作內容完全不同
因為沒有宣告在A.h
這一點讓B.c編譯時只會呼叫到自己的函數
而不會呼叫到A.c的同名函數
這讓我在想
c沒有private或是public的功能
是否能夠利用把函數藏進c檔
而達到private的觀念?
這樣想是對的嗎?
但是如果A.c所include的檔案裡面
遇到跟自己函數同樣名稱的時候
麻煩就出現了吧
c沒有namespace
那麼函數的命名是否都要非常小心
而無法使用簡短名稱就好?
還是說實際上有什麼比較安全的設計原則?
------------------------------------------------------
第二個問題是
B.c並不會被別人include
本身就有程式進入點
(但不是main也不是win main,因為是plugin程式,名稱也非常不顯眼)
目前來看
只會有B.c會去include B.h
那麼,提出head檔B.h,是否是多餘的?
head檔應該是給別人使用的介面
但是能否只純粹為了增加可讀性而存在?
這讓我感到疑惑
究竟應該把.c檔的函數與型態定議都提出到head
還是只提出不會與別人衝突的部份就好
全部都提出來的話
A.c應該也要全部提出到A.h去
但是這樣就會發生函數名稱衝突了
我比較缺乏在純c環境的編程經驗
所以想問看看版上大家的想法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.210.62
※ 編輯: iamstudent 來自: 140.113.210.62 (11/11 16:36)
→ james732:藏進 .c 檔讓我想到 static, 不知道是不是你需要的 11/11 16:40
→ james732:如果別人用不到B的介面,那我覺得沒必要寫出 .h 檔 11/11 16:41
→ letoh:用不到的界面的確是沒必要丟出來,但 .h 不是只放func decla 11/12 20:11
→ letoh:有些東西為了維護方便,我也會分開放,不會都丟進 .c 11/12 20:12
→ letoh:例如常數定義或 macro 11/12 20:12