淺談程式設計
一段程式碼能正常Run,沒有BUG,這就代表這段程式碼沒有問題,是一段良好的程式碼了嗎?沒有BUG,能執行,這不代表這段程式碼是一個好程式碼.
或者說評價一個程式碼的好壞,其指標或者說原則應該是多元的,不僅僅是能Run,並且沒有BUG.而評價一個程式碼最重要的是,程式碼能否適應將來的需要,即對程式碼的維護.
程式碼能Run,不是說Run一次兩次能用就好了,你要考慮的是它一年以後,兩年以後,五年以後.甚至十年二十年以後, 這個程式碼還可能有其他人或者你自己要繼續做下去.需求如果有了變更,要進一步發展下去,這個時候你拿之前寫的程式碼怎麼辦.
你的程式碼還能不能在今後起作用; 讓今後做維護的,無論是其他人還是你自己,能夠比較容易的在這個程式碼的基礎上做事情.這才是我們考察程式碼良好的一個重要原則。 就是說這個程式碼適不適合擴充套件,也就是常說的可擴充套件性.在程式中存在相似甚至相同的程式碼塊,這是非常低階的程式碼質量問題。
程式碼複製所帶來的問題就是:如果需要去修改一個副本,那麼就必須得同時修改所有其他的副本.否則就存在不一致的問題.這大大增加了維護程式的工作量,而且很容易存在錯誤和危險.
比如對於維護程式的人來說,程式設計師看到一個副本被修改好了,就以為其他所有要修改的地方都已經修改好了.因為沒有任何跡象表明還有一份一樣的副本程式碼存在, 所以很容易導致遺漏還沒被修改的地方.
消除程式碼複製的兩個基本手段————函式與父類。
你的程式設計優不優秀.就需要定義一些評價設計的術語:兩個重要的核心術語————耦合與聚合.
耦合指的是類與類之間的聯絡.程式設計的目標是一系列通過定義明確的介面通訊來協同工作的類.耦合度反映了這些類聯絡的緊密度. 我們要努力來降低耦合度,或者叫做鬆耦合.因為耦合度決定了程式修改的難易程度.在一個緊耦合的結構中,對一個類的修改也會導致對其他一些類的修改. 這是我們要努力去避免的,否則,一點小小的改變就可能使整個應用程式發生改變.另外要想找到所需要修改的地方,並一一修改卻是即困難又費時的事情.
另一方面,在一個鬆耦合的系統中,常常可以修改一個類,但同時不會修改其他類,而且整個程式還可以正常工作.
聚合與程式中一個單獨的單元(可以說是test)所承擔的任務的數量和種類相對應有關,它是針對類或方法(函式)這樣大小的程式單元而言的理想情況下, 一個程式碼單元應該負責一個聚合任務(也就是說,一個任務可以被看作是一個邏輯單元(logic unit)).一個方法應該實現一個邏輯操作,而一個類應該代表一定型別的實體.
聚合的重點是重用:如果一個方法或者類是隻負責一件定義明確的事情,那麼就很有可能在另外不同的上下文環境中使用.
遵循這點的好處是,當程式某部分的程式碼需要改變時,在某個程式碼單元中很可能會找到所有需要改變的相關程式碼段。
相關文章
- 淺談非同步程式設計非同步程式設計
- SpringBoot 非同步程式設計淺談Spring Boot非同步程式設計
- 淺談程式設計正規化程式設計
- 淺談PHP物件導向程式設計PHP物件程式設計
- 淺談程式設計師的“內卷化”程式設計師
- 淺談高可用設計
- 淺談程式設計師職業生涯規劃程式設計師
- 淺談函數語言程式設計與 Java Stream函數程式設計Java
- 淺談C++物理設計:設計原則C++
- 淺談Java、PHP、C++程式設計的優缺點JavaPHPC++程式設計
- 淺談產品模型(Profile)在程式設計中的作用模型程式設計
- 淺談Java中利用JCOM實現仿Excel程式設計JavaExcel程式設計
- 荒野亂鬥角色設計淺談
- 淺談設計模式——單例模式設計模式單例
- 淺談java之設計模式(1)Java設計模式
- 淺談設計模式——工廠模式設計模式
- 淺談VueUse設計與實現Vue
- 淺談軟體開發中的防禦式程式設計程式設計
- 淺談前端響應式設計(一)前端
- 淺談前端響應式設計(二)前端
- 淺談設計模式及python實現設計模式Python
- 淺談DDD(領域驅動設計)
- 淺談 DDD 領域驅動設計
- 淺談業務中臺前端設計前端
- 淺談23種設計模式之單例設計模式設計模式單例
- 淺談:合格的Java程式設計師應該具備的能力Java程式設計師
- 好程式設計師技術分享淺談JavaScript中的閉包程式設計師JavaScript
- 【STL 原始碼剖析】淺談 STL 迭代器與 traits 程式設計技法原始碼AI程式設計
- 淺談C++物理設計:實用巨集C++
- 淺談服務介面的高可用設計
- 淺談Abp vNext的模組化設計
- 談談對程式設計師的管理程式設計師
- 淺談Laravel中的設計模式(三) Container 容器Laravel設計模式AI
- 優惠劵系統庫存設計淺談
- 淺談 SpringMVC 中各層職責的設計SpringMVC
- 技術分享| 淺談排程平臺設計
- 程式設計師談薪指北程式設計師
- 好程式設計師淺談大資料與Hadoop有什麼關係程式設計師大資料Hadoop
- 程式碼規範淺談