程式設計的智慧型

2022-07-05 17:42:11 字數 1702 閱讀 9976

-- >>>  此篇博文乃看 王垠大神 總結而來

--->>>> 原文在這  大家覺得好可以多多支援

尤其喜歡這麼一句話: 程式設計是乙個具有藝術性和創造性的工作。需要很多練習和領悟

也希望自己能夠多點勤奮,多耕耘多收穫

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...