原创 數據拆分和基礎行爲 分工帶來能力提升 拆分的依據 WHY FEATURE 數據和基礎行爲的一致性 總結

    全無設計的代碼會將數據一股腦的扔到一個結構或類中,最終導致上帝類,超長的函數和超長的文件的出現。這樣的實現是難以擴展,難以應對變化的。如果你的系統並不需要擴展,那怎麼寫都行。同時不需要擴展的系統一般意味着它基本沒有價值。分工帶來能力

原创 self 和 The Zen of Python 的理解 爲什麼需要self 再讀一遍 the zen of Python的原文:

爲什麼需要self  這兩天coding的時候想到一個問題,Python中class爲什麼需要self作爲內部方法的第一個入參?明顯的解釋是解決class內符號作用域的問題。類內的變量和函數,全局變量和函數非常明確的區分開,理解起來也很清

原创 就餐者說 不可預約和不漲價策略 團體聚餐的交易成本 等待時間不是沉沒成本

    我個人極少爲某種食物排隊。最近爲喫個潮汕牛內火鍋,和六個同事一起空前的排了一個半小時的隊,很值得做一點深入的剖折。先說幾個結論:不可預約和不漲價策略 對於生意好的中低端餐廳更有利;交易成本 可以解釋 多人就餐更容易堅持等待;等待時間

原创 數據不應該被直接訪問 避免get/set 封裝行爲:

    即便是使用c語言的嵌入式開發,也不應該直接用類似p->a.b的方式訪問數據。這麼做一方面意味着對數據缺乏抽象,毫無設計。另一方面意味着數據存儲結構和使用方式緊密耦合在了一起。當我們需要調整內存部署(以獲得更好的cache親和性以提升

原创 錄 李賀 苦晝短

原创 就餐者說

    我個人極少爲某種食物排隊。最近爲吃個潮汕牛內火鍋,和六個同事一起空前的排了一個半小時的隊,很值得做一點深入的剖折。先說幾個結論:不可預約和不漲價策略 對於生意好的中低端餐廳更有利;交易成本 可以解釋 多人就餐更容易堅持等待;等待時間

原创 No choice is a good choice

  愚蠢的實現各有各的蠢法,好的代碼有相似的氣質。比如說吧,在一個既有的函數裏增加一個分支,寫法包括1. 敲一顆釘子進去foo(){    ……    if(condition)          {statements;}    els

原创 數據拆分和基礎行爲

    全無設計的代碼會將數據一股腦的扔到一個結構或類中,最終導致上帝類,超長的函數和超長的文件的出現。這樣的實現是難以擴展,難以應對變化的。如果你的系統並不需要擴展,那怎麼寫都行。同時不需要擴展的系統一般意味着它基本沒有價值。分工帶來能力

原创 行爲分類和實現組合編程

    數據大體上可以分爲 接口類數據 和非接口類數據。前者意味着契約,後者關於實現,後邊提及數據,一般指後一種。數據還可以從 生命週期,聚合根,等角度分析。基礎行爲(basic behavior,bbhv)    數據拆分還有一個角度業

原创 數據不應該被直接訪問

    即便是使用c語言的嵌入式開發,也不應該直接用類似p->a.b的方式訪問數據。這麼做一方面意味着對數據缺乏抽象,毫無設計。另一方面意味着數據存儲結構和使用方式緊密耦合在了一起。當我們需要調整內存部署(以獲得更好的cache親和性以提升

原创 self 和 The Zen of Python 的理解

爲什麼需要self  這兩天coding的時候想到一個問題,Python中class爲什麼需要self作爲內部方法的第一個入參?明顯的解釋是解決class內符號作用域的問題。類內的變量和函數,全局變量和函數非常明確的區分開,理解起來也很清

原创 爲什麼選擇DSL(下)

軟件和組織架構的一致性先做一個小結,軟件面臨的核心問題是功能擴展時的成本(人力、時間、故障等綜合考慮)。解決的基本思路,其一、引入各種軟件設計方法來管理複雜性,過程大體上都可以視爲基於抽象的拆分和組合; 其二、分解職責到不同的人,定義明確的