精品视频无码一区二区三区-亚洲av午夜国产精品无码中文字-亚洲av一二三区成人影片-94久久国产乱子伦精品免费

新聞資訊

新聞中心

當(dāng)前位置: 首頁 > 新聞中心 > 軟件開發(fā)定制

軟件開發(fā)要遵循的那些個原則,你了解幾個?

2023-02-16 14:30:58

在做軟件開發(fā)的時候,有這么幾個問題是一定要掌握的先后順序的,其實也就是原則問題,只有在這些節(jié)點上掌控好軟件開發(fā)的細(xì)節(jié),才能做出更為完善的系統(tǒng),接下來,云南來可云小編給大家來分享一下這幾個原則。

1、剔除無效狀態(tài)

我把這一點排第—,是因為我認(rèn)為它是比較重要、又比較強大的原則之一。

你可能在定義類型時聽到過這個詞,但其實這個原則適用于所有與表示數(shù)據(jù)相關(guān)的地方——例如數(shù)據(jù)庫設(shè)計。

它不僅可以減少系統(tǒng)的狀態(tài)數(shù)量(從而變得更簡單),還能減少無效狀態(tài)的數(shù)量!你的系統(tǒng)不需要處理這些無效狀態(tài),因為它們在你的程序中實際上是不可表示的。

這不只是一個小技巧,它可以極大簡化你的系統(tǒng),并防止出現(xiàn)各種類型的 bug。這有一些例子。

2、數(shù)據(jù)一致性讓系統(tǒng)更簡單

對數(shù)據(jù)施加一致性規(guī)則,減少了系統(tǒng)需要處理的狀態(tài)數(shù)量。這是從上一個原則派生而來的。

定義

這里說的是一致性的普遍含義:即數(shù)據(jù)遵循某些規(guī)則,并且在任意時刻都始終遵循這些規(guī)則。這一定義與 ACID 有關(guān),但不要與 CAP 混淆起來了。

規(guī)則可以是任何東西,例如,你的信用永遠不能變成負(fù)數(shù),或者私密的帖子不應(yīng)該被其他人看到。它不限于外鍵或惟一索引,盡管它們也是有效的規(guī)則。

和數(shù)據(jù)庫一樣,應(yīng)用程序也可以通過使用 ACID 事務(wù)來加強一致性。如果能在數(shù)據(jù)庫級別強制保持一致性是比較好的,但在實際中,對稍微復(fù)雜一點的東西來說,這樣做并不常見。

實用建議

任何限制或損害一致性的行為都會導(dǎo)致復(fù)雜性。這就引出了以下這些實用的建議:

讓系統(tǒng)更簡單:

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

規(guī)范化,減少冗余數(shù)據(jù)

一個“好的”數(shù)據(jù)庫設(shè)計

ACID 事務(wù)

更多的數(shù)據(jù)約束

讓系統(tǒng)更復(fù)雜:

多個數(shù)據(jù)庫

冗余或非正規(guī)化數(shù)據(jù)

糟糕的數(shù)據(jù)庫設(shè)計

較少(或沒有)數(shù)據(jù)約束

當(dāng)然,有時候讓系統(tǒng)變復(fù)雜也是有正當(dāng)理由的,我并不想讓復(fù)雜性變成一個“骯臟的”詞。請參閱后面的一個原則“殺雞不要用牛刀”。

我認(rèn)為這個原則是當(dāng)今軟件工程中被低估的原則之一。一致性問題經(jīng)常被忽視。很多問題,我敢說大多數(shù)問題,基本上都是一致性問題——數(shù)據(jù)不符合某些期望。

參見附錄,了解不一致性是如何導(dǎo)致復(fù)雜性的。

3、數(shù)據(jù)設(shè)計先行

這個問題,“代碼還是數(shù)據(jù)?”,哪一個在 10 年后更有可能繼續(xù)存在。

代碼可以被丟掉重寫,但數(shù)據(jù)很少會這樣。

