亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于web 和python 的代碼流程重構(gòu)的研究

        2021-11-26 16:14:53謝宇涵許世東曾啟炫陳梓平鐘健
        魅力中國(guó) 2021年34期

        謝宇涵 許世東 曾啟炫 陳梓平 鐘健

        (廣州理工學(xué)院,廣東 廣州 510540)

        一、背景

        (一)軟件企業(yè)現(xiàn)狀

        在現(xiàn)代計(jì)算機(jī)產(chǎn)業(yè)滲透到各行各業(yè)的背景下,越來越多人參與到軟件編寫到行業(yè)來,有從其他職業(yè)轉(zhuǎn)到程序員到,也有本來就是這個(gè)專業(yè)到大學(xué)生參與到這個(gè)職業(yè)中來,而培訓(xùn)機(jī)構(gòu)也是多種多樣的,在學(xué)習(xí)編程的過程中所接觸的每一個(gè)教師都有自己的編碼風(fēng)格,哪怕是同學(xué),編碼風(fēng)格都有差異,這就導(dǎo)致了參與到同一個(gè)開發(fā)工程中的成員編碼風(fēng)格非常不統(tǒng)一。

        軟件開發(fā)過程分為需求分析、系統(tǒng)設(shè)計(jì)、編碼測(cè)試等階段,其中編碼階段的主要工作就是對(duì)于代碼結(jié)構(gòu)和風(fēng)格的規(guī)范化,一般的集成開發(fā)環(huán)境(IDE),如Eclipse、IDEA 和Visual Studio,都有內(nèi)置的專有編碼規(guī)范格式插件,由供應(yīng)商提供,并且可以根據(jù)默認(rèn)規(guī)則輕松修改。主要實(shí)施方式是:本地驗(yàn)證+本地修改,即開發(fā)人員在本地格式化后提交到代碼庫(kù)。適用于中小型企業(yè)項(xiàng)目開發(fā)或使用統(tǒng)一開發(fā)套件的單個(gè)項(xiàng)目開發(fā)。

        對(duì)于軟件企業(yè)來說,由于開發(fā)活動(dòng)頻繁,代碼庫(kù)數(shù)量巨大,需要通過以下方式進(jìn)行管理:服務(wù)器端驗(yàn)證+本地修改。也就是說,在代碼評(píng)審和合并到庫(kù)中之前,使用部署在服務(wù)端的代碼規(guī)范檢查器進(jìn)行分析,發(fā)現(xiàn)問題后,及時(shí)拒絕修改提交通知。

        作為代碼訪問的第一個(gè)閾值,這種方法的缺點(diǎn)是它對(duì)開發(fā)效率的影響更大,因?yàn)榧词故呛苄〉囊?guī)范問題也會(huì)阻塞后續(xù)的過程。同時(shí),實(shí)施編碼規(guī)范作為一項(xiàng)周期性的開發(fā)活動(dòng),積累了很長(zhǎng)一段時(shí)間,由于反復(fù)提交,造成修改的時(shí)間消耗也是很客觀的。

        綜上,我們需要一種實(shí)現(xiàn)代碼結(jié)構(gòu)和流程再造的方法和工具,以便檢測(cè)和修復(fù)不符合規(guī)范的代碼,以達(dá)到提高開發(fā)效率的目的。

        (二)代碼重構(gòu)的作用

        在軟件開發(fā)中,一開始會(huì)為軟件設(shè)計(jì)好適合的架構(gòu)和選擇理想的框架,但是隨著開發(fā)的進(jìn)行,每個(gè)開發(fā)人員提交了自己的功能之后,代碼的風(fēng)格就會(huì)出現(xiàn)不統(tǒng)一,在這期間有的開發(fā)人員為了趕進(jìn)度,可能就會(huì)忽略了代碼的質(zhì)量,而這只是前期會(huì)出現(xiàn)的問題,隨著第一次展示代碼效果,并且開始和甲方交流增加功能或者修改功能開始,就會(huì)出現(xiàn)更多不可避免的功能重疊等等問題。后續(xù)增加功能的開發(fā)人員會(huì)因?yàn)榫幋a風(fēng)格等原因難以看懂代碼,這會(huì)導(dǎo)致可維護(hù)性的降低。隨著軟件版本的迭代,這樣的小問題就會(huì)不斷堆疊,直到增加新功能的成本比重新開發(fā)一個(gè)軟件的成本高時(shí),這個(gè)軟件的生命也就到頭了。

        而這個(gè)過程中,如果用到代碼重構(gòu),將大大改變這些問題,在這個(gè)基于web 和python 的代碼重構(gòu)系統(tǒng)中,會(huì)根據(jù)提前設(shè)計(jì)好的編碼風(fēng)格,命名規(guī)則等進(jìn)行代碼重構(gòu)和流程重構(gòu),使得代碼統(tǒng)一,提高可維護(hù)性和代碼可讀性,使得軟件后期的增加功能和維護(hù)成本大大降低。

        (三)什么是Web 應(yīng)用

        計(jì)算機(jī)系統(tǒng)數(shù)據(jù)與應(yīng)用程序的分布式方式,成為企業(yè)計(jì)算機(jī)應(yīng)用系統(tǒng)的計(jì)算模式,也成為企業(yè)計(jì)算模式。自從第一臺(tái)計(jì)算機(jī)誕生以來,計(jì)算機(jī)協(xié)助人類進(jìn)行社會(huì)生產(chǎn)、數(shù)據(jù)處理已經(jīng)有半個(gè)世紀(jì)了,而在這個(gè)過程中計(jì)算機(jī)的應(yīng)用系統(tǒng)模式也發(fā)生了數(shù)次迭代,分別是從單主機(jī)計(jì)算模式到分布式客戶/服務(wù)器計(jì)算模式(C/S)到瀏覽器/服務(wù)器計(jì)算模式(B/S)。

        單主機(jī)模式下,是第一臺(tái)計(jì)算機(jī)誕生開始的應(yīng)用系統(tǒng)模式,也就是單獨(dú)的主機(jī),只能提供單獨(dú)的應(yīng)用操作系統(tǒng),系統(tǒng)也只有一個(gè)控制臺(tái),例如勞資報(bào)表統(tǒng)計(jì)等等。而到后期分時(shí)多應(yīng)用系統(tǒng)的成功研究也讓單主機(jī)模式進(jìn)行了一個(gè)小升級(jí),到達(dá)了單主機(jī)一多終端模式。在這個(gè)模式中,每個(gè)用戶似乎都在獨(dú)自享有計(jì)算資源,但是實(shí)際上是由同一個(gè)主機(jī)輪流為不同用戶提供計(jì)算資源,分時(shí)輪流為每個(gè)終端服務(wù)的。這一模式在但是被成為“計(jì)算中心”,單主機(jī)模式中,由于硬件結(jié)構(gòu)的限制,我們只能將數(shù)據(jù)和應(yīng)用集中放在主機(jī)上。因此,這一模式有時(shí)候也會(huì)被稱為集中式企業(yè)計(jì)算模式。

        而到達(dá)20 世紀(jì)80 年代之后,由于個(gè)人計(jì)算機(jī)(PC)的發(fā)展和局域網(wǎng)技術(shù)的普及,讓用戶可以通過網(wǎng)絡(luò)進(jìn)行計(jì)算機(jī)資源的共享和協(xié)同完成一些數(shù)據(jù)處理工作。在這個(gè)時(shí)候,雖然個(gè)人計(jì)算機(jī)的資源有限,但是在網(wǎng)絡(luò)技術(shù)的支持下,應(yīng)用程序可以通過互聯(lián)網(wǎng)獲取到其它人在網(wǎng)絡(luò)上共享的計(jì)算機(jī)資源。于是,在這個(gè)背景下形成了分布式客戶端/服務(wù)器(C/S)的設(shè)計(jì)模式。

        在C/S 模式中,將網(wǎng)絡(luò)中的計(jì)算機(jī)分為兩大類,一類是為其他計(jì)算機(jī)提供資源和各種服務(wù)的計(jì)算機(jī),稱為服務(wù)器;二是接受服務(wù)器所提供資源的計(jì)算機(jī),成為客戶機(jī)。在這其中客戶機(jī)一般由個(gè)人PC 擔(dān)當(dāng),運(yùn)行客戶端應(yīng)用程序,而部門級(jí)企業(yè)級(jí)的計(jì)算機(jī)則向這些客戶機(jī)提供相應(yīng)的服務(wù)。在這個(gè)模式中雖然有著專業(yè)化程度高、開發(fā)手段靈活、運(yùn)行速度快等特點(diǎn),但是開發(fā)成本較為高昂、對(duì)多平臺(tái)的兼容性也不好,使用繁雜,不方便推廣,維護(hù)和升級(jí)也相對(duì)麻煩,對(duì)于新興技術(shù)的適配往往不能很及時(shí)地應(yīng)用。

        而B/S 模式是在C/S 模式之上發(fā)展而來的。而導(dǎo)致B/S 模式誕生的源計(jì)動(dòng)力,就是在C/S 模式下,不斷增大的業(yè)務(wù)規(guī)模和不斷復(fù)雜化的業(yè)務(wù)處理要求,為了解決這一問題,在傳統(tǒng)的C/S 模式的兩層結(jié)構(gòu)上,改進(jìn)為三層結(jié)構(gòu),也就是瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器。在這三層結(jié)構(gòu)中,用戶端負(fù)責(zé)處理用戶輸入的數(shù)據(jù)和請(qǐng)求,商業(yè)邏輯層負(fù)責(zé)建立數(shù)據(jù)庫(kù)連接,根據(jù)用戶的請(qǐng)求執(zhí)行相應(yīng)SQL 語(yǔ)句,并把結(jié)果返回給客戶端,數(shù)據(jù)庫(kù)層則負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)的檢索和存儲(chǔ),并將結(jié)果返回給中間層。B/S 模式系統(tǒng)以服務(wù)器為核心,程序處理和數(shù)據(jù)存儲(chǔ)大部分工作都是在服務(wù)器上完成操作的,用戶使用的時(shí)候無(wú)需安裝本地客戶端,只需要將計(jì)算機(jī)接通網(wǎng)絡(luò)就行,所以,針對(duì)B/S 模式開發(fā)的應(yīng)用也叫作Web 應(yīng)用。

        (四)Web 應(yīng)用的優(yōu)勢(shì)

        相對(duì)于C/S模式設(shè)計(jì)的應(yīng)用,B/S模式的應(yīng)用,也就是Web應(yīng)用的有點(diǎn)十分的明顯。

        首先,Web 應(yīng)用相對(duì)C/S 應(yīng)用的維護(hù)工作量大大地減少了。在C/S 應(yīng)用中,每一個(gè)客戶端都必須安裝和配置文件,假若這套軟件系統(tǒng)進(jìn)行了很小的升級(jí)改動(dòng),用戶都必須進(jìn)行卸載重新安裝,假若一個(gè)公司有50 套這樣的系統(tǒng),那這個(gè)維護(hù)工作就要進(jìn)行50 次,更不用提擁有上百套系統(tǒng)的大公司了。在這個(gè)維護(hù)過程中,若是有某一客戶端忘記進(jìn)行維護(hù),則會(huì)因?yàn)榘姹静幌嗤荒苓M(jìn)行工作。而在B/S 結(jié)構(gòu)中,客戶端不必進(jìn)行安裝和維護(hù),我們將剛剛的場(chǎng)景復(fù)現(xiàn),假若這個(gè)50 人的公司使用的是B/S 結(jié)構(gòu)的軟件,那這個(gè)軟件升級(jí)后,維護(hù)工作該如何進(jìn)行呢:維護(hù)人員只需要將服務(wù)器上的軟件版本升級(jí)到最新的版本就行,其他客戶端的使用者,只需要重新進(jìn)入該系統(tǒng),就已經(jīng)是最新的系統(tǒng)了。

        其次,B/S 相對(duì)C/S 的另一個(gè)優(yōu)勢(shì)就是能夠最大限度地降低成本。C/S 一般是兩層結(jié)構(gòu),而B/S、采用的是三層結(jié)構(gòu)。在兩層結(jié)構(gòu)中,客戶端通過將用戶請(qǐng)求發(fā)送到服務(wù)器來獲得數(shù)據(jù)結(jié)果,并且返回給用戶,而在三層結(jié)構(gòu)中,客戶端通過轉(zhuǎn)發(fā)用戶請(qǐng)求給應(yīng)用服務(wù),而應(yīng)用服務(wù)則從數(shù)據(jù)庫(kù)服務(wù)中獲得數(shù)據(jù),應(yīng)用服務(wù)的作用是將數(shù)據(jù)進(jìn)行計(jì)算并且將結(jié)果提供給客戶端,而客戶端僅僅呈現(xiàn)結(jié)果給用戶。這兩個(gè)結(jié)構(gòu)中的差別在于,兩層結(jié)構(gòu)中,客戶端需要進(jìn)行數(shù)據(jù)的運(yùn)算和處理,而三層結(jié)構(gòu)中,客戶端僅僅需要對(duì)數(shù)據(jù)進(jìn)行呈現(xiàn)。由于在三層結(jié)構(gòu)中,客戶端不參加運(yùn)算,所以對(duì)于客戶端計(jì)算機(jī)的電腦配置要求往往并不高。代價(jià)僅僅是提高一臺(tái)服務(wù)器的加過,卻可以起到降低所有使用者電腦價(jià)格的作用,起到了降低整體成本的作用。

        二、技術(shù)原理

        (一)什么是重構(gòu)

        借用百度百科的解釋,重構(gòu),就是通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更趨合理,提高軟件的擴(kuò)展性和維護(hù)性。簡(jiǎn)單來講就是在不改變軟件的功能的前提下,改變軟件系統(tǒng)的實(shí)現(xiàn)方式。

        軟件的重構(gòu)重要性要從軟件的生命周期說起。軟件屬于智力產(chǎn)品是抽象存在的,不存在物理上的損耗,那么導(dǎo)致軟件無(wú)法繼續(xù)使用的原因就只有一個(gè),那就是用戶需求的變更。軟件的產(chǎn)生往往伴隨著各種需求,當(dāng)需求無(wú)法被滿足的時(shí)候,這個(gè)軟件也就無(wú)法使用了,或者說必須做出改變了,而軟件的改變和迭代都是需要成本的,當(dāng)?shù)杀敬笥谥谱鞒杀緯r(shí),就是這個(gè)軟件生命走到盡頭的時(shí)候了,所以軟件發(fā)展到一定的階段的時(shí)候就需要通過重構(gòu)來使其具備較強(qiáng)的適應(yīng)能力。

        (二)重構(gòu)的原則

        1.關(guān)于變量命名重構(gòu),會(huì)根據(jù)前后代碼判斷該命名類型,若是類名則會(huì)運(yùn)用約定的大寫字母開頭,然后根據(jù)判斷是否為多個(gè)單詞,若是則會(huì)將每個(gè)單詞的首字母大寫;若該單詞為方法名,則運(yùn)用第一個(gè)單詞的字母小寫,后面單詞首字母大寫的原則重新命名;若為常量名,則全部字母都將修改為大寫字母。

        2.方法重構(gòu)

        (1)提取子函數(shù)

        該方法的目的是為了保證函數(shù)的簡(jiǎn)潔性,使得主干清晰明了

        例如:

        private 起床上課{

        起床,穿衣服,疊被子,洗臉,刷牙,吃早點(diǎn),出門,步行,查看課表,到教學(xué)樓,進(jìn)教室,簽到

        }

        這樣的主干會(huì)顯得格外繁瑣,于是我們將進(jìn)行提取子函數(shù)封裝

        private 起床吃飯{

        起床,穿衣服,疊被子,洗臉,刷牙,吃早點(diǎn)

        }

        private 出門{

        出門,步行

        }

        private 上課{

        查看課表,到教學(xué)樓,進(jìn)教室,簽到

        }

        最后就成了這樣:

        private 起床上課{

        起床吃飯,出門,上課

        }

        (2)上移函數(shù)到父類

        當(dāng)在代碼中發(fā)現(xiàn)有多個(gè)子類都用到類某一段相同的動(dòng)作時(shí),我們會(huì)把這一段相同的動(dòng)作代碼封裝到父類當(dāng)中去。

        (3)下移函數(shù)到子類

        同樣的,當(dāng)我們發(fā)現(xiàn)有大部分的子類是不需要用到父類的某一個(gè)動(dòng)作時(shí),我們會(huì)將該動(dòng)作的代碼提取賦予一個(gè)新的類,減少耦合性。例如建立一個(gè)開車的主類,其中有啟動(dòng)停車,加速,開門,關(guān)門的方法,但是考慮到電動(dòng)車自行車是沒有門的,那么我們就可以將有開門關(guān)門的提取為一個(gè)有門的車的類,也就是將父類下移到子類。

        (4)封裝固定邏輯

        當(dāng)一套流程執(zhí)行當(dāng)順序是固定的時(shí)候,我們也會(huì)把這套邏輯封裝成一個(gè)方法,也就是將多個(gè)流程封裝成一個(gè)流程。

        (5)使用泛型去除重復(fù)邏輯

        在處理多類對(duì)象的時(shí)候,處理方法都很一致,而且處理流程與類型無(wú)關(guān),為了簡(jiǎn)化處理流程,我們可以使用泛型來減少函數(shù)的數(shù)量。

        (6)使用對(duì)象避免過多的參數(shù)

        當(dāng)傳入?yún)?shù)過多時(shí),我們會(huì)將這些參數(shù)封裝為一個(gè)對(duì)象屬性,然后直接傳遞對(duì)象。

        例如:

        Private showRecommendation(title,content,pic,writer,sail){

        ...

        }

        在這里就可以把參數(shù)封裝成如下

        Class ShareData{

        Title,content,pic,writer,sail

        }

        轉(zhuǎn)移函數(shù)

        當(dāng)一個(gè)類中當(dāng)方法,太以來另外一類中的大部分屬性時(shí),我們會(huì)考慮把這個(gè)方法放到另一個(gè)類中。

        三、具體實(shí)現(xiàn)流程

        根據(jù)上述原理,開展了系統(tǒng)研究。系統(tǒng)搭建在web 平臺(tái),其實(shí)現(xiàn)流程為:首先從本地上傳文件,然后系統(tǒng)會(huì)根據(jù)事先設(shè)定好的規(guī)則,開始對(duì)文件進(jìn)行上述的重構(gòu)(提取子類、上移到父類、下移到子類、封裝固定邏輯等等),對(duì)文件對(duì)操作原理是利用正則表達(dá)式判斷代碼所屬類型,再根據(jù)所屬類型進(jìn)行相應(yīng)的邏輯判斷,然后重新構(gòu)造代碼文件,最后再由用戶下載。

        日韩成人高清不卡av| 久久久精品久久日韩一区综合| 亚洲 国产 哟| av男人操美女一区二区三区| 制服无码在线第一页| 国产一区二区美女主播| 图片小说视频一区二区| 国产一区二区精品久久| 国产一级在线现免费观看| 日韩av一区二区无卡| 日韩精品人成在线播放| 成人激情五月天| 日韩成人无码v清免费| 亚洲精品熟女av影院| 亚洲无av在线中文字幕| 国产精品久久婷婷六月丁香| 91热爆在线精品| 男女激情视频网站在线 | 看黄a大片日本真人视频直播| 日本免费人成视频播放| 一区二区三区精彩视频在线观看| 亚洲麻豆视频免费观看| 久久久无码人妻精品一区| 免费无码中文字幕A级毛片| 亚洲无人区一码二码国产内射| 婷婷伊人久久大香线蕉av| 亚洲爱婷婷色婷婷五月| 亚洲无码毛片免费视频在线观看| 东京热加勒比久久精品| 精品国产拍国产天天人| 最新亚洲人AV日韩一区二区 | 国产亚洲精品精品综合伦理| 中国丰满人妻videoshd| 国产无套露脸| 久久精品久久精品中文字幕| 国产亚洲精品美女久久久m| 亚洲丁香五月激情综合| 亚洲av粉色一区二区三区| 国产青青草在线观看视频| 中文无码一区二区不卡αv| 国产欧美日韩专区毛茸茸|