-- >>> 此篇博文乃看 王垠大神 總結而來
--->>>> 原文在這 大家覺得好可以多多支援
尤其喜歡這麼一句話: 程式設計是乙個具有藝術性和創造性的工作。需要很多練習和領悟
也希望自己能夠多點勤奮,多耕耘多收穫
1、反覆推敲**
--> 多覆盤研究自己的**
如果反覆提煉**已經不再有進展,那麼你可以暫時把它放下。過幾個星期或者幾個月再回頭來看,也許就有煥然一新的靈感
2、寫優雅的** (這是因為程式所做的幾乎一切事情,都是資訊的傳遞和分支)
--> 整整齊齊,像電路邏輯分明,分流或者匯合,切記 if 勿省略 else
3、寫模組化的**
(1) 避免寫太長的函式 最多40 ~ 50行為佳
(2) 製造小的工具函式
(3) 每個函式只做一件簡單的事情
(4) 避免使用全域性變數和類成員(class member)來傳遞資訊
4、寫可讀的**
(1) 使用有意義的函式和變數名字。比如:put(elephant1, fridge2);
(2) 區域性變數應該盡量接近使用它的地方。
(3) 區域性變數名字應該簡短。
(4) 不要重用區域性變數,會讓人誤以為這個區域性變數會在**使用
(5) 把複雜的邏輯提取出去,做成「幫助函式」
(6) 把複雜的表示式提取出去,做成中間變數
(7) 合理的地方換行
5、寫簡單的**
(1) 避免使用自增減表示式
(2) 永遠不要省略花括號
(3) 合理使用括號,不要盲目依賴操作符優先順序
(4) 避免使用continue和break。
1. 如果出現了continue,你往往只需要把continue的條件反向,就可以消除continue。
2. 如果出現了break,你往往可以把break的條件,合併到迴圈頭部的終止條件裡,從而去掉break。
3. 有時候你可以把break替換成return,從而去掉break。
4. 如果以上都失敗了,你也許可以把迴圈裡面複雜的部分提取出來,做成函式呼叫,之後 continue 或者 break 就可以去掉了
6、寫直觀的**
--> 避免閱讀一串**需要往上很遠找其邏輯是什麼,分支應該明確
--> 少寫 && 或 || 炫耀**水平而應該是簡潔直觀,避免過度思考 if = 如果,! = 失敗,即不需要利用邏輯學知識,就知道它在說什麼。
7、寫無懈可擊的**
--> 避免疏忽分支, if 勿省略 else
--> 少用 「預設值」例如:
string s;if (x < 5) else
而不是
string s = "";if (x < 5)
8、正確處理錯誤
(1) 使用有兩個分支的if語句,窮舉所有的情況,不漏掉任何乙個。
(2) 盡早處理錯誤機制
(3) try catch裡面,應該包含盡量少的**。
9、正確處理null指標
(1) 盡量不要產生null指標。盡量不要用null來初始化變數,函式盡量不要返回null。
10、防止過度工程
(1) 先把眼前的問題解決掉,解決好,再考慮將來的擴充套件問題。
(2) 先寫出可用的**,反覆推敲,再考慮是否需要重用的問題。
(3) 先寫出可用,簡單,明顯沒有bug的**,再考慮測試的問題。
集體智慧型程式設計的筆記
從evernote搬家過來,希望可以分享給更多的同學。euclidean distance and pearson correlation score from imp import reload 來定義reload。經過recommendations.py,可以發現 選擇不同的相似性度量方法,對結...
王銀《程式設計的智慧型》
反覆提煉,剔除垃圾 枝丫分明,樹狀 如果出現了continue,你往往只需要把continue的條件反向,就可以消除continue。如果出現了break,你往往可以把break的條件,合併到迴圈頭部的終止條件裡,從而去掉break。有時候你可以把break替換成return,從而去掉break。如...
集體智慧型程式設計學習
集體智慧型程式設計學習 概要 文章主要討論一些我遇到的問題,學習到的方法,總結一些演算法的實現過程。注 所參考的版本為2009年出版。書中packages與現在有變化,但是可以通過查閱相關packages文件來找到相關功能 3.相似度排序 4.相似人群加權排名及歸一化 6.構建基於 del.icio...