久久精品影院一区二区三区-久久精品影视-久久精品伊人网-久久精品伊人波多野结-伊人网二本二区-伊人婷婷在线

專業的品牌信息化整合營銷服務機構

互聯網信息化咨詢/技術開發/整合營銷

請通過以下方式免費咨詢

【易龍天】5個有用的軟件開發原則

我總結了一些軟件開發原則。在這些原則中,大多數都是以簡化系統為核心。在我看來,簡單的系統會更可靠,更容易修改,而且一般更容易使用。當觀念發生改變時,我希望更新它們。
1、數據一致性讓系統更簡單
對數據施加一致性規則,減少了系統需要處理的狀態數量。這是從上一個原則派生而來的。
定義
這里說的是一致性的普遍含義:即數據遵循某些規則,并且在任意時刻都始終遵循這些規則。這一定義與 ACID 有關,但不要與 CAP 混淆起來了。
規則可以是任何東西,例如,你的信用永遠不能變成負數,或者私密的帖子不應該被其他人看到。它不僅限于外鍵或惟一索引,盡管它們也是有效的規則。
和數據庫一樣,應用程序也可以通過使用 ACID 事務來加強一致性。如果能在數據庫級別強制保持一致性是最好的,但在實際中,對稍微復雜一點的東西來說,這樣做并不常見。
實用建議
任何限制或損害一致性的行為都會導致復雜性。這就引出了以下這些實用的建議:
讓系統更簡單:


  • 更少的數據庫 (理想情況下是一個)

  • 規范化,減少冗余數據

  • 一個“好的”數據庫設計

  • ACID 事務

  • 更多的數據約束


讓系統更復雜:


  • 多個數據庫

  • 冗余或非正規化數據

  • 糟糕的數據庫設計

  • 較少(或沒有)數據約束


當然,有時候讓系統變復雜也是有正當理由的,我并不想讓復雜性變成一個“骯臟的”詞。請參閱后面的一個原則“殺雞不要用牛刀”。
我認為這個原則是當今軟件工程中最被低估的原則之一。一致性問題經常被忽視。很多問題,我敢說大多數問題,基本上都是一致性問題——數據不符合某些期望。
參見附錄,了解不一致性是如何導致復雜性的。
2、殺雞不要用牛刀
這是軟件開發人員最常犯的錯誤。
這個原則是說,當你在做需要付出復雜性代價的權衡時,要確保權衡的必要性得到經驗證據的支持。
常見錯誤:


  • 試圖構建一個復雜的“可伸縮”系統,可以伸縮到你可能永遠都不需要的規模。

  • 在不考慮需求或成本的情況下,讓服務盡可能地小。

  • 在非性能瓶頸的地方優化性能,增加不一致性或復雜性。

建議:
  • 盡可能從最簡單、最正確的系統開始

  • 對性能進行度量

  • 如果不能解決實際問題,就不要付出復雜性代價或違反其他原則。

  • 有些優化可以不進行度量,因為它們的成本非常低或為零。例如,為了保證你想要執行的操作具有你想要的性能,使用正確的數據結構。

  • 的確,有時候經驗本身就能告訴你是否做出了正確的權衡。但如果你能證明,那就更好了。

  • 當你必須做出選擇時,請選擇正確性和簡單性,而不是性能。

  • 在某些情況下,正確而簡單的代碼是性能最好的代碼!

真正的問題是程序員在錯誤的地方和錯誤的時間花了太多的時間在擔心效率上。過早優化是編程中所有(或者至少是大部分)罪惡的根源。——計算機科學家 Donald Knuth

