怪怪设计论: 抽象无处不在
文章主要帶出以下幾點:
- Abstraction 做得好唔好唔係睇同現實有幾相似,係睇有冇抽象到事物嘅必要本質,抽象出黎嘅object易唔易被處理,唔係為用理論而抽象。
- 設計必需由數據表現形式出發,而唔係一D OO 嘅design pattern。
- 設計時,要係現實世界同電腦系統嘅抽象中平衡
總括而言,軟件設計時,必需深入了解現實嘅問題,再抽象必要嘅本質,以Data為設計嘅藍圖。Implementation果時,唔可以過度重視現實世界嘅抽象而忽略電腦系統嘅抽象,因為implementation果時係要做大量嘅計算,如果個model唔適合計算,就會做成更多嘅問題。係設計對外嘅interface時,可以多運用OO嘅思想,令到其他人可以更易運用。
15 May 2018
為解決問題而design,而唔係死守 pattern同rules。
- High level api model from 現實世界
- as we need to solve business problem, simplify it by abstract business logic
- Low level api model from 電腦系統 (abstract the system logic)
- as we need to solve technical problem, we need to simplify the implementation details
21 Oct 2018
睇最後果5個point就得
非言语沟通技巧
眼神,衣着,肢體語言,聲調,準時同笑容都係溝通嘅一種。
19 May 2018
D point冇咩特別,但係值得重讀,去提醒自己
以下無需重讀
勿在沙浮筑高台, 再论社区风格
过去有前辈跟我说, 学好数学就要学好数学史, 学好哲学就要学好哲学史. 为什么? 因为这反映的是人类思维的变化与进步.
相當同意,歷史可以令我地明白有咩問題要解決,同埋當時嘅問題點樣解決,後人點樣improve 個solution。單睇solution唔能夠理解解決問題嘅思路。透過了解思維嘅轉變,可以對問題有更深入嘅了解。
15 May 2018
係學webpack 同 React-redux嘅時間,UMD 同 MVC 嘅演變歷史對我有好大嘅幫助,易上手好多。篇文係俾作者用黎發洩對討論區風氣嘅不滿,冇必要重讀。
闲谈: 就那么回事
當中對ORM嘅批評,可以係了解後再思考一下。
15 May 2018
文中對ORM嘅分析唔多,重點如下,唔洗重讀:
- 簡單將database logic 包做Object,由於太過generate,未必solve到OO真正想solve嘅問題
- ORM嘅能力較弱,當中logic比較複雜時,往往唔可以用ORM黎解決,都係要自己寫query
零碎: 学习, 技术明星, 面向对象
文中討論左好多Design Pattern點拆,D logic要分到幾細,又有好多唔同嘅situation,又有唔同嘅做法。大家都想用logic同數學去建立一D規則。我覺得當中有一個盲點,就係忽略左「人」E樣野。所謂 spaghetti code 都難免係主觀嘅,個重點可能唔係D logic有幾複雜,而係「人」點樣去接收,點樣去理解D logic。每個requirement都係特別,每個 business 嘅變化都唔同,根本好難去建立一D廣乏應用嘅規則。反而用一D寫文章,communication嘅concept去寫code,似乎會更易maintain。
15 May 2018
- 追technology可以係好花時間,作用又唔大,應該將時間放係:
- 深入鑽研,理解出黎一D更精煉嘅principle
- 強化學習能力
- 寫code嘅原則
- 唔應該諗太長遠嘅野,個problem 更易solve
- 諗太多reusability同extensibility好易會over engineering
- 當一D sub-problem己經完成,用sub-problem嘅solution嘅interface去solve個大problem
- Train abstraction嘅能力
- 寫spec同pseudocode咁去練好似仲更加有效
- Encapsulate左唔變嘅野,剩返D野係成日會變嘅野,比起要直接封裝changes容易得多
- 拆出黎嘅sub problem大小要適中
- 更易identify patterns
- 同architecture嘅layering 差唔多concept
- 唔應該諗太長遠嘅野,個problem 更易solve
回帖整理: 论团队中的设计工作
个人水平提高了, 带领的团队质量反而变差了. 但是很多人的认识方法是, 那是因为我还做的不够好. 其实不是这样的, 我觉得我们要反思过去快乐的日子的合理性, 并且承认它. 现在我体会到, 其实我现在做的这种框架式的, 创新型的工作, 如果想提高效率, 必须所有人都具有相当的水平, 并且愿意下力气. 任何一种过程方法, 都解决不了我的难题. 我觉得作为技术组织, 总有一天会进行更高层次的提升才能活, 而不被淘汰. 那时候, 你的团队, 如果都是人肉代码生成器的话, 他们跟的上吗?
團隊平均能力好重要。寫code同係工廠做product唔同,好難做QA。寫code冇得話跟住example copy,要經過思考,對人嘅 dependency 好大。如果條 team 能力跟唔上,無論個product design得幾好,個plan draft得幾好,都係execute唔到。
19 May 2018
唔洗重讀,但係cap出黎嘅金句值得一再反思
三问TDD: 单元测试总是好的吗?
最初的时候我总觉得TDD最核心的是T,Test。后来才开始明白,它最核心的其实是D,Drive(我非常认同,这就是我说的测试之外的东西)。你可以把测试写的 很弱,但你一定要在此影响下把代码重构的很好。
一語道破我個盲點,冇test唔緊要,最緊要D code structure靚,testable。Testable 嘅 code 多數條理分明,易讀易明,自然少bug,易maintain。重點係code structure,而唔係有冇test,為 test 而 test 係冇咩謂。
19 May 2018
最近行左一陣TDD,認同test唔係重點,個code structure先係最重要
- 唔洗每一段code都要test
- 就算有D位唔洗寫test,但係都一定要易set up test
- 由於要寫到D code testable,會引起好多module同design上嘅反思,係一個好好嘅feedback
- Code coverage唔係所有野
闲言碎语
原來.Net有樣野叫LINQ,D syntax同sql statement builder 有D似。我睇過js version嘅LINQ npm,但係好似唔係database layer,而係果好似underscore咁,process data嘅library。
19 May 2018
係粗略了解hexagonal architecture之後,發現LINQ 同 ORM 唔係同一個layer嘅野,唔可以直接比較。
- LINQ 比較似一個syntax sugar,可以俾你更加易去寫query,唔洗下下hardcode query string
- ORM 就係一個Database layer嘅 abstraction
我现在有一些工具类,我应该不应该做自己的框架?
如果有唔可以拋棄嘅assumption,咁就可以design做一個framework,否則應該design做一個library。
15 May 2018
- Framework:易setup,生態圈多數會有多D tools,可以增加productivity
- Library:彈性,易migrate同upgrade,如果design得好,component reusability仲大
编码,charset,乱码,unicode,utf-8与net简单释义 编码,charset,乱码,unicode,utf-8与net简单释义(续)
係variable length嘅string encoding,係用prefix決定之後讀幾多多個byte。
用一個no width space (0xFEFF) 去indicate big endian 定係 small endian
19 May 2018
唔洗重睇,What every JavaScript developer should know about Unicode 寫得更好。