--- tags: extract --- # [易讀程式之美學](https://www.tenlong.com.tw/products/9789862767191) # CH11 將混雜的工作,拆成邏輯獨立的函式或段落。 ## 工作可以很小 看似一件事情 = 投票轉整數 + 更新分數 ## 從物件抽取數值 ## 較大的範例 ## 結論 一次一項工作 # CH12 幫助別人理解也有助於釐清 (精煉) 自身的想法 → 以「口語」方式撰寫程式碼 ## 例一:有權限才能看內容 (清楚描述邏輯) - 利用口語釐清邏輯,依樣寫出程式碼。 - 最終雖有空的 if 區塊,但容易理解。(也改用肯定句) ## 例二:逐次顯示小祕訣 (善用函式庫) 1. 隱藏目前顯示的祕訣 2. 找到下個祕訣並顯示 3. 若沒下個祕訣,則回到第一個祕訣。 因為有 `.next()` 工具函式,省下了許多繁瑣的操作。 ## 例三:`INNER JOIN` 三個資料表 (較大的例子) 根據 time 連接三個表 1. 原版:推進最舊的迭代器 2. 抽出 `AdvanceToMatchingTime()` 3. 清理 `AdvanceToMatchingTime()` * 反而可以用更通用的變數名稱 (`t1`、`t2`、`t3`) ## 結論 - 總之試著用自己的話說一遍 - 可以利用 泰迪熊 或 黃色小鴨 - 如果還說不太上來,可能是有什麼還沒搞清楚。 # CH13 ## 不開發不需要的功能 - 實作出來的 功能、程式碼、文件,都是成本。 - 技能:知道何時不該寫程式 ## 並非總要終極功能 1. (據經緯度) 尋找鄰近商店 * 考慮 換日線兩側、南北極位置、地球曲率 * 只有德州境內 30 家分店,簡單的直線距離即可。 2. 快取 * LRU (Least Recently Used)、Hash Table、Linked List * 也許留著上一個就足夠了 → 80/20 Rule ## 好的大程式是由許多好的小程式組合而成 - 通用的工具程式碼 - 移除無用的程式碼 - 切分成小專案 - 保持程式輕巧 別抗拒刪除程式碼 ## 熟悉你的函式庫 - 有空逛一下菜市場 - Python 例:使用 `set` 而別自幹 `unique()` - Unix 例:以 `awk` 和 `grep` 取代撰寫 C++/Java 程式 (維護成本較高) - 寫程式不只是打字:設計、測試、除錯、重構、文件、最佳化、… ## 結論 - 刪除不必要的設計 - 先簡單做 - 善用函式庫,不要自幹。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up