大多數系統如果保持簡單而不是複雜,效果最好。
為什麼yagni的意思是「你不需要它」:在必要之前不要做多餘的事情。
為什麼怎麼做
為什麼怎麼做
關注點分離是一種將電腦程式分離成不同部分的設計原則,以便每個部分專注於單個關注點。例如,應用程式的業務邏輯是乙個關注點而使用者介面是另乙個關注點。更改使用者介面不應要求更改業務邏輯,反之亦然。
引用edsger w. dijkstra (1974)所說:
我有時將其稱為「關注點分離」,即使這不可能完全做到,但它也是我所知道的唯一有效的思維整理技巧。這就是我所說的「將注意力集中在某個方面」的意思:這並不意味著忽略其他方面,只是對於從某一方面的視角公正地來看,另一方面是不相關的事情。為什麼
怎麼做在乙個系統內,每一項認識都必須有乙個單一的、明確的、權威的表示。
程式中的每一項重要功能都應該只在源**中的乙個地方實現。相似的函式由不同的**塊執行的情況下,抽象出不同的部分,將它們組合為乙個函式通常是有益的。
為什麼怎麼做
為什麼怎麼做
引用donald knuth所說:
程式設計師浪費大量的時間來思考或擔心程式的非關鍵部分的速度,而考研嘗試這些優化實際上在除錯和維護時有很強的負面影響。比如說在97%的開發時間,我們應該忽略低效率:過早的優化是萬惡之源。然而,我們不應該在關鍵的3%中放棄我們的機會。當然,需要理解什麼是「過早」什麼不是「過早」。
為什麼怎麼做
模組/元件之間的耦合是它們互相依賴的程度,較低的耦合更好。換句話說,耦合是**單元「b」在未知的**單元「a」更改後「被破壞」的機率。
為什麼怎麼做
不要和陌生人說話。
為什麼怎麼做
物件的方法只能呼叫以下方法:
物件自身的方法。
方法引數中的方法。
方法中建立的任何物件的方法。
物件的任何直接屬性或字段的方法。
為什麼怎麼做
正交性的基本概念是,概念上不相關的東西在系統中不應該相關。
它越簡單,設計越正交,異常就越少。這使得用程式語言學習、讀寫程式變得更容易。正交特徵的含義是獨立於環境;關鍵引數是對稱性與一致性。
堅持保守自己的作為,自由接受他人的作為。合作的服務依賴於彼此的介面。通常,介面需要提公升,導致另一端接收未指定的資料。如果接收到的資料沒有嚴格遵守規範,那麼簡單的實現將僅拒絕合作。更複雜的實現卻可以忽略它無法識別的資料。
為什麼怎麼做
控制反轉又被稱為好萊塢原則,「不要打**給我們,我們會打**給你」。它是一種設計原則,電腦程式的自定義編寫部分從通用框架接收控制流。控制反轉具有強烈的含義,即可重用**和特定於問題的**是獨立開發的,即使它們在應用程式中一同工作。
為什麼怎麼做
單個模組/元件的聚合性是其職責形成有意義的單元的程度,越高的聚合性越好。
為什麼怎麼做
黎克特制代換原則(lsp)完全是關於物件的預期行為:
程式中的物件應該可以替換為其子型別的例項,而不會改變該程式的正確性。軟體實體(例如類)應對擴充套件是開放的,但對修改是封閉的。也就是說,這樣的實體可以允許在不改變其源**的情況下修改其行為。
為什麼怎麼做
乙個類不應該有多個修改的原因。
長話版:每個類都應該有乙個單獨的職責,並且該職責應該完全由該類封裝。職責可以定義為修改的原因,一次類或模組應該有且僅有乙個修改的原因。
為什麼怎麼做
軟體模組通過提供介面來隱藏資訊(即實現細節),而不洩露任何不必要的資訊。
為什麼怎麼做
科里定律是關於為任何特定**選擇乙個明確定義的目標:僅做一件事。
乙個好的設計可以辨別出最有可能改變的熱點,並將它們封裝在api之後。當預期的修改發生時,修改會保持在區域性。
為什麼怎麼做
將臃腫的介面減少到多個更小更具體的客戶端特定介面中。介面應該比實現它的**更依賴於呼叫它的**。
為什麼怎麼做
美國童子軍有一條簡單的軍規,我們可以使用到我們的職業中:「離開營地時比你到達時更乾淨」。根據童子軍軍規,我們應該至終保持**比我們看到時更乾淨。
為什麼怎麼做
命令查詢分離原則規定,每個方法都應該是執行操作的命令,或者是向呼叫者返回資料但不能同時做兩件事的查詢。提問不應該改變答案。
利用這個原則,程式設計師可以更加自信地進行編碼。查詢方法可以在任何地方以任何順序使用,因為它們不會改變狀態。而使用命令,你必須更加小心。
為什麼怎麼做
作為一名Android APP開發者的自我總結
以上資料來自 www.umeng.com 三 收入方面 以上資料來自www.youmi.net 雖然最近都沒有更新版本,但積分牆廣告的收入並沒有下降,我認為是我的積分設定得比較合理,讓使用者持續消費積分。每天160元的收入 4000個啟動使用者,就是說每乙個使用者給我帶來0.04元,我覺得每乙個使用...
如何成為一名合格的 C C 開發者?
在大多數開發或者準開發人員的認識中,c c 是一門非常難的程式語言,很多人知道它的強大,但因為認為 難 造成的恐懼讓很多人放棄。本 chat 將介紹 c c 學習中的重難點和大多數學習者關心的問題,同時針對在校學生和社會人士兩大群體因時間和精力的差別問題,就如何學好 c c 給出我的建議和方法。主要...
作為一名開發者,我壓力很大
早些時候我在做b s開發,對b s的開發模式,以及美感的追求一直留在我的心底,我想對於每乙個愛美的程式設計師亦是如此,就像女人希望自己每天有美麗的衣 服可以穿,而對於乙個程式設計師來說就是自己做出的專案不但健壯還可以賞心悅目。由於工作的需要,我轉向了c 客戶端開發,開始專注於c 而c 開發 專案中日...