成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

怎樣寫好一個類

GeekGhc / 403人閱讀

摘要:高內聚低耦合是寫好類的核心思想,抽象單一性能幫助我們寫出低耦合的代碼,那高內聚呢,內聚性會直接表現(xiàn)在我們的代碼維護上,當我們寫出內聚性很強的代碼時,與之關聯(lián)的維護工作也會變得簡單。

「代碼大全」一書談到了抽象數(shù)據(jù)模型(ADT)的概念,以PHP的角度來看,平常最常見的類就是抽象數(shù)據(jù)模型的表現(xiàn)形式,很多人對面向對象編程還處在懵懵懂懂的階段,經常什么方法都塞在一個類中,舉個例子,我們有個字體的類,代碼如下:


這個類中定義了公有的屬性"style",獲取Style的方法和另外一些子方法,本來創(chuàng)建這個類是為了圍繞「字體」作文章的,但在實現(xiàn)過程中,臨時需求的增加使得這個類中多了Div和把字體插入到Div的方法,這是很常見的情況,而這只是個開始,與類無關的代碼會越來越多,就像地上本無垃圾,有人丟了第一塊垃圾,人們就會跟著丟垃圾一樣,最后的結果就是這個類變得不易維護,可讀性減低,導致這樣的原因就是與類無關的代碼破壞了這個類抽象的一致性。

另外這個類的style屬性也有問題,它的類型是public,意味著外部可以隨時調用改寫,然后外部代碼就有了

$font = new Font;
$font->style = "font-size: 13px";

或者:

$font = new Font;
$font->style = "font-weight: both";

等等等等,日積月累,某一天,產品走到你面前,微微一笑地對你說:陳工啊,麻煩給每個字體都加上個默認的14px字體大小樣式;

你一臉懵逼帶著生無可戀的表情望著產品(他或者她或者它):……好,請你給我半天或更長的時間來改;

產品:#¥%……&*(&……%#¥%……&*;

你一邊查找替換著代碼,一邊暗罵自己為什么不在Font類中定義個方法來調用style屬性,一邊還總結著經驗告訴自己下次絕不這么傻逼了。程序員總是在一次次的慘痛經驗中進步著,但如果有那么一本好書籍或者好導師,真的會少走很多彎路。(再給代碼大全打個廣告)

第一段我們講到抽象的概念,抽象是什么呢?面向對象中有個原則既單一原則,我理解的抽象跟這個單一原則有著千絲萬縷的關系;單一原則分為類的單一和方法的單一,比如說,人有吃喝拉撒四種行為,他們即有類的單一原則(人),也有方法的單一原則(吃、喝、拉、撒),這里的「人」就是我們抽象出來的東西,如果你往里面加個飛行的行為,就破壞了類的單一原則和抽象性,來驗證下,加入飛行行為之后人就有了「吃、喝、拉、撒、飛行」五個行為,這不是人應該是鳥了。

「高內聚、低耦合」是寫好類的核心思想,抽象(單一性)能幫助我們寫出低耦合的代碼,那高內聚呢,內聚性會直接表現(xiàn)在我們的代碼維護上,當我們寫出內聚性很強的代碼時,與之關聯(lián)的維護工作也會變得簡單。上面的栗子講到這個程序員把style屬性設為public并且在外部代碼中直接修改導致了后面的問題產生;對這些易改變的元素我們應該通過子程序(方法)修改的方式來增強它們的維護性,把所有的變化都控制在類中來增強類的內聚性。

一切理論都是虛的,實踐才是讓自己進步的最佳方法,Talk is cheap. Show me the code。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/30311.html

相關文章

  • 怎樣寫好業(yè)務代碼——那些年領域建模教會我的東西

    摘要:但是從客觀上而言,業(yè)務代碼本身由于包含了業(yè)務領域的知識,復雜可以說是先天的屬性。原來業(yè)務代碼也可以這么簡潔而優(yōu)雅。因為此內部業(yè)務框架做的事情很多,篇幅有限,這里僅對最具借鑒意義的領域建模思考作介紹。其實也是很典型的一種業(yè)務代碼編寫方式。 本文主要作為筆者閱讀Eric Evans的《Domain-Driven Design領域驅動設計》一書,同時拜讀了我司大神針對業(yè)務代碼封裝的一套業(yè)務框...

    RyanQ 評論0 收藏0
  • 關于程序員寫好 ppt 的幾點總結 - 前端張大胖

    摘要:背景程序員日常工作中最多的應該是接收需求編碼實現(xiàn)需求。內容決定形式,形式依賴于內容,并隨內容的發(fā)展而發(fā)展。我也只做到了圖形搭配階段,配圖就比較麻煩,如果要是能確定關鍵詞也可以,百度搜索即可。具體的網站百度找下就可以了,就不發(fā)地址了。 背景 程序員日常工作中最多的應該是接收需求、編碼實現(xiàn)需求。但也有些時候需要做一些非代碼的文字工作。 比如做述職報告、工作總結等,這些一般的都是通過 ppt...

    Cobub 評論0 收藏0
  • 關于程序員寫好 ppt 的幾點總結 - 前端張大胖

    摘要:背景程序員日常工作中最多的應該是接收需求編碼實現(xiàn)需求。內容決定形式,形式依賴于內容,并隨內容的發(fā)展而發(fā)展。我也只做到了圖形搭配階段,配圖就比較麻煩,如果要是能確定關鍵詞也可以,百度搜索即可。具體的網站百度找下就可以了,就不發(fā)地址了。 背景 程序員日常工作中最多的應該是接收需求、編碼實現(xiàn)需求。但也有些時候需要做一些非代碼的文字工作。 比如做述職報告、工作總結等,這些一般的都是通過 ppt...

    shiyang6017 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<