2013-08-04 71 views
0

在我第一次嘗試創建一個太大而無法放入一個源文件的程序時,我仍然遇到了將它分成幾個的問題。例如,如果一個模塊被其他幾個模塊使用,最終被包含在另一個模塊中,我該怎麼做。說,linear_algebra.cpp(或.py或其他)需要tensor_operations.cpp,並且它們都需要matrix_operations.cpp。我應該將matrix_operations.cpp包含到其他文件中,還是隻包含一個或什麼?那麼,如果我將matrix_operations添加到其他某個模塊中,那麼在某個點突然出現需要linear_algebra? 這整個業務不斷讓我困惑。有時候我會把它弄清楚,但必須有一個「正確」的方式,這樣你就不必自己弄清楚了。如何構造模塊?

那麼,我在哪裏可以得到一本關於如何正確地做這類事情的手冊(或者至少他們稱之爲什麼,因爲當我說「這類事情」時谷歌不理解我)?

回答

2

這聽起來像你試圖避免循環依賴關係,這是你要搜索的關鍵詞。

例如,如果你有模塊A和B,而且發現A需要請參考B B需要參閱甲那麼你有A和B之間的循環依賴(換句話說,如果以箭頭顯示模塊之間的關係,箭頭顯示依賴關係,A和B之間會有一對箭頭。)

解決方法是識別A需要的代碼位B,重構該位換成新的模塊C,然後從A和B中引用C.(這意味着B不需要再引用A)。

所以你從

A <----> B 

A -----> B 
|  | 
\/  | 
/ | 
C ------ 
    \ 

通過這樣做,你從幾大模塊去很多更小的模塊與它們之間的鬆耦合。反過來,這應該使您的代碼更易於維護和重用。

+0

這不僅僅是循環依賴(儘管感謝澄清至少)。問題更籠統:如何在一般情況下安排和構建程序模塊?有完整的手冊嗎? – user2649762

+0

查看書籍,例如*代碼完成*或*實用程序員*。這些會給你一些遵循的原則,比如鬆耦合和高內聚。但是沒有「數字油漆」解決方案 - 每個程序都是不同的。 –