簡體   English   中英

關於 Object 面向設計。 最佳實踐。 分班?

[英]About Object Oriented Design. Best practices. Splitting into classes?

我正在為面試做一個稍微復雜的謎題。 我對設計中的最佳實踐知之甚少。

我想寫一個大的 class 來解決手頭的問題。 然后我想把它分成我想要的盡可能多的子類。

這是否被認為是行業中構建良好設計的好方法?

不,這不對。

設計你的對象應該是你的首要任務之一,而不是你的最后一個。

一個優秀的 Object 面向開發人員會着眼於問題,決定需要創建哪些對象,着手創建這些對象,然后將它們編織在一起以解決更大的問題。

如果你試圖讓一個巨大的 class 自己處理所有工作,你最終會得到非常緊密耦合的代碼,它不能被分解成類......但如果你設計了預先正確編碼。

我將嘗試用您可以采取的可能方法來回答。 首先將您的問題表達成一些您想要解決的句子。 從這些句子中,名詞是你的類和變量。 動詞是你的方法。 從這一點開始,您可以開始編寫您的第一個版本的代碼

在為生產編寫代碼時,我的經驗是實際實踐處於中間位置。 在設計系統時,請提出您認為需要的類(請參閱 Skyzer 的回答,了解一種考慮分解事物的好方法)。 當您實際實施您的解決方案時,您可能會遇到一些對象變得太大的地步; 做太多。 此時,您可以再看一下設計,看看是否可以將 object 分解為幾個更小的對象。 每個 object 都應該負責一個“事物”,但是隨着給定“事物”變得更加復雜,“事物”的定義會隨着時間而改變。

與此類似的是方法/命令的編寫。 每個命令都應該做一件事,並且做好。 對我來說,這意味着為該命令編寫測試很容易,因為測試可以非常清楚地定義命令的作用。 當命令所做的事情變得太大時(大量的邏輯分支,如 if 導致越來越多的測試是一個很好的指標),將命令分解為多個可以測試的更小的命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM