精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語(yǔ)言的面向?qū)ο笫街貥?gòu)

開發(fā) 后端
從Martin Fowler最早提出重構(gòu)的概念開始,到現(xiàn)在已經(jīng)有很長(zhǎng)時(shí)間了,重構(gòu)已經(jīng)是深入忍心了。與其說它是一種方法,不如說是一種思想、一種習(xí)慣。本文主要介紹C語(yǔ)言的面向?qū)ο笫街貥?gòu),希望對(duì)你有幫助,一起來看。

重構(gòu)(Refactoring)就是在不改變軟件現(xiàn)有功能的基礎(chǔ)上,通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更趨合理,提高軟件的擴(kuò)展性和維護(hù)性。

在越來越多的方便實(shí)用的語(yǔ)言曾不出窮的今天,c語(yǔ)言作為編程語(yǔ)言的常青樹,在用戶數(shù)方面仍然占據(jù)著老大的地位。當(dāng)然,這與C語(yǔ)言的使用環(huán)境有很大關(guān)系,諸多的嵌入式和底層代碼仍然離不開這個(gè)經(jīng)典的語(yǔ)言。

最近工作有了個(gè)空,如何使自己寫的C代碼容易閱讀,便于維護(hù),成為近期我思考的主要問題。

于是,我找到了Martin Fowler寫的《重構(gòu)》。這本書從Martin的經(jīng)驗(yàn)出發(fā),結(jié)合代碼中出現(xiàn)的各種“臭味”,提出了重構(gòu)的思路、指導(dǎo)思想和重構(gòu)步驟,從而使得代碼不斷的得到進(jìn)化,從而使得代碼越來越優(yōu)美,越來越適應(yīng)于變化,越來越便于維護(hù)。這本書雖然是針對(duì)Java語(yǔ)言寫的,但是大量的重構(gòu)思路都是語(yǔ)言無關(guān)的,我們?cè)谌魏握Z(yǔ)言中都可能遇到Martin大師描述的問題,并能夠利用Martin的解決思路來改正問題?,F(xiàn)在,就把我看這本書的一些想法、思路記錄下來,也算是一個(gè)讀書筆記吧。

一、函數(shù)的改進(jìn)

過程化語(yǔ)言直接面對(duì)的是要解決問題的系統(tǒng)責(zé)任,也就是系統(tǒng)的功能域。要實(shí)現(xiàn)什么樣的功能,采用什么樣的流程來解決,這些內(nèi)容的實(shí)現(xiàn)都是由函數(shù)來完成的。因此,函數(shù)的重新構(gòu)建成為C語(yǔ)言重構(gòu)的最重要的一環(huán)。

1、重新命名函數(shù)

代碼首先是為人寫的,其次才是為機(jī)器寫的。函數(shù)的名稱應(yīng)該準(zhǔn)確表達(dá)出它的用途。當(dāng)我們維護(hù)代碼時(shí),通過名稱猜出這個(gè)函數(shù)的用途可以節(jié)省大量的時(shí)間。想想自己的一些經(jīng)歷,通過費(fèi)力的閱讀代碼才能明白,哦,它原來是干這個(gè)的!如果有個(gè)好的名稱該多好,看看名字,就能大概得到這個(gè)函數(shù)的用途,有了這個(gè)大概情況,再去閱讀代碼,是那么的輕松、愉快。

有些人會(huì)想,我寫的是C程序,不是Java語(yǔ)言。C語(yǔ)言要求的是簡(jiǎn)潔的名稱,而不是Java那樣,恨不能名字比實(shí)現(xiàn)的代碼還長(zhǎng)。我覺得,簡(jiǎn)潔不代表含糊不清。我們都有默許的規(guī)范,read就是代表讀,取一個(gè)名字叫rfile(),我就會(huì)猜它是讀文件;要是叫sfile(),誰(shuí)知道它是什么?

2、提煉函數(shù)

過長(zhǎng)的函數(shù)當(dāng)中,多半會(huì)有很多繁雜的過程包含在里面。當(dāng)我們需要不斷的上下翻頁(yè)來了解一個(gè)函數(shù)的功能時(shí),很快就會(huì)不可耐煩,并且喪失信心。因此要想讓函數(shù)變得容易讓人看懂,就得盡量讓函數(shù)簡(jiǎn)練。這就得把函數(shù)功能細(xì)化,不斷的提煉函數(shù)。每個(gè)函數(shù)都有其基本的功能,使得函數(shù)復(fù)用的機(jī)會(huì)很大,復(fù)雜函數(shù)就是這些小函數(shù)的組合,這樣復(fù)雜函數(shù)讀起來就像一系列注釋,通俗易懂。

3、提煉判斷條件

有時(shí)候在判斷條件當(dāng)中,會(huì)遇到一個(gè)很長(zhǎng)的表達(dá)式表示一個(gè)條件分支,這個(gè)表達(dá)式有時(shí)不光包含了“與”、“或”、“非”,還有查詢函數(shù),大于小于等等。要看懂這么一個(gè)表達(dá)式,首先要做的是查清楚括號(hào)的對(duì)應(yīng)關(guān)系,然后查清楚各種運(yùn)算符的運(yùn)算優(yōu)先級(jí),最后在去考慮這個(gè)表達(dá)式代表的意思。

為了擺脫這種“與非”困境,我們要做的是把這個(gè)判斷條件提煉出來,或者賦值給一個(gè)臨時(shí)變量,或者徹底提煉成一個(gè)函數(shù),變量或者函數(shù)的名字明確代表了判斷條件的意思,例如isEmpty等等。這樣在判斷語(yǔ)句中,就可以一眼看出來這個(gè)分支是怎么一回事了。如果真要考慮效率問題,可以把提煉出來的函數(shù)作為inline函數(shù)??傊?,要寫出給人類看的代碼,這個(gè)工作是很值得使用的。

4、簡(jiǎn)化函數(shù)參數(shù)

使用C語(yǔ)言編程,缺少?gòu)?qiáng)大的自動(dòng)補(bǔ)齊工具(尤其是喜歡vi的人,雖然下面有補(bǔ)齊的插件,但是很少使用,也不大適應(yīng)),如果函數(shù)的參數(shù)太多,根本記不住應(yīng)該加的參數(shù),編寫代碼時(shí)要不斷的去翻看,降低了效率,尤其在多個(gè)人合作編程時(shí),這種情況會(huì)尤為明顯。但是這在c語(yǔ)言中有時(shí)候是很難避免的事情,總不能為了數(shù)值傳遞設(shè)置大量的全局變量吧。

我的辦法是設(shè)置結(jié)構(gòu)體,把意思相近的參數(shù)合并成一個(gè)整體,然后為這個(gè)結(jié)構(gòu)體設(shè)置賦值函數(shù)。這樣在一定程度上簡(jiǎn)化了主要函數(shù)的參數(shù)個(gè)數(shù),便于記憶。

二、改進(jìn)代碼總體結(jié)構(gòu)

1、解除全局變量的噩夢(mèng)

在c語(yǔ)言編程中不可避免的要使用全局變量。傳遞數(shù)值、進(jìn)行條件判斷等等時(shí),全局變量給我們帶來了極大的方便,但同時(shí)也帶來了噩夢(mèng)。有時(shí),全局變量根本不是自己預(yù)想的數(shù)值,而是被哪個(gè)莫名的代碼悄悄修改了,要在那么多代碼中查找這個(gè)作祟者簡(jiǎn)直痛苦不堪。

好的做法是把全局變量設(shè)置成static,只能在本文件中看到,然后編寫訪問/設(shè)置函數(shù)來控制變量的訪問入口。查找函數(shù)總比查找一個(gè)小小的賦值語(yǔ)句簡(jiǎn)單的多,起碼還有斷點(diǎn)可用。退一步講,如果使用多線程或者多進(jìn)程沒有斷點(diǎn)可用,那么好的做法是使用宏定義編寫訪問控制點(diǎn),在宏定義中可以加入打印,把這個(gè)語(yǔ)句在的文件和函數(shù)都打印出來,我就不信,找不到它,哈哈哈。

2、避免函數(shù)傳遞中的隱形bug

c語(yǔ)言的參數(shù)傳遞其實(shí)就是傳遞的一塊內(nèi)存,在函數(shù)執(zhí)行時(shí),在這塊內(nèi)存中,根據(jù)參數(shù)類型取得一塊塊相應(yīng)大小的數(shù)據(jù)。這樣就產(chǎn)生了隱形的bug。比方說,在沒有記住函數(shù)參數(shù)類型的情況下,傳遞了一個(gè)結(jié)構(gòu)體給它,結(jié)果該函數(shù)只是幾個(gè)int類型的參數(shù),這時(shí)編譯器也不會(huì)報(bào)錯(cuò)給你,更恐怖的是代碼照樣可以運(yùn)行,如果沒有測(cè)試充分,沒準(zhǔn)代碼還能正確運(yùn)行。

這樣一個(gè)隱形的bug會(huì)把你搞的很慘。要把它干掉,最簡(jiǎn)單的辦法就是加入函數(shù)聲明。靈活便利的c編譯器,在函數(shù)調(diào)用上,沒有強(qiáng)制要求加入函數(shù)聲明,而函數(shù)聲明尤其在調(diào)用另外文件的函數(shù)時(shí),很重要。如果調(diào)用與聲明的類型不一致,編譯器會(huì)報(bào)錯(cuò)。這樣這個(gè)隱形bug就不會(huì)在騷擾你了。所以,不要圖省事,為了以后的和諧生活,聲明你要調(diào)用的每一個(gè)函數(shù)吧。

3、調(diào)整函數(shù)位置

在多文件程序當(dāng)中,函數(shù)的位置很重要,要根據(jù)每個(gè)文件完成的功能調(diào)整函數(shù)的位置,不能亂放。亂放的現(xiàn)象在那些臨時(shí)加的被調(diào)用函數(shù)身上表現(xiàn)的非常突出(我經(jīng)常就干這事)。亂放導(dǎo)致的后果就是,后面維護(hù)代碼時(shí),根據(jù)文件名去找相關(guān)的函數(shù),根本沒有,結(jié)果一搜發(fā)現(xiàn)它在一個(gè)內(nèi)容完全不相干的文件中。為了不打亂思路,臨時(shí)放就放吧,但是這個(gè)功能完了,一定要把這個(gè)函數(shù)重構(gòu)到它應(yīng)該在位置上。

對(duì)于重構(gòu)來講,想到的暫時(shí)就是這些,其實(shí)有一些是要開始編寫時(shí)就要注意的。這也應(yīng)了這么一句話:重構(gòu)本來就應(yīng)該是融入到日常的代碼編寫中。最高境界就是手中無重構(gòu),心中也無重構(gòu)。

【編輯推薦】

  1. 數(shù)據(jù)庫(kù)在C++程序中使用方法
  2. 影響C++/C程序的幾大要素
  3. VC++獲得當(dāng)前系統(tǒng)時(shí)間的幾種方案
  4. 淺談C/C++中的static和extern關(guān)鍵字
  5. C++連接mysql數(shù)據(jù)庫(kù)的兩種方法
責(zé)任編輯:于鐵 來源: 百度空間
相關(guān)推薦

2010-08-24 16:00:43

C語(yǔ)言

2022-10-21 09:01:41

StudentC++類型

2010-01-22 10:26:40

C++語(yǔ)言

2010-01-13 14:05:55

C++語(yǔ)言

2020-04-15 11:07:31

C語(yǔ)言對(duì)象思想

2010-03-01 17:47:53

Python語(yǔ)言

2024-04-02 07:32:58

Go語(yǔ)言接口

2009-07-14 16:51:50

Jython中的對(duì)象

2022-10-12 08:38:51

C語(yǔ)言classC++

2022-08-27 10:53:15

C語(yǔ)言Linux內(nèi)核

2010-02-02 13:22:06

Python面向?qū)ο?/a>

2020-07-24 09:40:04

C語(yǔ)言OOP代碼

2024-01-08 07:02:48

數(shù)據(jù)設(shè)計(jì)模式

2010-01-20 09:48:44

面向?qū)ο?/a>

2021-05-28 05:34:06

Golang語(yǔ)言編程

2010-03-01 17:40:29

Python面向?qū)ο笳Z(yǔ)

2023-01-10 09:38:09

面向對(duì)象系統(tǒng)

2009-09-27 15:29:00

