在我的C項目中,我有一個相當大的utils.c文件。它真的有很多種不同的工具。我覺得有點頑皮,只是在那裏填充不同的雜項功能。例如,它有一些與低級別的東西相關的實用工具,例如小寫()函數,它也有一些非常複雜的工具,例如轉換爲/從不同的顏色格式轉換。它有一個大型的公用文件頑皮嗎?
我的問題是,是不是很調皮有許多不同類型的公用事業它這麼大的utils.c?我應該把它分解成許多不同種類的實用程序文件嗎?比如graphics_utils.c等等你覺得怎麼樣?
在我的C項目中,我有一個相當大的utils.c文件。它真的有很多種不同的工具。我覺得有點頑皮,只是在那裏填充不同的雜項功能。例如,它有一些與低級別的東西相關的實用工具,例如小寫()函數,它也有一些非常複雜的工具,例如轉換爲/從不同的顏色格式轉換。它有一個大型的公用文件頑皮嗎?
我的問題是,是不是很調皮有許多不同類型的公用事業它這麼大的utils.c?我應該把它分解成許多不同種類的實用程序文件嗎?比如graphics_utils.c等等你覺得怎麼樣?
如果它只是你將永遠保持的東西,它是在複雜到達那裏你會發現自己尋找的東西點的問題。那將是重構和重組的時刻(重組需要花費成本,就像沒有重組一樣)。
如果它可能是任何人都將維持一個項目,包括你的utils的,你必須考慮他們的痛點決定何時重組時。他們比你低很多。
我傾向於將它們分解爲各種子實用程序,正如您所說(graphics_utils)適用時。
打破他們成基於類別的單獨的文件(即圖形,字符串等)會導致更好的組織,使其更容易找到的代碼的某些部分,具有較小的文件穿過去,而不是一個大文件。
這絕對不是猶太教,因爲下一個通過你的代碼的人將不知道在哪裏尋找任何東西。按功能分解它,你的同事們會感謝你!
當然,他會的。它將在巨型的utils文件中! – womp 2009-08-18 03:41:51
@womp:lol + 5chars – 2010-10-18 05:40:02
分手。東西將更容易找到,更容易重用,更容易重構,更容易進行單元測試。我最近需要從一個巨大的Java實用工具類的靜態方法中獲得一組ISO-8601日期處理方法,並且很難找到我需要的5%的代碼。
像其他人一樣,我會打破他們。但是我現在傾向於使用擴展方法,所以我會爲每個類擴展一個類(和一個文件)(例如,StringExtensions
,SqlDataReaderExtensions
等)。我發現這往往很好地分解了效用方法。
你想打破它,不只是組織方面的原因,而是因爲你將不得不依賴於這一個很多其他文件。因爲一切都取決於這個文件,所以這個文件很難改變,因爲它可能導致大範圍的破壞。
http://ifacethoughts.net/2006/04/15/stable-dependencies-principle/
它可能會使構建時間不那麼理想,因爲鏈接到此文件的所有內容如果發生更改都需要重新編譯。 – 2009-12-10 17:47:53
是來自分手文件到中隔離的另一個優點是,當你把它的源代碼控制下,可以有更加精確的控制。如果您經常調整/擴展/專用的位和其他相對穩定的位,這非常有用。
另一點:你應該組織你的代碼,我。即把它分成小模塊和分類,因爲在某些時候你最終會爲同一件事寫第二個和第三個函數,只是因爲你不會找到你知道它在那裏的那個函數,但是你不記得它的名字。
我有(相當大)項目,這種模塊有編程邏輯,其中有多達5-6實現(同樣的事情)。
頑皮=雜亂無章? – Alex 2009-08-18 03:28:47
Domenic,我覺得這篇文章的答案(似乎都是說同一件事)在設計模式是'主觀'的同一意義上是'主觀的';換言之,'主觀'標籤是不恰當的:) – horseyguy 2009-08-18 03:38:20
不,淘氣=打開。 – 2009-08-18 03:38:41