3、識別內在的復雜性
有時候事情本身就很復雜,你不能把問題簡單化。
任何這樣的嘗試都只會讓系統變得更加復雜。
4、集中精力學習概念,而不是技術
不要太關心技術的復雜細節,因為你可以隨時查閱它們。你要學習底層的基本概念。
技術會變化,概念卻是永恒的。你學到的概念將被用在更新的技術中,你就可以更快地學會新技術。
例如,不要太關注 React、Kubernetes、Haskell、Rust 的表面細節。
重點學習:


  • 純函數式編程

  • 關系型模型

  • 規范的方法

  • 邏輯編程

  • 代數數據類型

  • 類型類 (通用的和特定的)

  • 借位檢查器 (仿射 / 線性類型)

  • 依賴類型

  • Curry-Howard 同構

  • 同像性(Homoiconicity)

  • VirtualDOM

  • 線性回歸

5、分享原則很重要
如果你和隊友之間的共同原則越多,就能越好地在一起工作,而且你會越喜歡和他們在一起工作。
這是我能想到的最簡單的例子,希望能毫不費力地與現實問題聯系起來。
假設一個數據庫有兩個布爾變量 x 和 y,你的應用程序有一個規則,即 x = y,可以通過使用一個事務修改這兩個變量來執行這個規則。
如果這個規則被正確執行,那么數據只有兩種狀態:(x = True,y = True) 或 (x = False,y = False)。
基于這個規則的函數“toggle”就非常簡單。你可以讀取其中一個值,并將兩個值都設置為反向值。
現在,假設你將這兩個變量放到不同的數據庫中,并且不能再被一起修改,那么會發生什么?
因為你不能確保 x = y 的一致性,所以數據可以有兩種以上的狀態:(x = True,y = False) 或 (x = False,y = True)。


  • 如果你的系統處于這些狀態中的一種,你應該使用哪個值?

  • 當處于其中的一種狀態時,“toggle”函數的行為是怎樣的?

  • 在寫入新值時,如何確保兩次寫入都成功?


這些問題沒有正確的答案。
當然,如果我們一開始就遵循“剔除無效狀態”的原則,那么將只有一個變量!
查看更多
主站蜘蛛池模板: 亚洲成a人v欧美综合天堂麻豆| 久久久精品人妻一区二区三区四区蜜芽 | 亚洲第一网站男人都懂2023| 久久无码内射区| 丁香五月网久久综合网,狠色伊人亚洲| 中文字幕在线高清视频观看不卡| 亚洲GV天堂无码男同在线观看,我才12| 美女任你摸网站网站| a级毛片无码专区绯色懂色 | 亚洲2022国产成人精品无码区app| 久久精品毛片观看高清| 91精品国产91久久综合下面有根棒棒糖 | 一区二区三区人妻中文字幕| 区二区三区电影网站| 东京热女大交乱| 婷婷五月人妻露小说| 国产日韩一区二区三区在线观看视频吗? | 色噜噜狠狠狠综合曰曰曰二三四五六七本 | 亚洲国产成人久久综合碰碰动漫3d,午夜... | 日韩人妻无码一区二区| 囯产精品一品二区三区-国产A级毛片中文 | 精品国产自在精品国产精男| 中文字幕精品亚洲无线一区码 | 丰满少妇又爽又紧又丰满在线观看精品国产一区二区 | 中文字幕日韩一区二区不卡,久青草国| 午夜精品久视频在线观看91av| 国产三级在线观看播放视频色精屋| 亚洲午夜久久久精品影院00| 久久99精品久久久久子伦,成人性生交 | 一级特黄aaa大片_| 精品久久久久久无码中文野结衣_久久激情| 中文字幕亚洲精品无码第一二区视频 | 18禁黄网站禁片无遮挡观看下载一 | 在线观看自拍少妇精品| 久久艾草毛片一级| 亚洲国产成人久久综合碰碰动漫3d,午夜... | 一区二区三区免费视频网站| 狠狠色狠狠色综合日日不卡卡| 亚洲精品无码午夜福利中文字幕日韩精品无码免 | 中文字幕无码不卡一区二区三区,亚洲大道无码高清乱码 | 国语自产精品视频在线看 抢先版图片|