日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[温故知新] 编程原则和模式

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [温故知新] 编程原则和模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫了這么多年代碼,依舊做不好一個項目

做好一個項目是人力、產品、業務、技術、運營的結合,可能還疊加一點時機的因素,就我們碼農而言,工作就是搬磚,實現產品, 給業務提供支撐。
“給祖傳代碼加 BUG 修 BUG”,“拿起鍵盤一把梭”這些戲謔程序員的話,聽多了真的會讓程序員麻木,仿佛大家都是這么干的。
從業多年,堆過 shi 山,接手過祖傳代碼, 已經不能沉下氣去查看、調試 shi 山代碼, 說實話,很累。
本人一直推崇寫流暢、自然、可自解釋的代碼,讓優雅成為一種習慣, 給自己留個念想、給后人留個好評。

溫故而知新,聊一聊現代編程幾大常見的編程原則

普世原則
KISS (Keep It Simple Stupid)保持系統結構簡單可信賴
YAGNI (you aren't gonna need it)當前確實需要,再去做
Do The Simplest Things That Could Possibly Work思考最簡單可行的辦法
Separation of Concerns關注點分離
Keep Things DRY保持代碼結構清爽 Don't repeat yourself
Code For The Maintainer站在維護者角度寫代碼
Avoid Premature Optimization避免提前優化
Boy-Scout Rule清掃戰場:清理口水話注釋、無效代碼

模塊(類)間
Minimise Coupling低耦合
Law of DemeterDon't talk to strangers,對象方法只接觸該接觸的對象、字段、入參
Composition Over Inheritance組合而不是繼承
Orthogonality正相關,概念上不相關的事物不應在系統中強行相關
Robustness Principle代碼健壯性
Inversion of Control控制反轉

模塊(類)
Maximise Cohesion高內聚
Likov Substitution Principle里斯替代原則:將程序中對象替換到子類型實例,不會報錯。
Open/Closed Principle設計的實體對擴展開放,對修改關閉
Single Responsiblity Principle單一責任原則
Hide Implementation Details隱藏實施細節
Curly's Law柯里定律:為確定目標編寫特定代碼
Encapsulate What Changes封裝變化
Interface Segregation Principle接口隔離原則
Command Query Separation命令查詢分離

KISS
大多數系統保持簡單,會運行的很好。

  • 更少的代碼消耗更好的時間,產生更少的 bug,并且容易修改

  • 復雜業務都是由簡單代碼堆砌而成

  • 完美并不是“沒有什么東西可以再加”,而是“沒有什么東西可以被去掉”

YAGNI
YAGNI 代表“you aren't gonna need it.”,不要自以為是的提前實現某些邊角,直到真正需要的時候,再來做。

  • 提前做明天才需要做的工作,意味著當前迭代中需要花費更多精力

  • 導致代碼膨脹,軟件變得臃腫且復雜

Separation of Concerns
關注點分離是一種將計算機程序分為不同部分的設計原則,這樣每個部分都可以解決一個單獨的關注點。例如應用程序的業務邏輯是一個問題,而用戶界面是另外一個問題,更改用戶界面不應要求更改業務邏輯,反之亦然。

  • 簡化應用程序的開發和維護

  • 如果關注點分離得很好,則各個部分可以重復使用,也可以獨立開發和更新。

Interface Segregation Principle
接口隔離,將胖接口修改為多個小接口,調用接口的代碼應該比實現接口的代碼更依賴于接口。
why:如果一個類實現了胖接口的所有方法(部分方法在某次調用時并不需要),那么在該次調用時我們就會發現此時出現了(部分并不需要的方法),而并沒有機制告訴我們我們現在不應該使用這部分方法。
how: 避免胖接口,類永遠不必實現違反單一職責原則的接口。可以根據實際多職責劃分為多接口,類實現多接口后, 在調用時以特定接口指代對象,這樣這個對象只能體現特定接口的方法,以此體現接口隔離。

public interface IA{void getA();}interface IB{void getB();}public class Test : IA, IB{public string Field { get; set; }public void getA(){throw new NotImplementedException();}public void getB(){throw new NotImplementedException();}}class Program{static void Main(string[] args){Console.WriteLine("Hello World!");IA a = new Test();a.getA(); // 在這個調用處只能看到接口IA的方法, 接口隔離}}

Command Query Separation
命令查詢分離: 操作方法就只寫操作邏輯,查詢方法就只寫查詢邏輯,并以明顯的方法名區分自己的動作。
有了這個原則,程序員可以更加自信地進行編碼:由于查詢方法不會改變狀態,因此可以在任何地方以任何順序使用,使用操作方法時,也心中有數。

End

懂得這么多道理,卻依舊過不好這一生。前人總結的編程原則和方法論需要在實踐中感悟,束之高閣,則始終不能體會編程的魅力和快感。

總結

以上是生活随笔為你收集整理的[温故知新] 编程原则和模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。