cleanCode之對(duì)象和數(shù)據(jù)結(jié)構(gòu)

1.對(duì)象和數(shù)據(jù)結(jié)構(gòu)的區(qū)別

(1)數(shù)據(jù)結(jié)構(gòu)中的對(duì)象只是數(shù)據(jù),面向?qū)ο笾械膶?duì)象包括了數(shù)據(jù)和行為。

(2)數(shù)據(jù)結(jié)構(gòu)暴露其數(shù)據(jù),沒有提供有意義的函數(shù);對(duì)象把數(shù)據(jù)隱藏于抽象之后,暴露操作數(shù)據(jù)的函數(shù)。

(3)數(shù)據(jù)結(jié)構(gòu)難以添加新的的數(shù)據(jù)類型,因?yàn)樾枰膭?dòng)所有函數(shù),面向?qū)ο蟮拇a則難以添加新的函數(shù),因?yàn)樾枰薷乃械念悺?/p>

在任何一個(gè)復(fù)雜的系統(tǒng)都會(huì)同時(shí)存在數(shù)據(jù)結(jié)構(gòu)和對(duì)象,我們需要判斷的是要添加的是新的數(shù)據(jù)類型還是新的行為函數(shù)。

2.迪米特法則:模塊不應(yīng)了解它所操作對(duì)象的內(nèi)部情形。

類C的方法f只應(yīng)調(diào)用以下對(duì)象的方法:

(1)C;

(2)由f創(chuàng)建的對(duì)象;

(3)作為參數(shù)傳遞給f的對(duì)象;

(4)由C的實(shí)體變量持有的對(duì)象;

方法不應(yīng)調(diào)用由任何函數(shù)返回的對(duì)象的方法,換句話說,只和朋友說話,不和陌生人說話。以下就是違反該法則的一段代碼:

final String?outputDir=ctxt.getOptions().getScratchDir().getAbsolutePath();

當(dāng)然,迪米特法則的前提是對(duì)象,如果是數(shù)據(jù)結(jié)構(gòu),沒有什么行為,則他們自然會(huì)暴露其內(nèi)部數(shù)據(jù)結(jié)構(gòu),迪米特法則也失效了。

如果數(shù)據(jù)結(jié)構(gòu)只簡(jiǎn)單的擁有公共變量而沒有函數(shù),對(duì)象擁有私有變量和公共函數(shù),這個(gè)問題就不會(huì)混淆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 命名規(guī)范 命名要有意義 名副其實(shí)。通過名稱我們知道有關(guān)變量的大多數(shù)信息(是什么,做什么,怎么用)。 無歧義。 簡(jiǎn)潔...
    SimplyY閱讀 2,305評(píng)論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,662評(píng)論 1 32
  • 找到百分之一可以讓自己站起來的價(jià)值 紀(jì)錄片+老人+疾病,是三個(gè)票房毒藥,凡電影設(shè)計(jì)到其中一項(xiàng)必會(huì)遭冷門,更別...
    小丫小丫閱讀 376評(píng)論 0 0
  • 因?yàn)樘幵谏倌昱涯娴哪挲g,對(duì)媽媽的了解總是累積得很慢很慢。 我始終很心虛,我不習(xí)慣和媽媽對(duì)上視線。因?yàn)閮?nèi)心里總有著對(duì)...
    慶也閱讀 1,484評(píng)論 2 6
  • 今天,是姥姥的生日,我們 給姥姥買了一個(gè)大蛋糕。 姥姥家來了許多客人,其中有一個(gè)小妹妹,她吃飯的時(shí)候,總是吃完一個(gè)...
    李春穎母親閱讀 536評(píng)論 0 0

友情鏈接更多精彩內(nèi)容