程序員界里一些有趣的名言之個人理解
前沿
以下這些話都不是我說的,只是看到時覺得比較有趣或者有價值,
所以記錄下來,再加上自己的理解。
1. 不要擔心你的程序出現異常,如果它總是正確的運行那我們可能早就事業了。
[個人理解]:任何程序都會出現異常,只不過出現異常的原因可能有很多,
比如程序某一版本的改動引入了新的bug,或者程序運行環境的差異,甚至是硬件的限制等等。
特別是在消費電子類產品中,由于更新換代的速度很快,所以程序中的bug總是在所難免,
這是由軟件的特點所決定:改動越多,bug會越多。
唯一不產生bug的條件就是:不做程序員,不寫代碼哪怕只有一行甚至改動一個字符。
但是像對于企業級應用軟件,不太會常常更改需求,也不太可能會為某個客戶做專門的定制,
這種軟件理論上是會趨于穩定的。
所以我們要坦然的去面對所遇到的每一個bug,善于總結分析、努力提高自己。
2. 當你準備給你的代碼加注釋的時候,你應該要思考怎么樣修改代碼而不是去給代碼加注釋。
[個人理解]:關于代碼注釋,應該是爭議的內容:反對給代碼添加注釋者的理由是你應該要能
寫出可讀性好的代碼,通過看代碼就應該能立即明白你的代碼的意義或功能;支持給代碼注釋者
的理由是只有加了注釋的代碼才是可讀性好的代碼,才能幫助別人理解代碼。
這里個人的感覺是代碼注釋應該要適度去使用:(1)如果你的代碼中實現了一些抽象度很高的算法
來完成某個功能,應該要簡明扼要的注釋一下;(2)像提供給其它模塊的API,應該要對基本的函數功能,
輸入輸出以及返回值含義等進行說明,總不能每次調用一個API,都要去翻一下文檔吧?
(3)如果給代碼注釋,那將來代碼改動時一定要同步改動這些注釋,否則這些注釋不但不能
發揮應有的作用反而會產生負面效果。這會成為代碼維護者的噩夢,也會讓你有機會被
千千萬萬次問候。
3. 九個人不能用一個月生一個孩子。
[個人理解]:這是軟件工程學的問題,軟件不是簡單的人力疊加就能簡單的達到軟件周期的縮減。
軟件的生命周期包括:問題定義、可行性研究、需求分析、開發階段(編碼、設計與實現)以及軟件維護
這些過程。
4. 質量、速度和廉價,選擇其中兩個。
[個人理解]:總不能既當婊子,又要立牌坊吧?
5. 如果你交給一個人一個程序,那你將折磨他一天;如果你教會一個人怎樣去編程,那你將折磨他一輩子。
[個人理解]:這個不評論,自行體會。
6. 作為一個程序員,糟糕的是不敢去修改一個代碼塊,而更糟糕的是這個代碼是你自己寫的。
[個人理解]:這個說明了代碼可讀性的及其重要性以及時間可以讓人淡忘一切,所以我們要努力寫出
優質的可讀性好的代碼;必要時對一些特別的案例要添加適當的注釋甚至文檔化以備將來翻閱。
7. 軟件開發是這樣的:前90%的代碼需要90%的開發時間;后10%的代碼仍然需要90%的開發時間。
[個人理解]:軟件開發常常就是這樣的,總是會有各種不預期的因素導致產品延期交付。
8. 用代碼行數來衡量軟件開發進度就好比是用重量來衡量飛機制造進度一樣。
[個人理解]:如果有人用這種方法來衡量,個人認為是可笑且荒謬的,還是我是井底之蛙?
9. 空代碼的執行效率比任何其他代碼的執行效率都要高。
[個人理解]:說的完全正確,可是我們總不能只靠空代碼來寫出一個軟件吧?
但是這也告訴我們,在編程時就應該要想到軟件的效率問題,你的軟件中不應該大量包含那些無意義、
無用的、多余的代碼,努力寫出執行效率高、用戶體驗良好的軟件。
10. 當你試圖解決一個你不明白的問題時,復雜性就產生了。
[個人理解]:問題都不知道是什么,還談什么解決問題,那完全是胡扯。
這也就是為什么當你在解決一個問題時,老板要求你匯報產生問題的根本原因的原因。
11. 傻子都可以寫出計算機可以識別的代碼;但只有優秀的程序員可以寫出人類可以理解的代碼。
[個人理解]:這難度是說如果你寫不出別人能夠理解的代碼時,你就是傻子嗎?
我想這里應該是要說,代碼的可讀性是多么的重要啊。
你的代碼應該不總是只有你一個人來看,所以努力寫出可讀性好的代碼吧。
12. 我只是具有好的編程習慣的優秀程序員。
[個人理解]:這該是多么謙虛的說法啊。
事實上你會發現如果你一直堅持著良好的編程習慣,你就有可能寫出好的軟件,并且你會
發現好的編程習慣會給你帶來很多價值(比如你的bug變少了,你學習的時間變多了)。
13. 軟件工程師在努力設計出連白癡都會使用的程序,而宇宙卻在生產更大的白癡。
到目前為止,宇宙是勝利者。
[個人理解]:我不贊同這里的白癡言論。你不能指望世界上所有的人都會成為計算機專家。
不過人類的需求總是具有多樣性并且在無止境的變化著。
14. 去調試一段你從未見過的代碼比你自己去重寫這些代碼需要更多的精力。
[個人理解]:這不一定,或者說這句話有他的適用范圍,比如你在調試某個linux內核函數。
但是很多時候我都是一遍調試并且一遍"罵"著。
15. 計算機編程的編制就是要控制復雜性。
[個人理解]:到目前為止,個人的理解是越簡單的東西越穩定。
越復雜的東西,其隱藏的問題可能越多,只是還沒有被發現而已。
16. 用幾個小時去計劃,可以節省你幾周的編碼時間。
[個人理解]:你就像你在變化之前畫流程圖一樣,你不但要清楚做什么,還要知道怎么做,
否則再多的編碼都是沒意義的。
17. 軟件設計方法通常有兩種:一種是使軟件簡單明顯沒有缺陷;另一種是軟件過于復雜
沒有明顯的缺陷。
[個人理解]:軟件設計能簡單就簡單點,越簡單的東西越不容易出問題。