2023年第10本 《簡約之美,軟體設計之道》

2021-09-06 23:00:39 字數 1818 閱讀 1745

《簡約之美》這本書是夠簡約的,100頁,還有不少的留白處。現在的出版商流行《***之美》之風,看過了《數學之美》、《架構之美》、《資料之美》……好幾本這樣名字的書。這本書一開始好像在從哲學的角度來分析軟體設計中什麼才是最重要的,想把軟體設計納入科學的領域。書中新的內容不多,但有幾個觀點還是給我留下了深刻的印象,更多地是強調軟體維護的重要性。

「花更多的時間把程式寫簡單,相比一開始隨意拼湊些**再花大量的時間去理解,要快得多。」

所以需要不斷地重構,否則自己都不願看以前的**。

「全部軟體都有乙個相同的目標:幫助其他人。」

看來我把軟體定位於賺錢是不是有點急功盡利了?如果你的軟體給人以極大的幫助,錢可能就會隨之而來了吧,沒賺錢,說明軟體寫得還是沒有用。

「哪項需求能為人們提供最大的幫助,就應當賦予最高的優先順序。」

這倒是乙個劃定需求優先順序的不錯的指導原則。

「軟體設計科學的目標:設計程式設計師能盡可能簡單地開發和維護的軟體系統,這樣的系統才能為使用者提供盡可能多的幫助,而且能持續提供盡可能多的幫助。」

軟體設計的方程式:

d是重構的可行性,vn是當前價值,vf是未來價值,ei是實現成本,em是維護成本。在判斷價值時,應該考慮:多少使用者會從中受益?某功能發揮價值的頻率有多高?某功能在發揮價值時,它能發揮出多大的價值?

所以,軟體系統都需要維護很長時間,大多數情況下,未來長期收益vf和維護成本em才是真正需要考慮的,與之相比,當前價值vn和實現成本ei變得無足輕重。

簡而言之,相比降低實現成本,降低維護成本更加重要。

我們開發了太多的1.0版本的軟體,那麼我們只看到了方程式的左邊部分d=vn/ei,但實際上如果你的軟體要維護許多年,那麼這個方程式的重點在右邊,d=vf/em。

軟體設計的三大誤區:(1)編寫不必要的**;(2)**難以修改;(3)過分追求通用(過度工程overengineering)。

不要編寫不是必需的**,並且要刪除沒有用到的**。否則,你會製造出額外的bug,給他人造成困擾,真正需要這段**時還需要做大量的工作。

避免提前優化,避免重**明輪子。

不要去解決根本就不存在的問題。在動手解決之前,真正拿到證據,證明問題確實存在。

在增添新功能之前,花點時間去化簡任何讓你或你的同事覺得不夠簡潔的**。如果你無法**未來,當前能做的事,能夠降低維護成本的事情,就是把**變簡潔。現在花一點時間去追求簡潔,將來就可以節省大量的時間。簡潔到什麼程度?簡潔到傻子都能懂!良好的設計是不懂**的人看不到的,於是,軟體設計師就成了乙個費力不討好的工作,解決重大缺陷為你贏得很多讚譽,但是避免缺陷的發生……沒有人會注意到。

已經有許多的產品因為執著於單一用途而獲得了巨大的成功。

對我產生共鳴的大概就是上面那麼多,如果想看詳細的筆記,有人已經在這裡記得非常詳細了。

2023年第20本 零秒思考

看完這本書後,感慨這樣的內容也能寫成一本書?全書只講了一件事,每天寫10頁筆記,每頁只用1分鐘!道理很簡單,但能把這件事堅持10天應該都不容易。作者卻把這件小事做了n年。我試了一分鐘,只寫了4行,還真挺難的。把書中的內容轉化為行動真是挺難的。在企業中,有個關鍵能力是邏輯思維,最簡單來說就是在處理事情...

2023年10月之 嘰裡咕嚕

一看是11月1日才寫的這個10月總結就知道這兩天滾成球了。這週末codestorm 51nod演算法馬拉松 bc cf hihocoder,然後還有乙個華山杯的ctf 其實這些比賽自己比得有些超出自己預期,有的極其爛。像51,之前一直都是爆零大隊大隊長,這次一下子做出兩個80分的題,尤其是選數字那題...

2023年第10本 用系統來工作

從amazon上選書時,大資料系統推薦了此書。這本書適合一名小公司的老闆來讀,當自己整天忙亂到處救火時,肯定是公司的經營系統出了問題。道理很簡單,卻足以讓人思考一番。該書作者曾艱難地經營了15年的 應答服務公司,突然一天頓悟,明白了自己的系統出了問題,然後用一套簡單實用的方法,一步步扭轉他的事業和生...