Scala講座面向?qū)ο?/a>Scala

2011-06-17 17:27:29

Objective-CCocoa蘋果

2009-07-08 16:10:24

Scala簡(jiǎn)介面向?qū)ο?/a>函數(shù)式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91精品国产91久久久久游泳池 | 久久精品99国产精| 国产一区精品二区| 亚洲一区二区综合| 蜜桃导航-精品导航| 中文字幕乱码视频| 欧美一区网站| 亚洲视频日韩精品| 亚洲AV无码久久精品国产一区| 99riav视频在线观看| 欧美国产一区在线| 国产美女99p| 黄色大全在线观看| 欧美精品自拍| 亚洲欧美视频在线| 免费人成视频在线播放| 欧美成人黑人| 一区二区视频在线看| 蜜桃视频在线观看91| 国产毛片毛片毛片毛片毛片| 国产精品日韩精品欧美精品| 久久精品91久久香蕉加勒比| 屁屁影院国产第一页| 国产精品亚洲综合在线观看| 亚洲成人午夜影院| 欧美性视频在线播放| 裸体xxxx视频在线| 高清av一区二区| 国产日韩欧美在线看| 久草国产在线观看| 网友自拍一区| 精品久久久久久久久久久久久久久久久 | 国产欧美一区二区三区精品观看| 538prom精品视频线放| 日本韩国欧美在线观看| 91在线中文| 国产精品伦一区| 青青成人在线| 日韩精品一二| 99国产精品久久久久久久久久久| 亚洲专区中文字幕| 国产孕妇孕交大片孕| 日韩 欧美一区二区三区| 欧美综合国产精品久久丁香| 日韩精品――中文字幕| 欧美视频在线观看| 欧美丰满老妇厨房牲生活| 99自拍视频在线| 久久在线视频| 色偷偷88888欧美精品久久久| 久久亚洲AV无码专区成人国产| 午夜精品福利影院| 亚洲精品第一页| 岛国精品资源网站| 欧美日韩一区二区三区四区不卡| 精品久久久久香蕉网| www男人天堂| 久久视频在线观看| 日韩av影片在线观看| 天堂久久久久久| 久久精品亚洲成在人线av网址| 日韩视频在线永久播放| 国产日韩欧美久久| 激情久久99| 在线播放视频一区| 色噜噜狠狠一区二区三区狼国成人| 台湾佬中文娱乐久久久| 精品久久久久久久久久国产| 亚洲熟妇无码一区二区三区导航| 国内高清免费在线视频| 一区二区三区四区亚洲| 成人在线观看www| 八戒八戒神马在线电影| 精品福利av| 日韩中文字幕网| a资源在线观看| 波多野结衣在线观看一区二区| 亚洲色图色老头| 欧美特级黄色录像| 精品国产91久久久久久浪潮蜜月| 亚洲美女av在线播放| 欧美 日本 国产| 亚洲精品亚洲人成在线| 亚洲欧美日韩天堂| 美女爆乳18禁www久久久久久| 综合激情网...| 欧美va在线播放| 在线成人免费av| 日韩成人一级| 亚洲视频欧洲视频| 久久嫩草捆绑紧缚| 欧美日韩综合| 97视频在线观看视频免费视频 | 熟妇人妻va精品中文字幕| 亚洲黄色免费av| 在线观看国产一区二区| 日本不卡一区二区在线观看| 999色成人| 精品欧美乱码久久久久久1区2区| 中文字幕人妻一区| 欧美极品在线观看| 日韩视频免费在线| 精品处破女学生| 国产精品久久久久久模特| 国产99视频在线观看| 日韩色图在线观看| 日韩成人精品在线| 91精品在线观看视频| 99久久精品国产成人一区二区 | 亚洲国产精品成人综合久久久| 香蕉久久夜色精品国产更新时间 | 性做久久久久久久久| 免费黄色日本网站| 美女一区网站| 91精品综合久久久久久| 亚洲婷婷在线观看| 日韩在线观看一区| 91精品国产沙发| 亚洲自拍第二页| 成人妖精视频yjsp地址| 午夜精品一区二区三区四区| 黄色的网站在线观看| 午夜国产不卡在线观看视频| 欧美日韩亚洲自拍| 老汉色老汉首页av亚洲| 国产一区二区三区在线观看网站| 中国美女黄色一级片| 一区二区三区国产在线| 成人免费网站在线观看| 天堂√在线中文官网在线| 国产精品污网站| cao在线观看| 青青青国产精品| 日韩电影大片中文字幕| 波多野结衣不卡视频| 免费在线一区观看| 精品视频高清无人区区二区三区| 免费在线你懂的| 亚洲国产一区二区三区| 911福利视频| 琪琪久久久久日韩精品| 欧美另类交人妖| 波多野结衣爱爱| 97久久超碰国产精品电影| www.99riav| 国产一区高清| 亚洲欧美中文字幕在线一区| 日本中文字幕免费| 国产成人午夜精品影院观看视频| 亚洲一区三区| 在线看片福利| 国产一区二区三区视频| 黄色在线视频网址| av男人天堂一区| 日本大胆人体视频| 自拍偷拍亚洲| 日韩在线国产精品| 中文亚洲av片在线观看| 国产三级一区二区| 国产精品无码av无码| 亚洲免费专区| 97视频免费看| 国产午夜精品一区理论片| 狠狠色狠狠色综合日日小说| 少妇被狂c下部羞羞漫画| 午夜亚洲福利| av在线亚洲男人的天堂| 福利在线视频网站| 欧美一级日韩免费不卡| 二区三区四区视频| 韩国av一区二区三区在线观看| 日韩av一区二区三区美女毛片| 国产精品国精产品一二| 欧美成人综合网站| 国产真人真事毛片| www.亚洲色图.com| 久久精品国产精品亚洲色婷婷| 欧美电影在线观看免费| 91国产视频在线播放| 欧美孕妇孕交xxⅹ孕妇交| 欧美视频专区一二在线观看| 成年人网站免费看| 久久久国产精品一区二区中文| 国产伦精品一区二区三区视频黑人| h片在线观看视频免费免费| 亚洲黄色www| 黄色av一级片| 国产精品美女久久久久久| 午夜国产福利在线观看| 一区二区三区网站| 国产中文一区二区| 日韩三级影视| 中文精品99久久国产香蕉| 一二三区在线播放| 亚洲精品视频在线观看网站| 亚洲精品乱码久久久久久蜜桃欧美| 狠色狠色综合久久| 国产精品成人一区二区三区| 99在线视频影院| 亚洲人成在线一二| 国产精品爽爽久久| 亚洲一区在线观看网站| 性欧美13一14内谢| 精品一区二区三区免费播放| 亚洲国产一二三精品无码| 欧美成人专区| 国产中文日韩欧美| mm视频在线视频| 国产一区二区激情| 精品久久久免费视频| 欧美日韩国产区| 免费黄色在线视频| 成人永久aaa| 久久久久久香蕉| 国产精品久久久久久| 国产精品美女黄网| 成人午夜毛片| 97福利一区二区| porn视频在线观看| 亚洲精品动漫久久久久| 一区二区三区日| 亚洲成人av一区| 欧美xxxx精品| 成人动漫视频在线| 成人综合久久网| 久久精品人人| 亚洲色婷婷久久精品av蜜桃| 国产一区二区三区四区大秀| 147欧美人体大胆444| 视频在线日韩| 69久久夜色精品国产69| 欧美日韩欧美| 国产小视频国产精品| 色wwwwww| 日韩丝袜美女视频| 91精品国产乱码久久久| 欧美视频13p| 久久久全国免费视频| 国产色产综合色产在线视频 | www.天天色| 国产精品电影院| 免费的av网站| 国产成人精品免费一区二区| 成人一级片网站| 国模吧视频一区| 自拍偷拍99| 成人毛片在线| 日本欧洲国产一区二区| 色天下一区二区三区| 国产精品露出视频| 亚洲乱码一区| 国产精品永久在线| 怡红院成人在线| **欧美日韩vr在线| 岛国av在线网站| 欧美夫妻性生活xx| 欧美精品videossex少妇| 日韩在线观看成人| 黄色av网站在线看| 国产亚洲美女精品久久久| 男人的天堂在线| 亚洲九九九在线观看| 亚洲av成人精品一区二区三区在线播放 | 狠狠网亚洲精品| 亚洲综合av在线播放| 免费成人美女在线观看.| 午夜dv内射一区二区| 国产精品久久久久久久久久妞妞| 成人免费观看视频在线观看| 一区二区国产精品| 日本网站免费在线观看| 国产欧美午夜| 国产特级淫片高清视频| 亚洲一区二区三区四区五区午夜 | 99国产精品免费视频观看| 日日夜夜精品网站| 欧美第一精品| 热久久最新地址| 欧美午夜一区二区福利视频| 成人短视频在线观看免费| 欧美涩涩网站| 大地资源网在线观看免费官网| 国产精品第十页| 无码播放一区二区三区| 久久av一区| 日韩中文字幕a| 国产九色精品成人porny| 国产免费无码一区二区| 91在线视频观看| 国产美女免费网站| 欧美激情中文字幕| 久久久久无码国产精品 | 日韩在线视频免费播放| 日本高清成人免费播放| 亚洲天堂网在线视频| 欧美一区二区视频网站| 成人小说亚洲一区二区三区| 精品久久久久一区二区国产| 熟妇人妻一区二区三区四区| 亚洲欧美日韩另类| a毛片在线播放| 国内精品久久影院| 精品3atv在线视频| 成人羞羞国产免费| 图片婷婷一区| 亚洲欧美国产不卡| 国产一级久久| www.国产视频.com| 99久久久精品免费观看国产蜜| 西西444www无码大胆| 亚洲色图丝袜美腿| 中文字幕第四页| 欧美日本一区二区在线观看| 天堂资源中文在线| 日韩视频免费观看| 亚洲最大成人| 99久久久精品免费观看国产| 九九久久成人| 免费日韩在线观看| 免费高清不卡av| 亚洲天堂久久新| 亚洲精品免费看| 天天天天天天天干| 亚洲精品720p| 精品国产99久久久久久| 51午夜精品视频| 国产精品日韩精品在线播放 | 免费不卡在线观看av| 中文一区一区三区高中清不卡免费| 成人在线观看视频网站| 亚洲+小说+欧美+激情+另类| 日本丰满大乳奶| 日本在线播放一区二区三区| 欧亚乱熟女一区二区在线| 国产欧美综合在线观看第十页| 精品国产免费观看| 欧美一区二区成人| bbbbbbbbbbb在线视频| 97av在线播放| 日韩免费一级| 日韩最新中文字幕| 国产午夜精品一区二区三区欧美| 911亚洲精选| 亚洲欧美日韩在线| 中文字幕乱码在线观看| 亚洲精品中文字幕av| 阿v视频在线| 国产 高清 精品 在线 a| 日韩欧美一区免费| www午夜视频| 久久久久久免费| 日韩一区二区视频在线| 亚洲第一页自拍| gogo久久| 高清免费日韩| 欧美1区2区视频| 色婷婷狠狠18禁久久| 亚洲另类春色国产| 99国产精品久久久久99打野战| 日韩在线观看你懂的| 成人免费在线观看视频| 亚洲三级一区| 日本美女视频一区二区| 精品无人区无码乱码毛片国产 | xxxx.国产| 亚洲激情视频在线观看| 6699嫩草久久久精品影院| 国产99午夜精品一区二区三区| 欧美+日本+国产+在线a∨观看| av影片在线播放| 亚洲国产人成综合网站| 欧美视频久久久| 色综合久久精品亚洲国产| 久久久久97| 久久美女福利视频| 久久久久国产精品麻豆| 亚洲色成人www永久网站| 这里只有精品丝袜| 国产精品成人国产| 免费cad大片在线观看| 成人sese在线| 久久午夜免费视频| 一区二区三区精品99久久| 国产成人福利夜色影视| 日韩精品一线二线三线| 韩国成人福利片在线播放| 久久免费精彩视频| 日韩成人小视频| 国产私拍福利精品视频二区| 亚洲午夜在线观看| 国产精品99久| 岛国av中文字幕| www.欧美免费| 88久久精品| 色婷婷综合久久久久中文字幕| 国产精品视频看| 亚洲AV无码精品国产| 国产精品va在线播放| 66视频精品| 亚洲午夜久久久久久久久|