數(shù)據(jù)比代碼更重要。代碼的唯目的是轉(zhuǎn)換數(shù)據(jù)。

在設(shè)計新系統(tǒng)時,盡量先從數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)開始,并在此基礎(chǔ)上開發(fā)代碼。要考慮可以在數(shù)據(jù)上施加的約束并實施它們,理想情況下是通過表示數(shù)據(jù)的方式進行的。

代碼設(shè)計是數(shù)據(jù)設(shè)計的下一步。數(shù)據(jù)模型越簡單、越一致,代碼就會越簡單。

4、殺雞不要用牛刀

這是軟件開發(fā)人員比較常犯的錯誤。

這個原則是說,當(dāng)你在做需要付出復(fù)雜性代價的權(quán)衡時,要確保權(quán)衡的必要性得到經(jīng)驗證據(jù)的支持。

常見錯誤:

試圖構(gòu)建一個復(fù)雜的“可伸縮”系統(tǒng),可以伸縮到你可能永遠都不需要的規(guī)模。

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

在非性能瓶頸的地方優(yōu)化性能,增加不一致性或復(fù)雜性。

建議:

盡可能從比較簡單、正確的系統(tǒng)開始

對性能進行度量

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

有些優(yōu)化可以不進行度量,因為它們的成本非常低或為零。例如,為了保證你想要執(zhí)行的操作具有你想要的性能,使用正確的數(shù)據(jù)結(jié)構(gòu)。

的確,有時候經(jīng)驗本身就能告訴你是否做出了正確的權(quán)衡。但如果你能證明,那就更好了。

當(dāng)你必須做出選擇時,請選擇正確性和簡單性,而不是性能。

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

避免為了局部簡單性而增加全局復(fù)雜性

也就是避免為了讓系統(tǒng)的一部分變得更簡單,而導(dǎo)致整個系統(tǒng)變得更復(fù)雜。

這種交換通常是不平等的。追求局部的簡單性會導(dǎo)致全局復(fù)雜性的增加,而且是數(shù)量級的。

例如,使用較小的服務(wù)可以讓這些服務(wù)變得更簡單,但一致性的降低和對更多進程間通信的需求讓系統(tǒng)變得更加復(fù)雜。

6、識別內(nèi)在的復(fù)雜性

有時候事情本身就很復(fù)雜,你不能把問題簡單化。

任何這樣的嘗試都只會讓系統(tǒng)變得更加復(fù)雜。

7、使用的技術(shù)越少,系統(tǒng)就越簡單

深入理解一小部分技術(shù)要比只是表面理解很多技術(shù)好。

更少的技術(shù)意味著更少的東西要學(xué)習(xí)和更少的運維復(fù)雜性。

8、集中精力學(xué)習(xí)概念,而不是技術(shù)

不要太關(guān)心技術(shù)的復(fù)雜細(xì)節(jié),因為你可以隨時查閱它們。你要學(xué)習(xí)底層的基本概念。

技術(shù)會變化,概念卻是永恒的。你學(xué)到的概念將被用在更新的技術(shù)中,你就可以更快地學(xué)會新技術(shù)。

例如,不要太關(guān)注 React、Kubernetes、Haskell、Rust 的表面細(xì)節(jié)。

9、代碼一致性很重要

有時候,具有一致性的代碼比“正確”的代碼更重要。如果你想要改變代碼庫中某些代碼的行為,就要修改它所有的實例。否則的話,就只能忍受。

代碼的可讀性更多地與一致性(而不是簡單性)有關(guān)。人們通過模式識別來理解代碼,所以請重復(fù) (和記錄) 模式!

10、分享原則很重要

如果你和隊友之間的共同原則越多,就能越好地在一起工作,而且你會越喜歡和他們在一起工作。


本文網(wǎng)址:http://zndex.cn/news/499.html

近期瀏覽:

相關(guān)產(chǎn)品

相關(guān)新聞

Copyright ? 云南來可云信息技術(shù)有限公司 All rights reserved 備案號:滇ICP備2021007612號-2