代碼簡介之道
第六章 對象和數據結構
6.1 數據抽象
數據抽象的目的在於不暴露對象的內部數據細節.
只需要知道接口在做什麽(功能).
6.2數據, 對象的反對稱性
即面向過程(數據), 面向對象(對象)的代碼的區別.
- 面向過程可以方便的添加方法
-> 難以添加新的數據結構, 因為需要修改所有函數 - 面向對象的代碼可以再已有的方法基礎上增加新的對象
-> 難以添加新的方法, 因為需要修改所有實現的類.
總結:
需要持續添加新的方法用過程式
需要持續添加新的類用面向對象
6.3 得墨忒爾律
類C中的方法f只能調用以下對象的方法:
- C
- f創建的對象
- f的參數對象
- C的實體變量持有的對象
6.3.1火車失事
類C中:
A a= x.getA()
B b = a.getB()
調用者並不能在當前類C的環境中明白a.getB()在幹什麽事情(理想情況getB()應該出現在對象a的代碼範圍之中).
解決方案一:
A.B 采用過程式代碼.
但會導致混雜
6.3.2 混雜
過程式代碼與對象式代碼混合
導致既難以添加方法, 又難以擴展實現類.
正確的解決方案:
隱藏結構
把getA().getB() 包到一個對象裏:
B b = x.getB()
代碼簡介之道
相關推薦
代碼簡介之道
6.2 c中 面向過程 理想 現在 方法 3.2 實現類 新的 第六章 對象和數據結構 6.1 數據抽象 數據抽象的目的在於不暴露對象的內部數據細節. 只需要知道接口在做什麽(功能). 6.2數據, 對象的反對稱性 即面向過程(數據), 面向對象(對象)的代碼的區別. 面
好文章系列——代碼整潔之道
auth lis bird 結合 blog 文章 class win com 註: 整潔代碼之道——重構 (文章來源:http://www.infoq.com/cn/articles/clean-code-refactor 作者 南誌文) 寫在前面 現在的軟件
代碼整潔之道——3、對象和數據結構
ons amount 錯誤 setters 版本 整潔之道 fun john .proto 一、使用getters和setters 使用getters和setters獲取對象數據比簡單查找對象屬性要好。因為: 1、當你想要做的不僅僅是獲取對象屬性,你不必查找和修改你代碼中的
《代碼整潔之道》總結——類,系統,測試,叠進
邏輯 測試的 總結 容器管理 重復 -s 整潔之道 整潔 容器 類 類和前面說的函數一樣,應該功能單一且小巧,越小耦合性越低 系統 把系統的構造和使用分開。不要讓構造影響使用,也不要讓程序的運行反過來影響構造。這就需要工廠模式來創建一個容器管理類的生成,IOC是一種很
代碼混淆之道——控制流扁平與不透明謂詞理論篇
公式 urn 顯示 分支 等價 有一個 地址 for c/c++ 控制流是指代碼執行時指令的執行順序。在各種控制邏輯的作用下,程序會沿著特定的邏輯順序執行。一般控制邏輯包括有無條件分支、循環、函數調用等。 本文原創作者:i春秋簽約作家——penguin_wwy 一、扁平化的
讀《代碼整潔之道》有感
恐懼感 方向 崗位 數據 簡潔 專業 分享 用戶數 什麽 本周我開始閱讀Robert C. Martin所著的《代碼整潔之道》一書,希望能從中收獲高效編寫代碼的訣竅,因為我自認為我的代碼有時候比較糟糕,不太容易維護。一方面,是我沒有養成良好的編程習慣;另一方面,我不太清楚什
一周總結《代碼整潔之道》讀後感
當前 領域 編程 測試驅動開發 更多 編寫 代碼整潔之道 寫代碼 能夠 讀了第五章測試驅動開發,說真的這一章我幾乎是沒看懂,可能還沒有接觸到這麽深的領域,看得我雲裏霧裏的。 1.在實際編程時,你不得不花費大量的時間來寫代碼,然後花更多的時間讓代碼編譯通過,最後再花更多的時間
第九次讀書筆記——讀《代碼整潔之道》有感
比較 他在 架構 解決問題 信用 如果 問題 痛苦 足夠 第九次讀書筆記——讀《代碼整潔之道》有感 “相對於任何宏偉景願,對細節的關註甚至是更為關鍵的專業的基礎。首先,開發者通過小型實踐獲得可用於大型實踐的技能和信用度。其次,宏偉建築中最細小的部分,比如關不緊的門,有點沒有
一周總結《代碼整潔之道》讀後感1
商業價值 軟件開發 概率 簡單 是你 目的 一是 代碼整潔之道 方法 到了第十章了,對於大項目的預估也包括在了裏面。 1.預估是軟件開發人員面對的最簡單也是最可怕的活動之一了。 2.預估影響到的商業價值巨大,關乎聲譽,也給我們帶來了許多的苦惱和挫折。預估是業務人員和開發人員
代碼之美——《重構》、《代碼整潔之道》
gpo jpg 提交代碼 錯誤 業務 martin 怎麽辦 直接 一切都 什麽樣的代碼才是美的代碼?一千個coders可能會給出一千個答案。今天,讓我從一個簡單的角度來談談對於代碼之美的理解。 可讀性高的代碼才有可能是美的代碼 相信大家都有過這樣的經歷:接手一
《代碼整潔之道》
事情 控制 ati 語言 面向 code 消費者 名詞 兩個 代碼整潔之道 代碼猴子(Code Monkey): 低水平編碼者. 童子軍規. 技藝(craftsmanship): 知和行. 學寫整潔代碼, 掌握原則和模式, 並付出行動. 整潔代
Spark SQL 源代碼分析之Physical Plan 到 RDD的詳細實現
local 過濾 右連接 操作 images img mem sans 觀察 /** Spark SQL源代碼分析系列文章*/ 接上一篇文章Spark SQL Catalyst源代碼分析之Physical Plan。本文將介紹Physical Plan的toRDD的
C++代碼訓練之坦克大戰(2)
mbo calculate 人的 src ack 交流 學習過程 ima mta 這一篇中,我們繼續繼續進行我們的坦克大戰。 位置信息數據結構 在遊戲設計過程中,需要記錄大量的位置信息,如果僅僅使用(x,y)坐標很容易出錯。這一篇中,我們先定義兩個簡單的數據結構用來保存點
Zepto源代碼分析之二~三個API
isa bsp scrip shee 字符串 ng- add child fin 因為時間關系:本次僅僅對這三個API($.camelCase、$.contains、$.each)方法進行分析 第一個方法變量轉駝峰:$.camelCase(‘hello-world-
Storm入門(十一)Twitter Storm源代碼分析之CoordinatedBolt
業務 什麽 協議 ack 第一個 ng- rec 功能 這一 作者: xumingming | 可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明網址: http://xumingming.sinaapp.com/811/twitter-storm-code
SQL Server 為代碼減負之存儲過程
每次 data- online int money -a stat lib -s 存儲過程能夠用來提高數據庫的查詢效率。由於它事先被編譯過。被儲存於內存中,每次執行前。不必被從新編譯,所以效率非常高。存儲過程是一組sql增刪改查的集合,假設程序中的一個功能涉
HBase源代碼分析之HRegion上MemStore的flsuh流程(二)
初始化 back represent 代碼分析 讀數 ott pass expect 出現異常 繼上篇《HBase源代碼分析之HRegion上MemStore的flsuh流程(一)》之後。我們繼續分析下HRegion上MemStore flush的核心方
為代碼減負之<三>視圖(SQL)
技術分享 sdn 引用 實例 內容 inf 定義 嵌套 相關 在設計數據庫時為了降低數據冗余。一般都會依照三範式去設計,但有時我們在查詢時須要通過一字段獲取跟這 個字段相關聯的好幾個字段。可是他們又分布在不同的表中,這時候假設依照正常途徑走的話須要同一時候查
js代碼風格之鏈式結構
div remove show js代碼 next() 縮進 child 結構 rip <div class="box"> <ul class="menu"> <li class="level1"> &
Quagga代碼學習之BGP4
ive pat .html can 初始化 pack ble out 學習 文中理解參考:http://www.cnblogs.com/danxi/p/6344116.html 等關於Quagga的源碼學習 第一部分:入口函數 int main (int argc, ch