你必須理解的三大軟體原則2 KISS

2021-06-10 05:05:18 字數 2134 閱讀 5067

正文

原作者資訊:2023年9月7日chris peters

原則1:不做重複的事(don't repeat yourself)

19世紀後葉,物理學家們糾結於解釋當物體達到很遠的距離,就像整個太陽系的距離時,他們間的引力,磁力,和光磁力是如何相互影響的。正因如此,一種稱作以太的中間物質被假設出來了。據說,光就是通過這種中間物質傳播的,並且一些其他無法解釋的現象也被歸結到它的身上。多年以後,一種假設擴充了這個理論,這種假設將以太的假定條件調整為實驗結果。一些假設是武斷的,一些還會導致其他的問題,總之整個理論異常複雜。

瑞士專利局的一名雇員,

albert einstein

,提出了解決整個以太理論的革命性想法:如果我們接受「時間並不是連續的而是相對的」這個觀點後,那在計算超長距離時產生的奇怪問題都將煙消雲散。他在相互競爭的情況下選用最少的假設給出最簡潔的解釋,這種難以置信的創新思維被引用作

ockhams』s razor

。很多行業都有相似的思想。軟體開發(還有其他行業)中,我們將其稱作

kiss

原則。對於這個縮寫還有很多不同版本,但主旨只有乙個,那就是你應該以最簡潔的方式做好某件事。

人類歷史的實質性進展都是那些極具橫向思維的人們推動的

超文字傳輸協議是乙個作為精簡方案而廣受傳播的完美例項:它是為了基於檔案的超文字傳輸而設計的,也是當前高互動性應用和桌面應用的基石。也許我們不得不找尋出解決這種協議內諸多限制的方案,甚至,或許在將來的某一天它會被其他事物取而代之。但不管怎樣,現狀是:基於多種請求方式(

get或者

post

)、狀態碼或者純文字引數,

已被證明是兼具伸縮性和健壯性的。這就是為什麼

被web

開發者不斷推向至高的極限位置並且巋然不倒的原因。

我們認為這種方法是理所當然的,但軟體開發及其標準化的歷史上到處充斥著過度複雜與半途而廢的解決方案。甚至於還有乙個專有的短語來形容這種失敗:膨脹軟體(

bloatware

)。這樣的軟體通常也被描述為

dod,胎死腹中(

dead onarrival

)。講到膨脹軟體,我有乙個與非

dry理論非常相似的理論。不管怎樣,網際網路的成功可以被描述為簡單而高效的的成功案例。

那麼要想取得最簡潔的方案都需要些什麼呢?在軟體開發中,這都歸結為可維護性與可讀性。因此,

kiss

原則應該在需求階段就被引入。當你正在考慮如何將客戶需求轉變為可實現的元件時,請試著確認以下幾個部分:

我曾經參與過乙個專案,這個專案的客戶希望將

excel

**匯入到他的員工管理軟體中。

excel

是乙個擁有複雜檔案格式的第三方軟體。格式相當複雜,因為它富文字的:你可以向其新增圖表或者其他一些內容,這些特性卻並不是客戶所需要的,他僅僅關注資料。所以,實現

excel

匯入功能需要實現一些並不是必須的功能。另外,

excel

已經有好多個版本,同時微軟每年都在發布新版本。這將會變得異常難於維護,並且將會帶來不菲的開銷。

我們最終實現了以逗號分隔的文字匯入功能,這只需要幾行**就可以完成。資料頭真的很小(等同於

excel

工作表的

csv格式),並且這個方案是可維護的且具有前瞻性。反正

excel

可以匯出

csv(將來客戶希望使用的其他程式也可以)。由於這個方案是低成本的,它是

kiss

規則的好實踐。

總結:如果你覺得乙個任務看起來很複雜,請嘗試一些跳出思維定勢的想法。如果某人正在向你闡述他的需求,而你覺得實現起來會很困難,這種情況下往往你是正確的。當一些功能只是很難實現時,超複雜的解決方案便會很平常的接踵而來。這就是事實,因為在整個流程中有很多人參與,而這些人根本不具備給出乙個可信賴的得失分析的專業技術。因此,他們看不到問題所在。反覆考量需求,看看將他們剝離到本質後還是不是客戶真正想要的。花時間去討論關鍵點,再解釋下為什麼其他的解決方案可能會更合適。

七大軟體設計原則

定義 乙個軟體實體如類 模組和函式應該對擴充套件開放,對修改關閉。用抽象構建框架,用實現擴充套件細節。優點 提高軟體系統的可復用性及可維護性 我的理解 原來的程式功能不能夠去改變,如果要修改一些資料,就繼承這個類對其進行修改。不能修改原來的 如果修改可能會造成其他引用這個類的功能出現錯誤。定義 高層...

七大軟體設計原則

1 開閉原則定義 乙個軟體實體,如類 模組和函式應該對擴充套件開放,對修改關閉用抽象構建框架,用實現擴充套件細節 優點 提高軟體系統的可復用性及可維護性 核心就是物件導向程式設計,我們盡量進行擴充套件,而不是去修改。2 依賴倒置原則定義 定義 高層模組不應該依賴底層模組,二者都應該依賴其抽象,抽象不...

Linux 下的三大軟體安裝方式

1.通過rpm軟體包來安裝 說起rpm redhat package management 標準的軟體包,大家可能都會想起大名鼎鼎的redhat公司,正是rpm軟體包發行方式的出現,使linux中的應用軟體安裝變得 簡單。如果使用者想安裝按rpm方式發行的軟體,只需簡單地輸入命令 rpm ivh r...