3

當您需要設計模塊時,您通常會如何處理?到目前爲止,我已經注意到它的使用簡單,API的直觀性,可擴展性,性能以及類似的東西。如何去設計一個模塊?

但是看起來相當簡單和直截了當可能對其他用戶來說似乎過於複雜。雖然它不經常發生,但它有時會發生在我們所有人身上(我希望)。

除了我已經提到的問題之外,在開始編碼之前,在設計類層次結構/ API /任何內容之前,您是否應該問自己?

如果您認爲該問題更適合於其他部分,請隨時遷移它,但我仍然希望得到答案。

乾杯。

+0

這不是代碼相關=它屬於程序員.stackexchange.com – jgauffin

回答

3

你的問題是一個非常好的一個,以及一個有答案,但如此複雜,答案基本上是在編程經驗。

製作軟件有一般原則,但我想在這裏,在這個簡短的回答中,我可以給你一個你可以應用的概念。軟件是一個領域的代表(例如銀行軟件是爲了定製金融系統而制定的,或者雷達軟件是根據雷達檢測的想法和原則制定的)。因此,軟件就像一個理論:它完全符合你的領域的當前知識,允許推論和擴展。如果有更多的知識可用,理論應該擴展,拋光或更廣泛地適應這種新知識,同時仍然保持以前知識的有效性。

因此,所有關於理論的概念適用於:

  • 滿足你的知識在一個統一的框架,聲音均勻,很好的集成提出的要求。
  • 很簡單,但尋找可能會更通用的模式,並聚焦這些模式以實現更好的集成。
  • 不要太簡單。如果你的軟件不符合要求,你的理論太有限了,必須擴展。
  • 允許您的軟件適應新的需求,軟件不會受到影響。它會發生變化和變化,適應新的需求,或者失去不再需要的功能。

所以,軟件應該是簡約而不是太多,美觀但實用。

當談到實施這些方向時,我建議你花時間學習你的域名。你不能模擬你不明白的東西。學習基礎知識,從簡單的事情開始,然後逐步完善它們。你偶爾會看到有些東西在錯誤的地方「感覺到」。問問你自己的問題如

  • 「誰負責做這個操作?「
  • ‘這是依賴的邏輯,需要對這個對象的工作,或者是它只是一個虛假的一個因惡意代碼的組織嗎?’
  • ‘這是高級別或低級別的功能?’
  • 「我是否重複該?」
  • 「我可以在內部改變該對象/層/子系統而不代碼之外知道?」
  • 「我可以在未來不會破壞或使其無效過去擴展這個?」
  • 「我是否可以輕鬆地測試和探測此功能以獲得正確的行爲?」
  • 「是方便和直觀理解和使用?」
  • 「我可以重組什麼我已經很容易地和不接觸,以實現新的行爲?」
  • 「這是功能隔離開來,這樣我可以展示給外部世界沒有我操縱的其餘代碼的大部分?「
+0

偉大的答案,謝謝。我知道這有經驗,但我沒有那麼多,所以我試圖去理解這些概念。 –