• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    代碼壞味檢測及重構(gòu)的現(xiàn)狀分析

    2014-04-29 00:00:00姜德迅馬培軍蘇小紅王甜甜
    智能計算機與應(yīng)用 2014年3期

    收稿日期:2014-03-08

    基金項目:國家自然科學基金(61073052)。

    作者簡介:姜德迅(1983-),男, 黑龍江哈爾濱人,博士研究生,主要研究方向:代碼壞味檢測、壞味重構(gòu);

    馬培軍(1963-),男,山東濰坊人.博士,教授,博士生導(dǎo)師,主要研究方向: 軟件工程、信息融合、圖像處理與識別等;

    蘇小紅(1966-),女,黑龍江哈爾濱人.博士,教授,博士生導(dǎo)師,主要研究方向: 程序理解、克隆代碼檢測與重構(gòu)、軟件缺陷和代碼壞味檢測等。

    摘要:軟件良好的設(shè)計質(zhì)量能使維護和重用變得更加容易和方便,而如果代碼中存在各種各樣的壞味,那么必將導(dǎo)致軟件整體設(shè)計質(zhì)量降低。首先對壞味的定義、描述和分類進行分析,之后列舉現(xiàn)有的壞味檢測以及重構(gòu)研究,對其進行分析和比較?,F(xiàn)狀分析之后指出了現(xiàn)存的不足之處,為新的研究指明了方向。

    關(guān)鍵詞:研究現(xiàn)狀; 代碼壞味; 壞味檢測; 壞味重構(gòu)

    中圖分類號:TP311文獻標識碼:A文章編號:2095-2163(2014)03-0023-05

    Related Work Analysis of Code Bad Smell Detection and Refactoring

    JIANG Dexun, MA Peijun, SU Xiaohong, WANF Tiantian

    (School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)

    Abstract:Good quality of software would make the maintenance and re-use easier and more convenient. When there are too many bad smells, the total quality would be reduced. In this paper, bad smell is defined, described and classified, and then the related work about bad smells detection and refactoring is listed, analyzed and contrasted. The limitation and shortage of the related work are presented to point out the way of further researches.

    Key words:Related Work; Code Bad Smell; Bad Smell Detection; Bad Smell Refactoring

    0引言

    壞味(bad smell)\\[1\\]就是指代碼中出現(xiàn)的一種“跡象”,導(dǎo)致代碼難于理解和修改。壞味并不是代碼中已經(jīng)出現(xiàn)的錯誤或者缺陷,但是可能會導(dǎo)致錯誤或者缺陷的發(fā)生。所以說,壞味實際上是代碼中潛在問題的警示信號。因此,當出現(xiàn)代碼壞味時,就應(yīng)當對其進行重構(gòu)。重構(gòu)是指對軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整,在不改變軟件可觀察行為的前提下,借助重構(gòu)提高其可理解性,降低其修改成本。

    壞味破壞了程序的設(shè)計質(zhì)量,特別是面向?qū)ο蟪绦蛑谢趯ο缶幊痰脑O(shè)計質(zhì)量。壞味會影響程序的可理解性。并且,壞味導(dǎo)致程序出現(xiàn)錯誤的可能性增大。因此,程序中出現(xiàn)壞味,將降低程序的整體質(zhì)量,非常不利于程序的開發(fā)、修改、維護及擴展。壞味的檢測分為人工檢測和自動檢測兩種。人工檢測代碼的速度較慢,且主觀性較高,檢測準確性也較低。但是由于壞味的特征不夠明確和統(tǒng)一,自動檢測仍具有較大難度。

    找到壞味并不是最終目的,本文研究的目的是為了對壞味進行修改并使之消除,從而達到提高代碼質(zhì)量的目的。這種消除壞味的方法即稱為重構(gòu)。Martin Fowler在其著作\\[1\\]中是這樣定義重構(gòu)的:重構(gòu)是對軟件的內(nèi)部結(jié)構(gòu)所做的一種改變,這種改變在可觀察行為不變的條件下使軟件更容易理解,而且修改更廉價。這種重構(gòu)指的是代碼級別的修改行為。

    1壞味的定義和描述

    Fowler將代碼壞味進行分類,論述了程序中可能存在的22種代碼壞味,并逐類對其各自在代碼中的表現(xiàn)進行描述,也給出了改善這種壞味現(xiàn)象的大體思路。在此基礎(chǔ)上,Kerievsky\\[2\\]提出了5種新的代碼壞味加以補充。Abebe\\[3\\]進一步給出了5種基于詞法的代碼壞味,并根據(jù)程序代碼文本上出現(xiàn)的不良問題進行了新壞味的定義和描述。

    將壞味進行分類,必將有助于對壞味的理解和使用。在提出壞味之后,Wake\\[4\\]等人對于壞味有一種簡單的分類,即將壞味分為“類內(nèi)壞味”和“類外壞味”兩種。這種分類方式過于簡單,并且分類中還包括很多不屬于壞味的情況。Mantyla\\[5\\]對文獻\\[1\\]中提出的22種代碼壞味進行分類,將壞味分為:過度膨脹(the bloaters)、面向?qū)ο鬄E用(the object-orientation abusers)、妨礙修改(the change preventers)、可有可無情況(the dispensables)、封裝問題(encapsulators)以及其他情況等。對壞味進行分類的意義在于,使得壞味更容易理解,壞味之間的關(guān)系更加明確,使對壞味的研究能夠更加深入。

    2壞味檢測

    本文提到的壞味檢測,是指壞味的自動檢測。壞味的自動檢測即是使用程序?qū)Υa中可能存在的壞味進行檢測的過程??梢园凑諜z測方法的不同將相關(guān)研究分為以下幾類。

    2.1基于文本的壞味檢測

    基于文本的壞味檢測主要是將源代碼經(jīng)過詞法分析,并將得到的token串作為待檢源,再通過文本比對和分析的方法進行檢測的。該類研究能夠檢測的壞味通常也是與源代碼文本相關(guān)的壞味,最常見的通過文本進行檢測的壞味是重復(fù)代碼\\[1\\]。其它可以通過文本進行檢測的壞味還有switch驚悚現(xiàn)身、平行繼承體系、過多的注釋等。

    Johnson\\[6\\]利用查找完全相同子串的方法處理冗余代碼。Baker\\[7\\]提出了檢測代碼段中出現(xiàn)完全相同或近似相同現(xiàn)象的方法。這里,近似相同的含義是:若將一段代碼中的一組變量名和常量用另外一段代碼中的相應(yīng)一組變量名和常量替換,則兩段代碼完全相同。

    Adar\\[8\\]設(shè)計了一種代碼克隆檢測工具GUESS,并與Kim一起將其改進為SoftGUESS工具。該工具由一個克隆庫和一系列小型應(yīng)用程序組成,能夠在系統(tǒng)依賴、設(shè)計信息和包結(jié)構(gòu)等的文本層面上對代碼克隆現(xiàn)象進行分析。同時,該工具可以對克隆代碼現(xiàn)象進行多版本的可視化顯示。

    張鵬\\[9\\]研究兩個代碼是否具有相似性的課題,從相似代碼的類型、從屬關(guān)系等特點,建立其屬性庫,并根據(jù)相似評價標準來進行檢測。使用最長公共子序列算法來實現(xiàn)程序代碼之間的相似性比對,測量精度可達94%以上。

    劉鑫\\[10\\]使用數(shù)據(jù)挖掘技術(shù),實現(xiàn)了一個基于token串的重復(fù)代碼檢測模型。將重復(fù)代碼檢測問題轉(zhuǎn)化成為一個序列模式,使用改進的 CloSpan算法查找支持度至少為2的頻繁子序列,對應(yīng)于程序中的重復(fù)代碼段,通過篩選得到重復(fù)代碼對結(jié)果。該方法的時間復(fù)雜度較低,適于分析檢測大規(guī)模程序,并且可以檢測出經(jīng)過修改的重復(fù)代碼現(xiàn)象。

    使用簡單文本作比較來進行重構(gòu)定位,檢測速度快,誤檢率低,但是沒有考慮代碼的語義信息,所能檢測的種類過少,漏檢率高。

    第3期姜德迅,等:代碼壞味檢測及重構(gòu)的現(xiàn)狀分析智能計算機與應(yīng)用第4卷 2.2基于度量的壞味檢測

    基于度量的壞味檢測,是指從源代碼中提取或統(tǒng)計一些可以代表程序特征的數(shù)值,可能需要計算和分析,得到一系列度量值,并在預(yù)設(shè)閾值的作用下,進行比較和分析,最終得到結(jié)果,判斷代碼中是否存在相應(yīng)的壞味。

    Simon等人\\[11-12\\]主要使用基于內(nèi)聚性的距離來量化代碼中可能的缺陷,根據(jù)度量結(jié)果分析代碼結(jié)構(gòu),從而識別到有缺陷的代碼。其缺點在于識別代碼缺陷的能力會因為度量的規(guī)則而存在差異,對于多態(tài)、異常和多線程的情況也沒有加以考慮。

    Tahvildari和Kontogiannis\\[13\\]完成了一個設(shè)計流再工程框架,并定義了復(fù)雜性度量、耦合性度量和內(nèi)聚性度量三類,通過利用這些度量,來完成對程序設(shè)計性質(zhì)方面的檢測。缺點在于分析的結(jié)果需要程序員的自行判斷,而且也無法進行自動定位。

    Tsantalis和Chatzigeorgiou\\[14\\]使用實體距離作為度量,對程序運行中需要重構(gòu)的代碼壞味進行判斷和定位,并自動進行了移動方法的重構(gòu)操作。本文在Simon的距離理論的基礎(chǔ)上做了一系列的改進,增加了類和實體之間、類和類之間的距離概念,使得能夠?qū)χ貥?gòu)進行直接定位。但是這種方法計算量較大。

    Reddy和Rao\\[15-16\\]通過面向依賴的復(fù)雜性度量值來檢測壞味。首先利用類的調(diào)用關(guān)系來定義類之間的耦合度,通過計算一個類與其他類之間的平均耦合度來判斷該類是否可能存在發(fā)散式變化壞味。這種方法思路明確,計算代價小,但是具有一定的局限性。

    Sant’ Anna\\[17\\]提取了代碼中一些基于關(guān)系的度量數(shù)據(jù),并用于壞味檢測。通過將設(shè)計關(guān)系和代碼之間映射的抽象化,來表達出程序可能存在的設(shè)計問題。這種壞味檢測只能發(fā)現(xiàn)整個系統(tǒng)中壞味的存在,但無法做到明確定位。

    通過提取度量值進行壞味檢測的方法,其提取的特征同源程序有較高的符合度,并且具有較快的檢測速度。但是對于度量的選取,是通過檢測者的人為規(guī)定來完成的;得到度量值后有時需要與預(yù)設(shè)定的閾值進行比較判斷才能得到檢測結(jié)果。以上兩點都會降低壞味檢測的客觀性,從而影響到檢測結(jié)果的準確性。

    2.3基于聚類的壞味檢測

    聚類是指將物理或抽象對象的集合分成由類似的對象組成的多個類的過程。使用聚類分析的方法來檢測壞味,主要是針對由于內(nèi)聚性和耦合性等相關(guān)問題引發(fā)的一類壞味。

    Lung等人\\[18\\]將聚類技術(shù)應(yīng)用到程序的函數(shù)設(shè)計中,將內(nèi)聚度低的函數(shù)分解成若干個新的函數(shù),新函數(shù)的內(nèi)聚度提高。同時也能夠為函數(shù)重組提供更多的選擇。文獻中沒有明確說明如何獲取合適的實體屬性,算法普適性較差?;诖?,Lung等人在文獻\\[19\\]中對實體屬性獲取方法做了改進和描述,使得聚類方法能夠應(yīng)用于更加普遍的源代碼上。

    Alkhalid等人\\[20\\]提出一種自適應(yīng)K近鄰算法,通過計算數(shù)據(jù)和控制屬性的權(quán)重,來處理由于低內(nèi)聚問題造成的相關(guān)代碼壞味。該方法沒有給出具體的重構(gòu)方案。

    上述研究采用聚類分析進行壞味檢測,都需要人為設(shè)定閾值來對最終的聚類結(jié)果進行判斷和分析,才能得到檢測結(jié)果。閾值源于經(jīng)驗數(shù)據(jù),具有較大的主觀性,因此會導(dǎo)致壞味檢測的準確率較低。

    Srinivas \\[21\\]采用K近鄰聚類方法來進行面向?qū)ο蟠a中包層級的重構(gòu)。文章認為在包的層級,包內(nèi)的類具有高內(nèi)聚性,而包間耦合度低。通過判斷各類中是否存在其他類的實例,做為內(nèi)聚算法的數(shù)據(jù)。

    Ratzinger和Sigmund等人\\[22\\]提出了一種根據(jù)程序開發(fā)歷史記錄來預(yù)測可能存在的代碼壞味的方法。從程序的版本控制系統(tǒng)中獲取程序自身的規(guī)模、編寫者變動信息、修改次數(shù)、修改頻率、修改習慣以及其他相關(guān)信息,作為進行聚類分析的數(shù)據(jù)來源。根據(jù)這些數(shù)據(jù),采用決策樹、邏輯樹、重復(fù)增量修剪以及最近鄰等聚類算法,獲得待重構(gòu)位置的可能預(yù)測結(jié)果。作者對聚類算法并沒有進行實現(xiàn),也無從對比各方法的優(yōu)劣性。

    Grosser等人\\[23\\]提出一種預(yù)測系統(tǒng)質(zhì)量性質(zhì)的方法。在保存有大量系統(tǒng)質(zhì)量信息的數(shù)據(jù)庫中,指定系統(tǒng)的質(zhì)量因素(健壯性),是從其他與指定系統(tǒng)具有最大相關(guān)度的系統(tǒng)中獲得。而獲取最大相關(guān)度的其他系統(tǒng),是通過K近鄰聚類計算來完成的。

    采用聚類分析的方法進行相關(guān)代碼壞味的檢測,具有精確度高、檢測結(jié)果準確的特點。聚類分析進行壞味檢測,也要使用閾值(或其他預(yù)設(shè)值),但是閾值對檢測結(jié)果的影響比基于度量的壞味檢測方法要小,特別是使用一些特定聚類方法(如動態(tài)確定K值的K近鄰聚類分析),閾值已經(jīng)基本不會影響到檢測結(jié)果。但是基于聚類的檢測方法,需要通過計算來分析程序內(nèi)部的關(guān)系,得到待處理的組群,之后再進行相關(guān)聚類分析,整體檢測方法的時間復(fù)雜度較高,檢測也相對耗時。

    2.4其他壞味檢測方法

    有一些研究使用不變式進行壞味檢測。不變式是指在程序中固定不變出現(xiàn)的某種特征?;贐anerjee和Kim\\[24\\]對面向?qū)ο髷?shù)據(jù)庫模式的研究,Willan F.Opdyke\\[25\\]定義了7個基于C++的不變式,按照不同級別對程序進行概括。包括唯一超類、不同類名、不同的實體名、被繼承的成員變量不能被重定義、成員變量重定義兼容、類型安全的賦值、語義等價的引用和操作等。

    有一些研究使用程序的抽象語法樹中間表示結(jié)構(gòu)來完成代碼壞味的檢測以及重構(gòu)工作。該類方法的特點是將源程序轉(zhuǎn)化為抽象語法樹,在這種樹結(jié)構(gòu)上尋找壞味。這些研究認為,在源代碼上直接進行壞味檢測,對程序元素之間的很多關(guān)系缺乏直觀和明確的表示,需要構(gòu)建其他中間表示如程序流圖或依賴圖等,這會導(dǎo)致程序分析和計算的費用較高,檢測過程緩慢。而通過對源程序解析生成抽象語法樹,之后對其進行分析,可避免這一問題。

    李軍超等人\\[26\\]進行了基于抽象語法樹的代碼味道識別工具的分析與設(shè)計,將源代碼轉(zhuǎn)換成抽象語法樹,對其進行分析和度量判斷,可使方法過長、依戀情節(jié)等10種代碼壞味得以識別。該研究對于壞味的判斷是通過度量值和預(yù)定值完成,識別標準由人為設(shè)定,識別結(jié)果仍然受到太多的主觀因素影響。

    Kontogiannis等\\[27\\]提出一種由5種度量技術(shù)組成的方法來檢測任意兩個代碼片段的相似性,其基本思想是將待檢源代碼轉(zhuǎn)化成抽象語法樹,得到5維向量,計算其歐氏距離,從而判斷是否存在重復(fù)代碼。在某些情況下,該方法會產(chǎn)生錯誤匹配。

    劉建賓\\[28\\]定義了一種叫做過程藍圖的圖形化程序過程規(guī)格說明方法,可對程序源代碼進行描述,具有豐富的語義,能夠支持對程序的壞味進行檢測。過程藍圖的本質(zhì)實際上就是一種抽象語法樹。在此基礎(chǔ)上,李建忠等人\\[29\\]利用過程藍圖進行重復(fù)代碼的自動檢測研究工作,通過分析抽象實現(xiàn)結(jié)構(gòu)圖的節(jié)點類型和帶數(shù)據(jù)流節(jié)點的表達式,直接獲得程序源碼中所代表的過程控制結(jié)構(gòu)和語句表達式的靜態(tài)信息。

    3壞味重構(gòu)的研究現(xiàn)狀

    在已有的研究中,大部分研究在給出重構(gòu)方案或執(zhí)行重構(gòu)之后,并未對重構(gòu)的效果進行評估。研究默認,在執(zhí)行重構(gòu)后,重構(gòu)所要針對的問題(即重構(gòu)動機)已經(jīng)獲得了解決,重構(gòu)操作已經(jīng)完成了預(yù)定任務(wù),代碼已經(jīng)一切正常。這些研究認為,在重構(gòu)定位過程中已經(jīng)準確無遺漏地找到了所有的相關(guān)壞味(即需要使用重構(gòu)操作實施改進的位置),并且在執(zhí)行重構(gòu)操作時,也已經(jīng)考慮到重構(gòu)操作的安全性,因此并不需要進行重構(gòu)的評估。

    有一些研究者對重構(gòu)的行為進行了分析和評估,以此來對“重構(gòu)確實保證了程序可觀察行為不變”進行證明,此外對于重構(gòu)的效果提供直觀準確的評價,方便對同類研究工作進行對比和改進。這些研究對于重構(gòu)的評估主要分為兩個方面:一是重構(gòu)操作是否去除或改善了代碼中的不良現(xiàn)象,提高了程序的可維護性、易讀性、可理解性等,優(yōu)化了程序質(zhì)量;二是重構(gòu)操作是否會引起程序“可觀察行為”的改變。

    Kataoka和Imai等人\\[30\\]提出一種性能評估方法,來衡量程序重構(gòu)的可維護性增強效果。該方法基于耦合度量來評估重構(gòu)的影響。通過比較重構(gòu)前后的耦合性,能夠評估出可維護性增強的程度。但是方法只使用了程序的耦合性來代表可維護程度,度量獲取片面,對一些不改變(或改變很少)耦合度的重構(gòu)行為,無法評估其重構(gòu)效果。

    Tahvildari和Kontogiannis\\[31\\]提出了一系列關(guān)于復(fù)雜性、耦合性和內(nèi)聚性的度量,并用于程序轉(zhuǎn)換框架的驅(qū)動條件中。同時,在程序轉(zhuǎn)換后用這些度量值和判斷準則來評估程序重構(gòu)后的效果。只是文中方法得到的評估結(jié)果不夠全面,并不具備最佳說服力。

    Murphy-Hill和Black\\[32\\]闡述了現(xiàn)有重構(gòu)工具在解決“過長方法”方面的問題,定義了三個工具并將其組合來進行重構(gòu)。結(jié)果顯示在速度、準確性和用戶滿意度三個方面都有明顯改進。但是該研究主要是針對用戶使用重構(gòu)工具的界面友好型和簡易型進行設(shè)計和改進,對于重構(gòu)的原理和方法卻未做改變。

    Tsantalis和Chatzigeorgiou\\[33\\]根據(jù)程序?qū)嶓w間的距離關(guān)系來確定進行“移動方法”重構(gòu)的時機,通過此重構(gòu)操作來解決依戀情結(jié)代碼壞味。在進行重構(gòu)操作之后,本著面向?qū)ο蟪绦蛟谠O(shè)計層面上高內(nèi)聚、低耦合的思想,定義并計算類和整個系統(tǒng)的平均距離,并以此判斷重構(gòu)效果的好壞。但是這種評價準則只是一個粗略的方法,并未考慮到細節(jié)情況,而且也沒有考慮到重構(gòu)操作對系統(tǒng)質(zhì)量其他方面的影響。

    Bansiya和Davis\\[34\\]建立了一個面向繼承的評估模型 QMOOD(Quality Model for Object-Oriented Design),在靈活性、可重用性、可理解性等方面對軟件的設(shè)計性能進行評估。Keeffe和Cinneide\\[35-37\\]使用多種搜索算法來隨機執(zhí)行類繼承方面的重構(gòu)細粒度操作,而且使用QMOOD模型來評估各操作,從而達到提高程序質(zhì)量的作用。但是該模型只能針對面向?qū)ο罄^承方面的表象進行評估,沒有考慮其他方面,并且評估標準人為決定,其正確性尚需進一步的驗證。

    4現(xiàn)有壞味檢測及重構(gòu)研究的不足

    4.1壞味定義和描述研究的不足

    (1)在代碼壞味的概念被提出之后,其對提高程序質(zhì)量特別是重用效果方面的作用越來越大。隨著對程序代碼研究的逐級深入,越來越多的壞味被發(fā)現(xiàn),原本籠統(tǒng)模糊的壞味也相應(yīng)實現(xiàn)了細化。但是在程序質(zhì)量方面,在許多程序中尚有多種壞味現(xiàn)象沒有得到有效的定義和解決。例如程序中頻繁存在類間功能過度相關(guān),繼承關(guān)系混亂的現(xiàn)象。

    (2)在定義新壞味的研究[2-3,38]中,研究者只是提出了代碼壞味的定義、描述以及危害,但是對如何檢測到這種壞味,特別是使用程序進行自動檢測的方法,以及對檢測結(jié)果的效用和準確性方面,尚且缺少足夠的分析結(jié)果。

    4.2壞味檢測研究的不足

    (1)許多研究將壞味檢測工作規(guī)定為人工完成。所有與提高程序質(zhì)量相關(guān)的研究工作,從去除、改進不良的代碼現(xiàn)象角度來說,基本上包括兩個方面:不良現(xiàn)象的查找,以及不良現(xiàn)象的處理。前者是指代碼壞味的檢測,后者是指針對代碼壞味的重構(gòu)工作?,F(xiàn)有研究的大部分工作都偏重于后一方面,即默認壞味已經(jīng)檢測到,并針對壞味進行重構(gòu)\\[39\\]。這些研究認為,壞味是一個相對籠統(tǒng)和模糊的概念,對于壞味的認知因人而異,因此很難通過程序來自動完成檢測\\[40\\]。對于代碼壞味,目前少有研究使用了量化方法,通過程序自動完成針對源代碼的壞味檢測工作,即是目前壞味自動檢測研究的一個不足之處。但是,實際上通過對各類代碼進行分析,除去幾種少數(shù)特殊形式的壞味,目前提出的大多數(shù)壞味,都是能夠通過數(shù)值化方法,表達壞味現(xiàn)象的存在。

    (2)壞味特征提取困難。在已有的壞味自動檢測研究\\[41-43\\]中,從程序中提取的壞味特征,不能完全體現(xiàn)代碼的真實情況,導(dǎo)致壞味檢測結(jié)果并不能完全真實地反映出程序中存在的代碼不良現(xiàn)象造成的設(shè)計質(zhì)量問題。

    (3)壞味判斷缺少客觀量化的依據(jù)。在現(xiàn)有的壞味自動檢測研究中,基本上是使用預(yù)設(shè)定的閾值來進行“是否是壞味”的判斷。一些與代碼規(guī)模相關(guān)的代碼壞味,例如過長方法、過大的類、過長參數(shù)列,對其不論是采用自動檢測或者是人工檢測,預(yù)設(shè)值的設(shè)定更為重要。在一些使用聚類分析進行壞味檢測的研究中\(zhòng)\[39,44\\],通過將聚類結(jié)果與預(yù)設(shè)值進行比較來判定是否存在壞味。使用預(yù)設(shè)值檢測壞味,其檢測結(jié)果主觀性較高,不易反映出程序質(zhì)量的真實情況。因此,需要弱化甚至去除壞味檢測過程中所需要的預(yù)設(shè)值,提高壞味檢測的客觀性。

    4.3壞味重構(gòu)研究的不足

    在現(xiàn)有研究中對重構(gòu)效果進行評估方面,僅考慮了重構(gòu)是否消除了引發(fā)重構(gòu)的動機(原有代碼壞味)。實際上,重構(gòu)行為除了可消去現(xiàn)有壞味之外,還可能會隱性地去除其他已存在壞味或者降低其他壞味存在的可能性。相應(yīng)地,重構(gòu)行為也可能會引入新的壞味。重構(gòu)行為在這幾方面的作用,共同影響了程序的質(zhì)量。

    5結(jié)束語

    代碼壞味的檢測及重構(gòu),已經(jīng)受到越來越多的重視,因為其對程序的質(zhì)量具有重要的影響。本文分別對壞味的定義、檢測過程以及重構(gòu)過程分別進行了研究現(xiàn)狀的分析,指出了其不足之處,為進一步的研究指明了方向。

    參考文獻:

    \\[1\\]FOWLER M, BECK K, BRANT J, et al. Refactoring: Improving the design of existing code \\[M\\]. Addison Wesley, 1999.

    [2]J. Kerievsky. Refactoring to patterns \\[M\\]. Addison-Wesley , 2004.

    [3]ABEBE S L, HAIDUC S, TONELLA P, et al. Lexicon bad smells in software \\[C\\]// Working Conference on Reverse Engineering, 2009: 95-99.

    [4]Wake W C. Refactoring Workbook \\[M\\]. Addison-Wesley, 2003.

    [5]MANTYLAM. Bad smells in software: a taxonomy and an empirical study \\[D\\]. Ph.D. dissertation, Helsinki University of Technology, 2003.

    [6]JOHNSON J H. Identifying redundancy in source code using fingerprints\\[C\\]//CASCON’93, 1993:171-183.

    [7]BAKER B S. On finding duplication and near-duplication in large software systems\\[C\\]//Proceedings of The 2th Working Conference on Reverse Engineering(WCRE95).IEEE Computer Society Press,July 1995.

    [8]ADAR E, KIM M. SoftGUESS: visualization and exploration of code clones in context \\[C\\]//International Conference on Software Engineering (ICSE’07), 2007: 762-766.

    [9]張鵬.C代碼相似代碼識別方法的研究與實現(xiàn)\\[D\\]. 大連:大連理工大學,2007.

    [10]劉鑫.重復(fù)代碼檢測方法及其應(yīng)用\\[D\\]. 哈爾濱:哈爾濱工業(yè)大學,2007.

    [11]SIMON F, LOFFLER S, LEWERENTZ C. Distance based cohesion measuring \\[C\\]//European Software Measurement Conference 99, Technologist Institute Amsterdam, 1999.

    [12]SIMON F,STEINBR F, LEWERENTZ C. Metrics based refactoring\\[C\\]//Proc European Conf Software Maintenance and Reengineering,2001.

    [13]TAHVILDARI L, KONTOGIANNIS K. A metric-based approach to enhance design quality through meta-pattern transformations \\[C\\]// European Conference Software Maintenance and Reengineering, 2003:183-192.

    [14]TSANTALIS N, CHATZIGEORGIOU A. Identification of extract method refactoring opportunities \\[C\\]// Software Maintenance and Reengineering (CSMR'09), Kaiserslautern, Germany, March 2009:119-128.

    [15]REDDY K R, RAO A A. Dependency oriented complexity metrics to detect rippling related design defects \\[J\\]. ACM SIGSOFT Software Engineering Notes, 2009, 34(4):1-7.

    [16]REDDY K N, RAO A A. A quantitative evaluation of software quality enhancement by refactoring using dependency oriented complexity metrics[C]//International Conference of Emerging Trends in Engineering and Technology (ICETET), 2009: 1011-1018.

    [17]Sant’ ANNA C, GARCIA A, LUCENA C, Evaluating the efficacy of concern-driven metrics: a comparative study \\[C\\]//Assessment of Contemporary Modularization Techniques (ACoM’08), 2008: 25-30.

    [18]LUNG C H, ZAMAN M. Using clustering technique to restructure programs \\[C\\]// International Conference on Software Engineering Research and Practice. Las Vegas: CSREA Press, 2004:853-858.

    [19]LUNG C H, XU X, ZAMAN M, et al. Program restructuring using clustering techniques \\[J\\]. The Journal of Systems and Software, 2006,79(9):1261-1279.

    [20]ALKHALID A, ALSHAYEB M, MAHMOUD S. Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm \\[J\\]. Advances in Engineering Software, 2010, 41(10-11):1160-1178.

    [21]SRINIVAS S S. Package level software refactoring using A-KNN clustering technique \\[C\\]// International Conference on Computing and Control Engineering (ICCCE 2012),2011, 5(3): 276-284.

    [22]RATZINGER J,SIGMUND T, VORBURGER P, et al. Mining software evolution to predict refactoring \\[J\\]. Empirical Software Engineering and Measurement, 2007:354-363.

    [23]GROSSER D, SAHRAOUI H A, VALTCHEV P. Analogy-based software quality prediction \\[C\\]// Quantitative Approaches In Object-Oriented Software Engineering, QAOOSE, 2003,3.

    [24]BANERJEE J, KIM W. Semantics and implementation of schema evolution in object-oriented databases \\[C\\]//ACM SIGMOD Conference,1987.

    [25]OPDYKE W F. Refactoring object-oriented frameworks \\[D\\]. Ph.D. thesis,University of Illinois,1992.

    [26]李軍超,尹俊文,徐振陽.基于抽象語法樹的代碼味道識別工具的分析與設(shè)計\\[J\\].株洲工學院學報.2005,19(6):53-56.

    [27]KONTOGIANNIS K A, DEMORI R, MERLO E, et al. Pattem matching for clone and concept detection \\[J\\]. Automated Sotrware Engineering, 1996,3(1-2):77-108.

    [28]劉建賓.過程藍圖設(shè)計方法學\\[M\\].北京:科學出版社,2005.

    [29]李建忠,劉建賓.重復(fù)代碼自動檢測工具的研究與設(shè)計\\[J\\].韓山師范學院學報,2006,6:24-29.

    [30]KATAOKA Y, IMAI T, ANDOU H, et al. A quantitative evaluation of maintainability enhancement by refactoring \\[C\\]// International Conference of Software Maintenance, 2002: 576-585.

    [31]TAHVILDARI L, KONTOGIANNIS K. A metric-based approach to enhance design quality through meta-pattern transformations \\[C\\]//European Conference of Software Maintenance and Reengineering,2003:183-192.

    [32]MURPHY E, BLACK A. Breaking the barriers to successful refactoring \\[C\\]//ACM International Conference on Software Engineering. 2008,5:421-430.

    [33]TSANTALIS N, CHATZIGEORGIOU A. Identification of move method refactoring opportunities \\[J\\]. IEEE Transactions on Software Engineering, 2009,35(3):347-367.

    [34]BANSIYA J, DAVIS C. A hierarchical model for object-oriented design quality assessment \\[J\\]. IEEE Transactions on Software Engineering ,2002,28(1):4-17.

    [35]O’KEEFFE M. Search-based refactoring for software maintenance \\[D\\]. PhD Thesis, School of Computer Science and Informatics, University College Dublin, October 2007.

    [36]O’KEEFFE M, CINNIDE M. Getting the most from search-based refactoring \\[C\\]//Genetic and Evolutionary Computation Conference (GECCO’07), 2007:1114-1120.

    [37]O’ KEEFFE M, CINNIDE M. Search-based refactoring: an empirical study \\[J\\]. Journal of Software Maintenance and Evolution: Research and Practice, 2008, 20(5): 345-364.

    [38]ABBES M, KHOMH F, GUE W G, et al. An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension \\[C\\]//European Conference on Software Maintenance and Reengineering (CSMR), 2011:181-190.

    [39]YANG L M, LIU H, NIU Z D. Identifying fragments to be extracted from long methods \\[C\\]// Asia-Pacific Software Engineering Conference, 2009,12:43-49.

    [40]MEANANEATRA P, RONGVIRIYAPANISH S. Using software metrics to select refactoring for long method bad smell \\[C\\]//International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Infromation Technology, 2011,5:492-495.

    [41]TSANTALIS N, CHATZIGEORGIOU A. Identification of move method refactoring opportunities \\[J\\]. IEEE Transactions on Software Engineering, 2009,35(3):347-367.

    [42]TSANTALIS N, CHATZIGEORGIOU A. Identification of extract method refactoring opportunities \\[C\\]// European Conference on Software Maintenance and Reengineering, 2009,3:119-128.

    [43]MURPHY E, BLACK A. Breaking the barriers to successful refactoring \\[C\\]//ACM International Conference on Software Engineering,2008,5:421-430.

    [44]RAO A A, REDDY K N. Identifying clusters of concepts in a low cohesive class for extract class refactoring using metrics supplemented agglomerative clustering technique \\[J\\]. International Journal of Computer Science Issues, 2011,8(5):185-194.

    日韩大尺度精品在线看网址| 天堂√8在线中文| 国产乱人伦免费视频| 人妻夜夜爽99麻豆av| 在线观看一区二区三区| 亚洲国产欧洲综合997久久,| 一个人观看的视频www高清免费观看| 97超级碰碰碰精品色视频在线观看| 乱码一卡2卡4卡精品| 国产欧美日韩精品一区二区| 亚洲三级黄色毛片| 久久精品人妻少妇| 国产伦人伦偷精品视频| 女人被狂操c到高潮| 亚洲国产精品成人综合色| 久久精品国产清高在天天线| 人人妻人人澡欧美一区二区| 人妻夜夜爽99麻豆av| 国产精品久久久久久亚洲av鲁大| or卡值多少钱| 欧美丝袜亚洲另类 | 又紧又爽又黄一区二区| 日韩欧美三级三区| 欧美色视频一区免费| 国产在视频线在精品| 欧美绝顶高潮抽搐喷水| 少妇被粗大猛烈的视频| 国产精品久久久久久av不卡| 亚洲图色成人| 国产白丝娇喘喷水9色精品| 日韩欧美精品v在线| 日韩强制内射视频| 在线看三级毛片| 国产伦精品一区二区三区四那| 久久午夜亚洲精品久久| 18禁在线播放成人免费| 免费电影在线观看免费观看| 又紧又爽又黄一区二区| 国产黄片美女视频| 精品福利观看| 亚洲五月天丁香| 他把我摸到了高潮在线观看| 一区福利在线观看| 搡老岳熟女国产| 亚洲无线观看免费| 成人精品一区二区免费| 少妇熟女aⅴ在线视频| 成人无遮挡网站| 免费人成视频x8x8入口观看| 有码 亚洲区| 色综合亚洲欧美另类图片| 婷婷六月久久综合丁香| 亚洲中文字幕一区二区三区有码在线看| 看免费成人av毛片| 亚洲va日本ⅴa欧美va伊人久久| 久久久久久久久久久丰满 | 精品久久久久久成人av| 老司机深夜福利视频在线观看| 99久久九九国产精品国产免费| 国产一区二区在线观看日韩| 91久久精品国产一区二区成人| 日韩 亚洲 欧美在线| 午夜福利成人在线免费观看| 成人一区二区视频在线观看| 欧美绝顶高潮抽搐喷水| 午夜影院日韩av| 日韩精品有码人妻一区| 综合色av麻豆| 嫁个100分男人电影在线观看| 色综合婷婷激情| 久久久久久久亚洲中文字幕| 久久久久久久久久成人| 免费av不卡在线播放| 午夜福利高清视频| 欧美一区二区精品小视频在线| 国产不卡一卡二| 国产一区二区激情短视频| 搡老妇女老女人老熟妇| 成人性生交大片免费视频hd| 可以在线观看的亚洲视频| 久久精品国产亚洲网站| 级片在线观看| av福利片在线观看| 国产精品福利在线免费观看| 91av网一区二区| 久久久久久久久久黄片| 成人高潮视频无遮挡免费网站| 国产爱豆传媒在线观看| 色综合亚洲欧美另类图片| 久久久久久久久大av| 男女边吃奶边做爰视频| av视频在线观看入口| 国产麻豆成人av免费视频| 99热这里只有是精品在线观看| 99热这里只有是精品50| 特级一级黄色大片| 在线观看舔阴道视频| 在线观看免费视频日本深夜| 动漫黄色视频在线观看| 国产乱人伦免费视频| 12—13女人毛片做爰片一| 在线a可以看的网站| 国产乱人视频| 日韩精品中文字幕看吧| 国产乱人视频| 十八禁网站免费在线| 男女视频在线观看网站免费| 在线看三级毛片| 国产aⅴ精品一区二区三区波| 国产精品国产高清国产av| 欧美激情国产日韩精品一区| 中文字幕高清在线视频| 一进一出抽搐动态| 两个人视频免费观看高清| 国产精品美女特级片免费视频播放器| 国产精品一区www在线观看 | 中国美白少妇内射xxxbb| 日本成人三级电影网站| 在线天堂最新版资源| 在线免费观看的www视频| 男人和女人高潮做爰伦理| 国内精品久久久久精免费| 国产爱豆传媒在线观看| 色播亚洲综合网| 内地一区二区视频在线| 麻豆久久精品国产亚洲av| 亚洲国产欧美人成| 国产美女午夜福利| 亚洲国产精品合色在线| 国产蜜桃级精品一区二区三区| 亚洲四区av| 亚洲欧美日韩高清在线视频| 免费看a级黄色片| 亚洲欧美日韩卡通动漫| 十八禁国产超污无遮挡网站| 国产三级在线视频| 成人无遮挡网站| 成人一区二区视频在线观看| 午夜影院日韩av| 欧美黑人巨大hd| 尤物成人国产欧美一区二区三区| 波多野结衣高清无吗| 欧美性感艳星| 一本精品99久久精品77| 亚洲 国产 在线| 一级毛片久久久久久久久女| 国产成人a区在线观看| 91久久精品电影网| 岛国在线免费视频观看| 精品欧美国产一区二区三| 窝窝影院91人妻| 久久人人精品亚洲av| 一区二区三区四区激情视频 | 男人狂女人下面高潮的视频| 久久香蕉精品热| 亚洲精品粉嫩美女一区| 精品日产1卡2卡| av在线亚洲专区| 九九在线视频观看精品| 国产精品久久久久久亚洲av鲁大| 亚洲国产精品sss在线观看| 婷婷六月久久综合丁香| 日韩强制内射视频| 免费搜索国产男女视频| 国产淫片久久久久久久久| x7x7x7水蜜桃| 国产大屁股一区二区在线视频| 99精品在免费线老司机午夜| 亚洲中文日韩欧美视频| 亚洲第一区二区三区不卡| 18禁黄网站禁片免费观看直播| 极品教师在线免费播放| 深爱激情五月婷婷| 久久久国产成人免费| 97超级碰碰碰精品色视频在线观看| 亚洲天堂国产精品一区在线| 国产亚洲精品综合一区在线观看| av在线蜜桃| 人人妻,人人澡人人爽秒播| 精品人妻视频免费看| 97超视频在线观看视频| 色综合亚洲欧美另类图片| 亚洲欧美日韩卡通动漫| 大又大粗又爽又黄少妇毛片口| 国产精品久久久久久亚洲av鲁大| 欧美成人一区二区免费高清观看| 国产av麻豆久久久久久久| 午夜福利18| 99久久无色码亚洲精品果冻| 久久久久免费精品人妻一区二区| 亚洲av免费在线观看| 99热6这里只有精品| 久久久久国产精品人妻aⅴ院| 亚洲综合色惰| 欧美丝袜亚洲另类 | 春色校园在线视频观看| 亚洲中文日韩欧美视频| 99热只有精品国产| 男人狂女人下面高潮的视频| 亚洲专区中文字幕在线| 亚洲精品久久国产高清桃花| 久久久久久久久久成人| 琪琪午夜伦伦电影理论片6080| 久久草成人影院| 国产一区二区三区视频了| 18禁在线播放成人免费| 国产色婷婷99| 一级a爱片免费观看的视频| 男人的好看免费观看在线视频| 99久久精品一区二区三区| 日本 av在线| 国产真实乱freesex| 搞女人的毛片| 亚州av有码| 成人二区视频| 国产爱豆传媒在线观看| 免费观看的影片在线观看| 久久久久久久久久成人| 欧美性猛交黑人性爽| 欧美高清性xxxxhd video| 91午夜精品亚洲一区二区三区 | 日本免费一区二区三区高清不卡| 日本 欧美在线| 日日摸夜夜添夜夜添小说| 欧美bdsm另类| 麻豆精品久久久久久蜜桃| 日本成人三级电影网站| 狠狠狠狠99中文字幕| 男女那种视频在线观看| 最新中文字幕久久久久| 日本黄色片子视频| 国内少妇人妻偷人精品xxx网站| 狠狠狠狠99中文字幕| 国产av麻豆久久久久久久| 草草在线视频免费看| 亚洲人与动物交配视频| 999久久久精品免费观看国产| 我要搜黄色片| 亚洲精华国产精华液的使用体验 | 麻豆成人av在线观看| 精品国产三级普通话版| 91久久精品国产一区二区成人| 在线免费观看不下载黄p国产 | 香蕉av资源在线| 一个人免费在线观看电影| 国产成人影院久久av| 内地一区二区视频在线| av福利片在线观看| 国产午夜精品久久久久久一区二区三区 | 狠狠狠狠99中文字幕| 极品教师在线视频| 日韩国内少妇激情av| 国产精品福利在线免费观看| or卡值多少钱| 男人的好看免费观看在线视频| 狂野欧美白嫩少妇大欣赏| 国产在线男女| 午夜福利在线观看免费完整高清在 | 在线免费观看不下载黄p国产 | 噜噜噜噜噜久久久久久91| 国产av一区在线观看免费| 99国产极品粉嫩在线观看| 高清毛片免费观看视频网站| 白带黄色成豆腐渣| av视频在线观看入口| 久久久久久久久中文| 99热网站在线观看| 一卡2卡三卡四卡精品乱码亚洲| 一进一出抽搐gif免费好疼| 成人无遮挡网站| 一个人看视频在线观看www免费| 国产男人的电影天堂91| 色尼玛亚洲综合影院| 国产男靠女视频免费网站| 毛片女人毛片| 小说图片视频综合网站| 最近最新免费中文字幕在线| 搡老熟女国产l中国老女人| 国产av不卡久久| 精品人妻一区二区三区麻豆 | 在线免费观看的www视频| 亚洲国产欧洲综合997久久,| 久久久色成人| 日本-黄色视频高清免费观看| 亚洲av熟女| 中文资源天堂在线| 亚洲无线在线观看| 久久久久久久亚洲中文字幕| 美女黄网站色视频| 欧美高清性xxxxhd video| 色在线成人网| 色视频www国产| 日本免费一区二区三区高清不卡| 别揉我奶头~嗯~啊~动态视频| av天堂中文字幕网| 欧美在线一区亚洲| 亚洲无线观看免费| 美女xxoo啪啪120秒动态图| 大又大粗又爽又黄少妇毛片口| 99热网站在线观看| 又爽又黄a免费视频| 日韩欧美精品v在线| 51国产日韩欧美| 国内精品美女久久久久久| 色播亚洲综合网| 国产精品99久久久久久久久| 亚洲熟妇中文字幕五十中出| 人妻丰满熟妇av一区二区三区| 亚洲美女视频黄频| 精品99又大又爽又粗少妇毛片 | 高清在线国产一区| 久久亚洲精品不卡| 婷婷丁香在线五月| 精品久久久久久,| 能在线免费观看的黄片| 日本免费一区二区三区高清不卡| 乱系列少妇在线播放| 国产熟女欧美一区二区| 亚洲精品久久国产高清桃花| 国产老妇女一区| 欧美zozozo另类| 日日摸夜夜添夜夜添av毛片 | 18禁黄网站禁片午夜丰满| 九九爱精品视频在线观看| 国内精品一区二区在线观看| 日韩中字成人| 成人午夜高清在线视频| 精品日产1卡2卡| 国语自产精品视频在线第100页| 国产一区二区三区av在线 | 日韩精品青青久久久久久| 日本爱情动作片www.在线观看 | 大又大粗又爽又黄少妇毛片口| 日日啪夜夜撸| 亚洲国产欧美人成| 男人的好看免费观看在线视频| 午夜精品一区二区三区免费看| 亚洲 国产 在线| 变态另类丝袜制服| 蜜桃亚洲精品一区二区三区| 在线观看66精品国产| 麻豆国产97在线/欧美| 男人狂女人下面高潮的视频| 精品一区二区三区视频在线观看免费| 免费高清视频大片| 人妻丰满熟妇av一区二区三区| 美女高潮喷水抽搐中文字幕| 国产色婷婷99| 色哟哟·www| 成人欧美大片| 国产精品三级大全| 国产精品野战在线观看| 综合色av麻豆| 国产伦在线观看视频一区| 琪琪午夜伦伦电影理论片6080| 可以在线观看毛片的网站| 变态另类丝袜制服| 小蜜桃在线观看免费完整版高清| 舔av片在线| 成人精品一区二区免费| 舔av片在线| 91在线观看av| 国产一区二区三区在线臀色熟女| 91在线观看av| 国产伦人伦偷精品视频| 色综合色国产| 一边摸一边抽搐一进一小说| 国产亚洲精品久久久久久毛片| 国产精品久久久久久av不卡| 99视频精品全部免费 在线| 最后的刺客免费高清国语| 小说图片视频综合网站| 给我免费播放毛片高清在线观看| 身体一侧抽搐| 51国产日韩欧美| 日韩精品青青久久久久久| 久久久色成人| 国产高清不卡午夜福利| 国产探花极品一区二区| 国产伦精品一区二区三区四那| 男人舔奶头视频| 国产主播在线观看一区二区| 国产欧美日韩一区二区精品| 国产乱人伦免费视频| 我要看日韩黄色一级片| 淫妇啪啪啪对白视频| 国产精品无大码| 熟女人妻精品中文字幕| 久久精品91蜜桃| 日韩av在线大香蕉| 精品久久久噜噜| 亚洲乱码一区二区免费版| a在线观看视频网站| 人妻久久中文字幕网| 国产一区二区三区av在线 | 琪琪午夜伦伦电影理论片6080| 看黄色毛片网站| 国产爱豆传媒在线观看| 春色校园在线视频观看| 熟妇人妻久久中文字幕3abv| 久久久午夜欧美精品| 精品免费久久久久久久清纯| 亚洲男人的天堂狠狠| 亚洲电影在线观看av| 国产精品精品国产色婷婷| 精品日产1卡2卡| 精品一区二区三区人妻视频| 丰满乱子伦码专区| 亚洲国产精品久久男人天堂| 日韩欧美国产一区二区入口| www.www免费av| 亚洲欧美日韩东京热| 亚洲精品日韩av片在线观看| 国产精品嫩草影院av在线观看 | 日韩欧美 国产精品| 在线观看午夜福利视频| 成人精品一区二区免费| 在线免费观看不下载黄p国产 | 国产欧美日韩精品亚洲av| 国产在线精品亚洲第一网站| 久久精品夜夜夜夜夜久久蜜豆| 国内精品久久久久久久电影| 一级黄色大片毛片| 91久久精品国产一区二区成人| 亚洲国产日韩欧美精品在线观看| 有码 亚洲区| 在线播放国产精品三级| 午夜影院日韩av| 久久精品国产亚洲网站| 国产精品久久久久久亚洲av鲁大| 久久久国产成人免费| 国内精品美女久久久久久| 97热精品久久久久久| 亚洲av中文字字幕乱码综合| 他把我摸到了高潮在线观看| 特大巨黑吊av在线直播| 久久香蕉精品热| 男女之事视频高清在线观看| 国产精品人妻久久久久久| 日韩中文字幕欧美一区二区| 亚洲av熟女| 国产免费男女视频| 哪里可以看免费的av片| 国产69精品久久久久777片| 999久久久精品免费观看国产| 日韩av在线大香蕉| 国产精品99久久久久久久久| 国产精品一区二区三区四区久久| 乱人视频在线观看| 看黄色毛片网站| 一个人免费在线观看电影| 成年版毛片免费区| 欧美色视频一区免费| 一进一出抽搐gif免费好疼| 亚洲成a人片在线一区二区| 亚洲成人中文字幕在线播放| 观看免费一级毛片| 露出奶头的视频| 欧美+日韩+精品| 欧美激情在线99| 搞女人的毛片| 高清毛片免费观看视频网站| 国产三级中文精品| 亚洲avbb在线观看| 国产欧美日韩精品亚洲av| 欧美日本视频| 午夜亚洲福利在线播放| 久久香蕉精品热| 国产美女午夜福利| 国产三级在线视频| 尤物成人国产欧美一区二区三区| 国产一区二区激情短视频| 国产免费男女视频| 俺也久久电影网| 1000部很黄的大片| 国产精品伦人一区二区| 精品乱码久久久久久99久播| 亚洲精华国产精华液的使用体验 | 国产欧美日韩精品亚洲av| 韩国av一区二区三区四区| 天天躁日日操中文字幕| 久久久久久九九精品二区国产| 日韩 亚洲 欧美在线| 亚洲真实伦在线观看| 99热6这里只有精品| 日本五十路高清| 夜夜夜夜夜久久久久| 国产精品福利在线免费观看| 男人狂女人下面高潮的视频| 国产精品无大码| 国产单亲对白刺激| 午夜福利在线在线| bbb黄色大片| 国产亚洲欧美98| 国产男靠女视频免费网站| 久久久国产成人精品二区| 久久国产乱子免费精品| 如何舔出高潮| 欧美日韩精品成人综合77777| 久久草成人影院| 精品人妻视频免费看| 国产69精品久久久久777片| 三级国产精品欧美在线观看| 亚洲av美国av| 国内久久婷婷六月综合欲色啪| 日韩中字成人| 一卡2卡三卡四卡精品乱码亚洲| 一a级毛片在线观看| 国产日本99.免费观看| 精品人妻偷拍中文字幕| 久99久视频精品免费| 午夜福利高清视频| 99热6这里只有精品| 国产三级在线视频| 欧美成人免费av一区二区三区| 久久这里只有精品中国| 黄色丝袜av网址大全| 亚洲美女视频黄频| 男女那种视频在线观看| 成年女人永久免费观看视频| 欧美高清成人免费视频www| a级毛片a级免费在线| 色5月婷婷丁香| а√天堂www在线а√下载| 欧美+日韩+精品| 制服丝袜大香蕉在线| 亚洲欧美日韩东京热| 亚洲av美国av| 久久国产精品人妻蜜桃| 日韩欧美一区二区三区在线观看| 99久久成人亚洲精品观看| 中国美白少妇内射xxxbb| 亚洲熟妇熟女久久| 成人精品一区二区免费| 国产精品女同一区二区软件 | 亚洲18禁久久av| 中文在线观看免费www的网站| 丰满人妻一区二区三区视频av| av黄色大香蕉| 亚州av有码| 小蜜桃在线观看免费完整版高清| 免费一级毛片在线播放高清视频| 狂野欧美激情性xxxx在线观看| 中文资源天堂在线| 欧美日韩乱码在线| 欧美激情久久久久久爽电影| 国产av不卡久久| 午夜视频国产福利| 欧美性猛交╳xxx乱大交人| 日韩国内少妇激情av| 99久久无色码亚洲精品果冻| 伦精品一区二区三区| а√天堂www在线а√下载| 看免费成人av毛片| 91久久精品国产一区二区成人| 日本成人三级电影网站| 美女cb高潮喷水在线观看| 一区二区三区高清视频在线| 午夜激情欧美在线| 欧美日本亚洲视频在线播放| 免费看av在线观看网站| 97人妻精品一区二区三区麻豆| 成人鲁丝片一二三区免费| 久久精品国产自在天天线| 国产大屁股一区二区在线视频| 久久精品影院6| 麻豆一二三区av精品| av在线天堂中文字幕| 亚洲色图av天堂| 给我免费播放毛片高清在线观看| 在线观看av片永久免费下载| 夜夜夜夜夜久久久久| 国产主播在线观看一区二区| 久久精品国产鲁丝片午夜精品 | 中文字幕av在线有码专区| 99riav亚洲国产免费| 精品人妻视频免费看| 国产精品电影一区二区三区| 色精品久久人妻99蜜桃| 2021天堂中文幕一二区在线观| 国产av一区在线观看免费| 免费大片18禁| 天天一区二区日本电影三级| 久9热在线精品视频| 午夜a级毛片| 日韩一区二区视频免费看| 欧美xxxx黑人xx丫x性爽| 色在线成人网| 窝窝影院91人妻| 久久久久国内视频| 91av网一区二区| 看片在线看免费视频| 高清毛片免费观看视频网站| 亚洲精品成人久久久久久| 赤兔流量卡办理| 女人十人毛片免费观看3o分钟| 日韩欧美国产一区二区入口| 99热这里只有是精品50| 色播亚洲综合网| 自拍偷自拍亚洲精品老妇| 免费在线观看日本一区| 一区二区三区免费毛片| 精品人妻视频免费看| 亚洲av中文字字幕乱码综合| 嫁个100分男人电影在线观看| 婷婷色综合大香蕉| 日韩欧美在线乱码| www.www免费av| 精品久久久久久久久亚洲 | 亚洲精华国产精华精| 人人妻,人人澡人人爽秒播| 国产色婷婷99| 国模一区二区三区四区视频| 精华霜和精华液先用哪个| 波多野结衣巨乳人妻|