嗨,大家好,我知道這可能是有爭議的,或者不是非常寬泛,但我會試着非常具體並涉及到其他問題。組織/構建Go包文件夾和文件的正確方法是什麼?
好吧,當我做一個圍棋程序時應該怎樣考慮我應該如何組織我的項目? (例如,我想我應該確定我將擁有某種控制器,所以我應該有一個控制器子目錄,這樣做我應該這樣做)
應該如何構造一個包?
例如目前的方案我的工作,我想做一個SteamBot
使用this包
但是,當我在寫它,我不知道我是否應該一定的方法導出到自己的自己的文件,例如我有一些像
func (t *tradeBot) acceptTrade() {}
func (t *tradeBot) declineTrade() {}
func (t *tradeBot) monitorTrade() {}
func (t *tradeBot) sendTrade() {}
每種方法都將有相當多的代碼,所以我應該每種方法導出到它自己的文件或者只是有1個文件,在其3000行代碼?
也使用全局變量,以便我可以設置一個變量,然後離開它,並能夠在多個函數中使用它,或者這是不好的,我應該通過變量作爲參數?
而且我爲了我的文件,如:
package
imports
constants
variables
functions
methods
還是我只是把東西放在哪裏,我需要他們
希望我自己清楚,它不是一個可怕的問題。謝謝!
請注意,Go傾向於使用與Java完全不同的包結構。特別是,Go傾向於支持覆蓋整個可重用系統的較大包,而不是按功能劃分它。例如,'net'包含DNS,IP,創建網絡連接,網絡硬件等。在Java中,你會傾向於分割這些功能。還要注意Go包不是分層的。 'net/http'與'net'無關。每個包裝都完全獨立於Go。我同意「控制器」在任何系統中都是非常糟糕的軟件包。記錄器通常是全球性的,因爲你注意到了。 –
(我發現使記錄器成爲全局的,同時也是常見的,也使得Go中的測試更加複雜,並且使得某些類型的代碼重用變得困難得多,調試標誌也是如此,這是一個非常常見的解決方案。 –