2014-01-08 51 views
1

如果你編寫一個很大的go命令(不是一個包),你如何佈置它的內部?我很想擁有一些實用程序包等,但除了命令的代碼外沒有其他任何內容暴露。如果它全部在相同的回購協議中,我不會看到什麼阻止某人導入這些內部使用包。如何構建go命令內部結構

回答

1

您可能會將您的實用程序包內置到您的包裝中— like this。這不會阻止任何人使用它們,但a)爲什麼你會在乎呢? b)包裹的結構會明確暗示這些「子包」是項目的內部。

+0

作爲後續問題,人們通常在命令程序中測試內部結構嗎?由於大多數人建議只測試只測試命令main()的公共接口, – cellige

1

答案很簡單(但很可能不是你想聽到的):做任何你喜歡並且被允許的事情。將工具軟件包存放在某個地方是非常好的,無論是在「子軟件包」還是在不同的回購軟件中。

關於

我沒有看到什麼從進口那些內部使用的軟件包

爲什麼你關心的人停止?如果這些軟件包封裝了不同的和可用的功能,則某些人可能從導入它們中受益。將這些功能與命令保持在一起不能「保護」它們,因爲「沒有人應該能夠看我的代碼」。只需在文檔中明確指出,您隨時都可以隨時進行不兼容的更改。 Go並不是爲了防止每一個愚蠢的行爲,並且保護懶惰和無能力的人,他們故意忽視任何文件的射擊。

+0

你是對的,你的答案不是我想聽的!但沒關係。似乎是最好的,然後保持一切只與內部實現有關,並將實際斷開連接的功能保存在一個單獨的可移除包中,謝謝1 – cellige