亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 網頁設計 > 正文

復制和粘帖是封裝的大敵

2024-08-30 08:34:05
字體:
來源:轉載
供稿:網友
在侃侃而談OO,侃侃而談設計模式,侃侃而談面向對象的諸多原則之前,我們首先應該掌握一點:封裝。掌握好封裝的原則和技巧之后,就算使用的不是OO語言,也能構造出框架優美的程序。將這些原則用在程序之外,也能得到出奇的效果?!对O計規則-模塊化的力量》(http://www.douban.com/subject/1737636/)將封裝與模塊化放在神壇的高位,它們配得上這個位置。這是我們解決復雜性問題的最基本的方法(沒有之一)。

程序是一種復雜性系統。“道生一,一生二,二生三,三生(四,四生…)萬物”。若將復雜性的根源當作“道”的化,那么這個“一”必然是封裝。不同的程序語言以及由這些程序語言衍生的方法,則處于“二”的地位,比如 OO 設計范式、FP(函數編程)范式、分層的原則等等。OO設計準則,什么里氏替換原則,什么組合優先于繼承,這些處于“三”的地位,具體的設計模式什么之類的處于“三”之后“四”的地位。

本人愚笨,至今尚記不清那些原則,如里氏替換原則是什么,那些這個模式那個模式怎么實現。設計模式中,俺只對策略模式感興趣,對其它模式興趣索然。實質上這些模式也好、準則也好,只是給我們提供了一種方法、一種工具去更好的實現封裝。

復制和粘帖是封裝的大敵,是丑陋代碼的最大的壞味道。復制一份,就相當于增加了至少一個可變點,復制兩份就相當于增加了至少兩個可變點。為什么說“ 至少”呢,因為模塊之間存在關聯關系,導致一個地方的變化會導致其它的多個地方也必須隨之變化。如果假定S為系統本身,M為對系統本身的一個測量,C為系統S中模塊的平均復制份數(C>1),則這個M與C的關系應該是一個指數的關系: M正比于C的N次方(N>1)。

指數關系已經很可怕了,更可怕的是,當系統中的模塊出現變化時,如果該模塊在系統中有多個副本,我們可能偷懶,只改變了其中的一個副本,而不是全部副本都進行修改,這樣就導致模塊的分裂,由一個模塊分裂成幾個類似而又不同的模塊,大大的增加系統的復雜度,最終導致系統的腐爛。直覺上,一個設計很爛的系統,它的復雜度大致是模塊數量的階乘關系甚至是冪指關系,這是比指數關系更恐怖的關系。

所以,復制和粘帖是一種非常邪惡的編碼方式。在編碼時,需要千方百計的去想辦法減少復制和粘帖。這是在編碼時就應該注意的問題,而不是放在重構階段去做的事情。至于使用什么方法,使用什么手段,使用什么模式則是細節問題。

堅持不復制和粘帖,堅持下來,收益會非常大,寫出來的代碼質量高、含金量高。看見別人的系統,能馬上分辨出這個系統的優點是什么,缺點是什么。什么設計模式也好,接口的正交性也好,設計原則也好,也許你從沒刻意的去學過,卻最終發現殊途同歸,冥冥之中與國外大牛有一種心意相通的感覺。會自發的去組合、去改良這些大牛們的思想和方法,甚至去創造新方法新手段。直接由一入手,一生二,二生三生四,而非教條的、頂禮膜拜的去學這個三,學這個四?;蛟S那個時候,你已經忘記什么是對象了。

之所以發這些牢騷,是因為昨天至今天,正在重構一個模塊。這個模塊M1的核心部件是一個包裝自RTF的layout規則編輯器。設計這個核心部件的哥們以RichTextBox為中心設計了一個控件A,然后將這個控件的部分規則邏輯抽出來放在類B和類C的靜態方法之中,更神奇的是這個類B是在另一個模塊M2之中,類C倒是在模塊M1之中。這個控件在M1中被三個地方給用到:D、E、F,這D、E、F每個地方都要為這個空間A注冊七八個事件,然后在事件的回調函數中調用模塊M2中的類B的靜態方法及模塊M1中的類C的靜態方法去實現一些邏輯?,F在呢,我要寫一個控件G,這個G也要用到控件A,在這種情況下,我必需為G注冊一堆A的事件及回調函數,然后在回調函數中弄一堆邏輯,至少得200行代碼。為了寫這些回調函數,我必須得搞清這個A控件及類B,類 C的內部運行機制。也就是說,為了吃豬肉必須得親自去殺豬。當然,也可以從D、E或F 中Copy代碼過來改吧改吧來節省時間。

問題嚴重的地方在于,這個控件A本身存在邏輯錯誤,存在功能不完善的地方,需要對它動手術。因為到處復制,牽一發而動全身,給A動手術必須也要給 B、C、D、E、F五個類動手術。在給A動手術時,為了編譯通過,我將B、C、D、E、F中與A相關的代碼全給注釋掉了,前后注釋了1500行代碼左右。實質上這1500行代碼真正有價值的代碼也就在200行左右,其它的代碼全是復制、粘帖,然后改改變量名完成的。

為什么會出現這樣的問題呢?因為復制和粘帖。復制和粘帖省事啊,Copy過去改幾個詞就能用了,不用花費心思的去想封裝。而實際情況是,要引用那個控件A,得寫200-300行代碼,多引用幾處,就得寫1000多行代碼,復制和粘帖的話倒不費事,但如果發現這個A存在錯誤,或者需要擴展,在改A的同時,同時也要動這1000多行代碼,這1000多行代碼中可能會牽扯到更多的代碼,最終導致必須修改更多的代碼,這便是代碼的腐爛。

其實這個A是很好封裝的,它不需要其它的類對它輸入任何輸入數據,其它的類只需要從A控件中獲得一個最終的規則結果,一個List。封裝的好的話,調用A,獲得結果,兩三句代碼就可以實現。

之所以不封裝是因為習慣了復制和粘帖,或者懶于去封裝,或者頭腦中根本沒封裝這根弦。

很多新程序員或者不新的程序員,尤其是Web開發程序員老抱怨工作的技術含量低,老是想學更多的東西。實質上,他們所作的工作是非常有技術含量的東西,就看怎么看待。

如果只將自己的工作看作簡單的復制、粘帖、抄襲、改代碼的話,自然技術含量低了。如果將自己的工作看作如何消除復制和粘帖、如何提高質量、進度,消除工作中的不必要事情,消除各種浪費,那么這個工作的技術含量是極其高的。不要膜拜大師,當你這么做的時候,你做的正是大師的工作。不要膜拜新技術,當你這么做的時候,你的工作可能正是新新一代技術的萌芽。一點一滴、一色一香,全在心中。青青翠竹、盡是法身,郁郁黃花、無非般若。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线能观看| 色小说视频一区| 中文字幕一区二区精品| 日韩高清av一区二区三区| 97精品久久久中文字幕免费| 日本久久精品视频| 欧美在线精品免播放器视频| 欧美午夜无遮挡| 欧美性69xxxx肥| 77777少妇光屁股久久一区| 美女视频久久黄| 久久人人爽国产| 欧美日韩美女视频| 91天堂在线观看| 成人免费直播live| 国产97在线观看| 欧美极品欧美精品欧美视频| 成人免费高清完整版在线观看| 26uuu日韩精品一区二区| 日本午夜精品理论片a级appf发布| 欧美日韩免费一区| 91超碰中文字幕久久精品| 亚洲天堂影视av| 欧美日韩中国免费专区在线看| 亚洲欧洲第一视频| www日韩中文字幕在线看| 欧美激情在线有限公司| 91在线观看免费观看| 久久久国产精品x99av| 色偷偷亚洲男人天堂| 欧美在线观看网址综合| 国产亚洲精品久久| 国产精品久久久久久久一区探花| 亚洲福利视频免费观看| 亚洲一区中文字幕在线观看| 亚洲一区二区三区四区在线播放| 亚洲精品欧美极品| 欧美一区二三区| 久久久久久国产精品三级玉女聊斋| 91视频国产精品| 久青草国产97香蕉在线视频| 亚洲视频777| 欧美第一黄色网| 欧美激情精品久久久久久大尺度| 黑人巨大精品欧美一区二区三区| 一区二区欧美日韩视频| 91社影院在线观看| 成人激情综合网| 亚洲在线一区二区| 日韩中文字幕网站| 91精品国产高清久久久久久| 精品欧美国产一区二区三区| 欧美中文字幕在线视频| 欧美成人一区在线| 日韩人在线观看| 亚洲精品综合久久中文字幕| 国产欧美日韩精品专区| 国产日韩欧美夫妻视频在线观看| 欧美高清电影在线看| 久热精品视频在线免费观看| 色www亚洲国产张柏芝| 久久久国产成人精品| 国产91在线高潮白浆在线观看| 91视频免费网站| 国产精品日韩在线一区| 成人深夜直播免费观看| 成人97在线观看视频| 欧美亚洲成人精品| 亚洲精品国产综合久久| 欧美一区亚洲一区| 久久天堂电影网| 久久精品99久久香蕉国产色戒| 亚洲第一区中文99精品| 久久久免费精品| 亚洲综合中文字幕68页| 精品国产一区二区三区在线观看| 红桃视频成人在线观看| 久热精品视频在线免费观看| www.日韩免费| 日本成人激情视频| 欧美人成在线视频| 久久久国产精品视频| 日韩av网站电影| 国产精品444| 精品国产一区二区三区久久狼黑人| 欧美亚洲在线观看| 久久频这里精品99香蕉| 欧美日韩免费观看中文| 欧美最近摘花xxxx摘花| 亚洲一级一级97网| 欧美在线一区二区视频| 国内精品伊人久久| 久久资源免费视频| 日韩av中文字幕在线播放| 精品国产999| 成人国产精品色哟哟| 精品视频—区二区三区免费| 国产精品自拍偷拍| 青青草成人在线| 亚洲国产高潮在线观看| 国产精品黄页免费高清在线观看| 久久久人成影片一区二区三区| 精品福利在线观看| 91免费看片在线| 一本色道久久88亚洲综合88| 亚洲精品日韩丝袜精品| 成人免费网站在线| 欧美激情喷水视频| 精品人伦一区二区三区蜜桃免费| 国产精品永久免费在线| 亚洲综合一区二区不卡| 午夜精品久久17c| 91在线高清免费观看| 欧美性猛交99久久久久99按摩| 亚洲成在人线av| 欧美资源在线观看| 黄色成人在线免费| 亚洲美女视频网站| 亚洲一区第一页| 久久久久久久亚洲精品| 久久亚洲综合国产精品99麻豆精品福利| 高清欧美性猛交xxxx| 日韩va亚洲va欧洲va国产| 久久国产精品久久久| 久久69精品久久久久久久电影好| 欧美理论在线观看| 国产精品久久久久久久久男| 性欧美长视频免费观看不卡| 国产精品久久久久久av| 亚洲影影院av| 97久久久久久| 精品高清一区二区三区| 91久久久久久国产精品| 日韩av在线网站| 久久亚洲成人精品| 日本精品性网站在线观看| 欧美日韩在线观看视频小说| 久久精品视频va| 久久99精品国产99久久6尤物| 亚洲国产小视频在线观看| 国产亚洲欧洲黄色| 久青草国产97香蕉在线视频| 国产日韩欧美91| 琪琪亚洲精品午夜在线| 北条麻妃在线一区二区| 久久久久久久久久久久久久久久久久av| 亚洲一级一级97网| 日韩成人在线视频网站| 色妞在线综合亚洲欧美| 尤物九九久久国产精品的分类| 九九热视频这里只有精品| 精品国产一区久久久| 欧美激情一区二区久久久| 精品国产一区二区三区在线观看| 久久精品视频99| 久久精品久久久久久国产 免费| 91精品视频在线| 一本久久综合亚洲鲁鲁| 欧美电影免费在线观看| 亚洲国产精品va在线观看黑人| 国产成人97精品免费看片| 日韩av在线网址| 欧美性生交大片免网| 黄色精品在线看|