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

    代碼重構(gòu)方法在敏捷開(kāi)發(fā)中的應(yīng)用

    2017-05-12 09:22:50鮮茜
    現(xiàn)代計(jì)算機(jī) 2017年9期
    關(guān)鍵詞:單元測(cè)試代碼重構(gòu)

    鮮茜

    (四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)

    代碼重構(gòu)方法在敏捷開(kāi)發(fā)中的應(yīng)用

    鮮茜

    (四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)

    軟件產(chǎn)品由于互聯(lián)網(wǎng)蓬勃發(fā)展而以井噴之勢(shì)持續(xù)遞增。許多企業(yè)選擇敏捷開(kāi)發(fā)模式來(lái)節(jié)約時(shí)間成本。同時(shí),需要對(duì)軟件進(jìn)行不斷地完善和改進(jìn),這導(dǎo)致軟件越來(lái)越復(fù)雜,維護(hù)成本增加。因此,代碼重構(gòu)顯得十分重要,通過(guò)參考大量文獻(xiàn)和依托項(xiàng)目實(shí)例,總結(jié)優(yōu)化代碼的一些改進(jìn)方法,并以結(jié)果展示代碼重構(gòu)后能提高其性能,使軟件更易于理解和維護(hù)。

    重構(gòu);敏捷開(kāi)發(fā);改進(jìn)方法

    0 引言

    科技社會(huì)日新月異,互聯(lián)網(wǎng)行業(yè)突飛猛進(jìn),許多互聯(lián)網(wǎng)公司如雨后春筍般崛起。在面臨行業(yè)競(jìng)爭(zhēng),需要提升產(chǎn)品的功能多樣性、易用性、安全性、用戶體驗(yàn)等復(fù)雜需求下,企業(yè)往往采用敏捷開(kāi)發(fā),這種開(kāi)發(fā)技術(shù)的優(yōu)點(diǎn)不言而喻,但缺點(diǎn)在于小組成員間工作較為獨(dú)立,各自在代碼風(fēng)格、邏輯結(jié)構(gòu)方面有較大差異。軟件產(chǎn)品隨著時(shí)間的推移,必須不斷地修改原有的代碼、增加新的功能。為了實(shí)現(xiàn)變更,不可避免地要違反最初的設(shè)計(jì)構(gòu)架。一段時(shí)間以后,軟件的架構(gòu)就會(huì)千瘡百孔。代碼以指數(shù)級(jí)數(shù)量增加,發(fā)現(xiàn)的代碼錯(cuò)誤越來(lái)越多,系統(tǒng)變得很難維護(hù),間接說(shuō)明代碼存在許多問(wèn)題。例如:可讀性差、冗余、代碼依賴性強(qiáng)、自動(dòng)測(cè)試代碼更新不及時(shí)、維護(hù)困難。

    這個(gè)現(xiàn)象帶來(lái)了科技的革新:代碼演化技術(shù)、代碼自動(dòng)化生成、測(cè)試驅(qū)動(dòng)、形式化驗(yàn)證、代碼重構(gòu)與優(yōu)化等方面的研究。其中,代碼重構(gòu)技術(shù)十分重要,它是優(yōu)化功能代碼的核心技術(shù),不改變系統(tǒng)的外部功能,只對(duì)內(nèi)部的結(jié)構(gòu)進(jìn)行重新的整理,能夠在較大程度優(yōu)化代碼,使系統(tǒng)對(duì)需求變化具有自適應(yīng)能力。

    通過(guò)實(shí)際項(xiàng)目中代碼重構(gòu)經(jīng)驗(yàn),分析對(duì)比重構(gòu)前后代碼性能、代碼復(fù)雜度等參數(shù)。總結(jié)其中有效的優(yōu)化方法,保證功能工作的情況下,使軟件得到改進(jìn)。

    1 相關(guān)工作

    Martin Fowler清楚揭示了重構(gòu)過(guò)程,解釋重構(gòu)的原理,并指出何時(shí)何地你應(yīng)該開(kāi)始挖掘你的代碼以求改善[1]。陳林等人針對(duì)現(xiàn)有泛化關(guān)系重構(gòu)方法在處理泛型程序時(shí)不考慮參數(shù)化類型的約束,會(huì)破壞程序類型正確性的問(wèn)題,提出了一組泛型Java程序的類型約束規(guī)則,可以在與程序代碼規(guī)模成線性關(guān)系的時(shí)間內(nèi)實(shí)施重構(gòu),并有效地保證程序的類型正確性[2]。Kataoka等人提出一種定量評(píng)價(jià)方法來(lái)衡量程序重構(gòu)的可維護(hù)性增強(qiáng)效果。專注于耦合度量來(lái)評(píng)估重構(gòu)效應(yīng)[3]。Van等人提供了一組具有“壞氣味”的代碼,之后給出了測(cè)試的集合重構(gòu)去除這些問(wèn)題代碼。最終,通過(guò)一個(gè)簡(jiǎn)單程序的修改,測(cè)試重構(gòu)解釋的集合證明如何克服這些問(wèn)題[4]。Du等人分析在哪些特定條件下如何重構(gòu)操作耦合/凝聚力特征,以及如何識(shí)別重構(gòu)的這些特征是否得到改善,最終在一個(gè)開(kāi)放源碼軟件系統(tǒng)驗(yàn)證相關(guān)改進(jìn)和適用性[5]。

    2 重構(gòu)方法概述

    根據(jù)目標(biāo)管理SMART原則,制定重構(gòu)計(jì)劃。需要考慮重構(gòu)所需時(shí)間,具體地為每個(gè)小目標(biāo)設(shè)定一個(gè)合理的最后期限,并設(shè)置明確的度量來(lái)評(píng)估目標(biāo)是否達(dá)成。采取結(jié)對(duì)編程有效策略,重構(gòu)之前構(gòu)建有效的測(cè)試來(lái)保證代碼質(zhì)量。將重構(gòu)分為功能代碼和測(cè)試代碼兩部分來(lái)進(jìn)行。如圖1所示,審視代碼整體結(jié)構(gòu)和風(fēng)格,分析出依賴關(guān)系并統(tǒng)一風(fēng)格,在重構(gòu)之前進(jìn)行回歸測(cè)試。接下來(lái)對(duì)功能代碼風(fēng)格和業(yè)務(wù)邏輯進(jìn)行重構(gòu),并每修改一次,進(jìn)行回歸測(cè)試,一直到所有結(jié)束。

    圖1 重構(gòu)流程圖

    2.1 重構(gòu)重點(diǎn)

    ①打破依賴明確的關(guān)系

    ②構(gòu)建堅(jiān)實(shí)的測(cè)試

    ③優(yōu)化代碼,重新審視遺留缺陷

    2.2 重構(gòu)步驟

    在實(shí)際工程項(xiàng)目中,代碼庫(kù)一直在持續(xù)集成服務(wù)器運(yùn)行著,所以需要先從源代碼干線拉出一條分支進(jìn)行重構(gòu)。這樣可以使重構(gòu)周期限于非常小的范圍,通常為1或2個(gè)類;改進(jìn)類設(shè)計(jì)時(shí)不會(huì)涉及業(yè)務(wù)邏輯,修改一個(gè)類之后,需要用自動(dòng)化測(cè)試工具進(jìn)行功能測(cè)試,直到測(cè)試通過(guò);周而復(fù)始繼續(xù)修改類,直到所有類都更改,保證功能不受影響后,提交回代碼庫(kù)主干線。

    3 實(shí)現(xiàn)及方法總結(jié)

    3.1 功能代碼優(yōu)化

    (1)有狀態(tài)的服務(wù)對(duì)象

    ●癥狀

    一些服務(wù)對(duì)象是有狀態(tài)的,因?yàn)樗鼈儠?huì)從請(qǐng)求對(duì)象那里提取數(shù)據(jù)。代碼為每個(gè)服務(wù)對(duì)象將請(qǐng)求對(duì)象轉(zhuǎn)換成一個(gè)字段,并為每個(gè)請(qǐng)求創(chuàng)建新對(duì)象。當(dāng)系統(tǒng)負(fù)載很高時(shí)會(huì)對(duì)JVM(Java虛擬機(jī))造成強(qiáng)工作負(fù)載來(lái)分配內(nèi)存和垃圾回收。讓所有的服務(wù)對(duì)象線程變得不安全。

    ●解決方法

    打破依賴,有一個(gè)明確的數(shù)據(jù)和邏輯的分離,讓所有服務(wù)對(duì)象無(wú)狀態(tài),狀態(tài)駐留在請(qǐng)求對(duì)象本身。所有的服務(wù)方法的請(qǐng)求對(duì)象作為輸入?yún)?shù),這樣使得每個(gè)服務(wù)對(duì)象可以一次創(chuàng)建并為多個(gè)請(qǐng)求所重用。

    圖2 類重構(gòu)流程圖

    (2)類關(guān)聯(lián)

    ●癥狀

    類與類之間有繼承關(guān)系、泛化關(guān)系、依賴關(guān)系、關(guān)聯(lián)關(guān)系、聚合關(guān)系、組合關(guān)系六種關(guān)系,這些關(guān)系分類較細(xì),有時(shí)往往會(huì)對(duì)此認(rèn)識(shí)不清晰。沒(méi)有明確的泛化關(guān)系,而依賴關(guān)系是由調(diào)用者從靜態(tài)工廠方法和獲取使用之前初始化。而且代碼中存在工廠模式的錯(cuò)誤使用導(dǎo)致代碼冗余、代碼層次多余、結(jié)構(gòu)紊亂等問(wèn)題。很難闡述代碼變化的影響,而且容易創(chuàng)建一個(gè)循環(huán)引用關(guān)系。

    ●解決方法

    通過(guò)為依賴接口創(chuàng)建字段,使依賴關(guān)系顯式化。封裝調(diào)用者的類和實(shí)現(xiàn)函數(shù)的功能代碼,實(shí)現(xiàn)高內(nèi)聚低耦合。

    (3)對(duì)象創(chuàng)建

    ●癥狀

    對(duì)象實(shí)例是根據(jù)每個(gè)請(qǐng)求創(chuàng)建,即使在同一類的不同方法中,也會(huì)重復(fù)創(chuàng)建相同的依賴對(duì)象實(shí)例。隨意的創(chuàng)建對(duì)象會(huì)增加了JVM的不必要的工作負(fù)載,并可能導(dǎo)致性能問(wèn)題,從而整個(gè)產(chǎn)品性能較差,用戶體驗(yàn)不佳。

    ●解決方法

    除了請(qǐng)求對(duì)象之外,所有對(duì)象實(shí)例都由Spring(Java的一種框架)在應(yīng)用程序啟動(dòng)時(shí)創(chuàng)建一次,并重復(fù)用于不同的請(qǐng)求,只有在必要時(shí)才創(chuàng)建一個(gè)新對(duì)象,對(duì)象生命周期應(yīng)該由框架管理。依賴對(duì)象是類的字段,使用Spring框架創(chuàng)建對(duì)象實(shí)例,使對(duì)象單例,然后使用Spring框架注入依賴對(duì)象實(shí)例。

    (4)功能函數(shù)

    ●癥狀

    函數(shù)是程序中最基本的功能結(jié)構(gòu),是一個(gè)可以從程序其它地方調(diào)用執(zhí)行的語(yǔ)句塊。函數(shù)通常只完成一個(gè)功能,當(dāng)函數(shù)代碼行數(shù)數(shù)量龐大,缺少戰(zhàn)略異常處理和日志記錄。會(huì)使得代碼難以閱讀,而且難以理解,查錯(cuò)和維護(hù)變得困難。函數(shù)嵌套層次比較深時(shí),內(nèi)部調(diào)用外部代碼時(shí)常常會(huì)引發(fā)錯(cuò)誤調(diào)用。

    ●解決方法

    良好的軟件系統(tǒng)設(shè)計(jì)需要將函數(shù)設(shè)計(jì)為實(shí)現(xiàn)單一功能,并且有一個(gè)自頂向下的抽象層??s短代碼函數(shù)以便于閱讀、理解和維護(hù)代碼。盡可能調(diào)用已有成熟的開(kāi)源編程實(shí)現(xiàn)的函數(shù)。

    (5)異常

    ●癥狀

    異常處理功能提供了處理程序運(yùn)行時(shí)出現(xiàn)的任何意外或異常情況的方法。異常處理使用 try、catch和finally關(guān)鍵字來(lái)處理可能未成功的操作和失敗,以及在事后清理資源。通過(guò)異常處理,可以對(duì)用戶在程序中的非法輸入進(jìn)行控制和提示,以防程序崩潰。在項(xiàng)目代碼中使用超級(jí)異常包裝各種錯(cuò)誤代碼,范圍跨度太大,不能較好地適用于不同的異常情況,同時(shí)導(dǎo)致錯(cuò)誤處理和日志記錄幾乎發(fā)生在每種方法中,十分冗余和低效。

    ●解決方法

    為不同的情況定義不同的異常類型,通過(guò)try{} catch()子句中的類型處理異常。并且僅使用運(yùn)行時(shí)異常。如果錯(cuò)誤處理的唯一操作是日志記錄,則在每個(gè)模塊的入口點(diǎn)只執(zhí)行一次。設(shè)計(jì)時(shí),定義異常需考慮層次、細(xì)分情況和系統(tǒng)產(chǎn)品界面友好。

    程序中的關(guān)鍵代碼如下:

    3.2 測(cè)試代碼優(yōu)化

    自動(dòng)化測(cè)試是代碼重構(gòu)的先決條件和重要步驟。沒(méi)有構(gòu)建完備的自動(dòng)化測(cè)試環(huán)境,即使代碼優(yōu)化完成后,也無(wú)法驗(yàn)證是否每一個(gè)修改動(dòng)作是否是正確的。因此,構(gòu)建和優(yōu)化自動(dòng)測(cè)試代碼也十分必要。

    (1)單元測(cè)試設(shè)計(jì)與風(fēng)格

    ●癥狀

    通常而言,一個(gè)單元測(cè)試是用于判斷某個(gè)特定條件下某個(gè)特定函數(shù)的行為。然而,在項(xiàng)目代碼中單元測(cè)試代碼數(shù)量巨大,一個(gè)案例測(cè)試了多個(gè)功能,單個(gè)案例中包括多個(gè)“assert”語(yǔ)句,顯得十分冗長(zhǎng)。在單元測(cè)試代碼中沒(méi)有“Given-When-Then”代碼風(fēng)格結(jié)構(gòu),易讀性差。

    ●解決方法

    每個(gè)單元測(cè)試按照“Given-When-Then”代碼風(fēng)格寫,使邏輯結(jié)構(gòu)清晰,提高易讀性。每個(gè)案例只專注測(cè)試一個(gè)函數(shù),減少測(cè)試代碼行數(shù)。

    程序中的關(guān)鍵代碼如下:

    ●癥狀

    mock測(cè)試是在測(cè)試過(guò)程中,對(duì)于某些不容易構(gòu)造或者不容易獲取的對(duì)象,用一個(gè)虛擬的對(duì)象來(lái)創(chuàng)建以便測(cè)試的測(cè)試方法。偽依賴的實(shí)現(xiàn)在單元測(cè)試中被用作mock,有時(shí)測(cè)試目標(biāo)本身被部mock。更糟的是使用Java反射機(jī)制,并且當(dāng)設(shè)置mock對(duì)象時(shí),方法名稱被硬編碼為字符串。一半的測(cè)試代碼是關(guān)于設(shè)置mock,而不是關(guān)于測(cè)試開(kāi)發(fā)代碼本身。

    ●解決方法

    所有的mock由mock框架動(dòng)態(tài)創(chuàng)建的,沒(méi)有實(shí)際的mock類代碼。測(cè)試目標(biāo)是真正的實(shí)現(xiàn)代碼,注入所有mock依賴項(xiàng)。使用代理對(duì)象、模擬對(duì)象和輔助對(duì)象來(lái)隔離網(wǎng)絡(luò),數(shù)據(jù)庫(kù),文件和用戶接口。設(shè)置mock時(shí)使用智能默認(rèn)設(shè)置,可以減少mock代碼。不要用硬編碼設(shè)置方法名,mock最多用來(lái)測(cè)靜態(tài)方法。

    (3)覆蓋率

    ●癥狀

    測(cè)試覆蓋是對(duì)測(cè)試完全程度的評(píng)測(cè)。測(cè)試覆蓋是由測(cè)試需求和測(cè)試用例的覆蓋或已執(zhí)行代碼的覆蓋表示。測(cè)試代碼中路徑覆蓋似乎很好,但事實(shí)上一些邊界和特殊條件并沒(méi)有測(cè)試。一些測(cè)試用例沒(méi)有驗(yàn)證到任何功能,它們只是用來(lái)制造一個(gè)不錯(cuò)的覆蓋率。

    ●解決方法

    刪除無(wú)用的測(cè)試保證測(cè)試單元測(cè)試用例有用且有效。不要為了覆蓋率在單元測(cè)試中制造空的測(cè)試函數(shù)。即使覆蓋數(shù)量已經(jīng)達(dá)到目標(biāo),繼續(xù)優(yōu)化邊界和異常測(cè)試。

    4 重構(gòu)結(jié)果分析

    表1展示了項(xiàng)目其中三個(gè)模塊代碼重構(gòu)前后一些參數(shù)的對(duì)比,可以清晰的看到,代碼行數(shù)、方法復(fù)雜度和類復(fù)雜度有在一定程度上減少,有效地減少了軟件容量。而單元測(cè)試覆蓋率和事務(wù)成功率的增加間接說(shuō)明軟件質(zhì)量得到保證、性能提高。

    表1 相關(guān)參數(shù)比較

    5 結(jié)語(yǔ)

    一方面,軟件質(zhì)量得到巨大的改進(jìn),具體體現(xiàn)在冗余代碼歸類、抽象提取和刪除,結(jié)構(gòu)重新設(shè)計(jì)、減少時(shí)間復(fù)雜度,使代碼易讀,便于維護(hù)。另一方面,通過(guò)項(xiàng)目實(shí)踐增強(qiáng)對(duì)重構(gòu)代碼的理解,掌握了如何結(jié)合實(shí)際情況構(gòu)建重構(gòu)的方法。維護(hù)工作減少,參與重構(gòu)工作的人員的業(yè)務(wù)能力提高,對(duì)代碼邏輯有了清晰的認(rèn)識(shí)。

    未來(lái)研究設(shè)計(jì)重構(gòu)驅(qū)動(dòng)開(kāi)發(fā)的方法及工具,選擇最優(yōu)架構(gòu)方案,避免多次修改代碼,破壞整體架構(gòu)以及付出巨大的人力開(kāi)銷。探索更多地使用于不同規(guī)模、用途的軟件系統(tǒng)的代碼重構(gòu)方案,以便提高工業(yè)界生產(chǎn)效率,保證產(chǎn)品質(zhì)量。

    [1]Martin Fowler.Refactoring:Improving the Design of Existing Code[M].America:Addison-Wesley Professional,1999.

    [2]陳林,徐寶文,周曉宇等.一種基于類型約束的泛型Java程序重構(gòu)方法[J].電子學(xué)報(bào),2007:35(s2):185-191.

    [3]Kataoka Y,Imai T,Andou H,et al.A Quantitative Evaluation of Maintainability Enhancement by Refactoring[C].Software Maintenance,2002.Proceedings.International Conference on.IEEE,2002:576-585.

    [4]Van Deursen A,Moonen L,van den Bergh A,et al.Refactoring Test Code[C].Proceedings of the 2nd International Conference on Extreme Programming and Flexible Processes in Software Engineering,2001:92-95.

    [5]Du Bois B,Demeyer S,Verelst J.Refactoring-Improving Coupling and Cohesion of Existing Code[C].Reverse Engineering,2004.Proceedings.11th Working Conference on.IEEE,2004:144-151.

    作者簡(jiǎn)介:

    Application of Code Refactoring in Agile Development

    XIAN Xi
    (College of Computer Science,Sichuan University,Chengdu 610065)

    Software products blow up the trend that continues to increase due to the vigorous development of the Internet.Many companies choose agile development models to save time costs.At the same time,the need for continuous improvement and improvement of software,which lead software become more and more complex as well as the maintenance costs increased.Therefore,the code refactoring is very important.Summarizes the improved methods of optimizing the code by referring to a large number of documents and relying on the project experience,and shows the improvement of performance with result makes the software easier to understand and maintain.

    Refactoring;Agile Development;Improvement Methods

    1007-1423(2017)09-0123-05

    10.3969/j.issn.1007-1423.2017.09.028

    ,女,四川成都人,碩士,研究方向?yàn)檐浖|(zhì)量保證與測(cè)試

    2017-03-11

    2017-03-20

    猜你喜歡
    單元測(cè)試代碼重構(gòu)
    長(zhǎng)城敘事的重構(gòu)
    攝影世界(2022年1期)2022-01-21 10:50:14
    北方大陸 重構(gòu)未來(lái)
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    北京的重構(gòu)與再造
    商周刊(2017年6期)2017-08-22 03:42:36
    論中止行為及其對(duì)中止犯的重構(gòu)
    一年級(jí)上冊(cè)第五單元測(cè)試
    一年級(jí)上冊(cè)一、二單元測(cè)試
    伊人久久精品亚洲午夜| 在线观看www视频免费| 日本欧美视频一区| 一级毛片黄色毛片免费观看视频| 日韩一本色道免费dvd| 亚洲伊人久久精品综合| 毛片一级片免费看久久久久| 国产精品人妻久久久影院| 久久国产亚洲av麻豆专区| 免费黄色在线免费观看| 免费看不卡的av| 伊人亚洲综合成人网| 黑人高潮一二区| 日日摸夜夜添夜夜爱| 久久99热6这里只有精品| 久久狼人影院| 高清黄色对白视频在线免费看 | 卡戴珊不雅视频在线播放| 天堂俺去俺来也www色官网| 久热这里只有精品99| 亚洲电影在线观看av| 国产一区二区在线观看av| 亚洲,一卡二卡三卡| 男人狂女人下面高潮的视频| 在线精品无人区一区二区三| 久久久久精品久久久久真实原创| 久久99热这里只频精品6学生| av不卡在线播放| 久久久久国产精品人妻一区二区| 精品人妻熟女av久视频| 人妻少妇偷人精品九色| 国产精品一二三区在线看| 国产一级毛片在线| 丝袜喷水一区| 亚洲人成网站在线观看播放| 丁香六月天网| 观看免费一级毛片| 伦理电影大哥的女人| 观看av在线不卡| 人人妻人人添人人爽欧美一区卜| 国产日韩欧美视频二区| 久久精品国产亚洲av涩爱| 日产精品乱码卡一卡2卡三| a级毛片免费高清观看在线播放| 99久久精品国产国产毛片| 国产亚洲av片在线观看秒播厂| 伦精品一区二区三区| 久久人妻熟女aⅴ| 国产极品天堂在线| 日本色播在线视频| 伦精品一区二区三区| 十八禁网站网址无遮挡 | 国产高清不卡午夜福利| 久久久久久久久久久免费av| 人妻夜夜爽99麻豆av| 天天躁夜夜躁狠狠久久av| 哪个播放器可以免费观看大片| 精品久久久久久电影网| 久久久国产一区二区| 在线观看美女被高潮喷水网站| 午夜福利视频精品| a 毛片基地| 免费看日本二区| 精品一品国产午夜福利视频| 亚洲国产日韩一区二区| 男女免费视频国产| av福利片在线| 国国产精品蜜臀av免费| videossex国产| 精品人妻一区二区三区麻豆| 伊人亚洲综合成人网| 丰满乱子伦码专区| 青春草国产在线视频| 久久av网站| 国产一区二区三区av在线| 日韩成人av中文字幕在线观看| 麻豆精品久久久久久蜜桃| 熟女av电影| 91aial.com中文字幕在线观看| 国产精品一区二区在线不卡| 在线观看www视频免费| 精品人妻熟女毛片av久久网站| 日日啪夜夜撸| 黄色毛片三级朝国网站 | 桃花免费在线播放| 下体分泌物呈黄色| 80岁老熟妇乱子伦牲交| av免费观看日本| 国产av国产精品国产| 亚洲人成网站在线播| 国产白丝娇喘喷水9色精品| 九九久久精品国产亚洲av麻豆| 久久 成人 亚洲| 高清毛片免费看| 国产av精品麻豆| 亚洲精品乱久久久久久| 麻豆精品久久久久久蜜桃| 99re6热这里在线精品视频| 免费观看a级毛片全部| 综合色丁香网| 亚洲人成网站在线播| 久久久国产精品麻豆| 女人精品久久久久毛片| 亚洲欧美一区二区三区国产| 人妻制服诱惑在线中文字幕| 日韩三级伦理在线观看| 国产色爽女视频免费观看| 精品熟女少妇av免费看| 亚洲国产精品一区三区| 精品人妻一区二区三区麻豆| 亚洲精品日韩在线中文字幕| 91精品伊人久久大香线蕉| 中文字幕人妻熟人妻熟丝袜美| h日本视频在线播放| 视频区图区小说| 国模一区二区三区四区视频| 欧美变态另类bdsm刘玥| 精华霜和精华液先用哪个| 王馨瑶露胸无遮挡在线观看| 午夜影院在线不卡| 午夜av观看不卡| 啦啦啦视频在线资源免费观看| 国产精品蜜桃在线观看| 中文字幕人妻丝袜制服| 久久综合国产亚洲精品| 18禁动态无遮挡网站| 99精国产麻豆久久婷婷| 噜噜噜噜噜久久久久久91| 婷婷色av中文字幕| 日本-黄色视频高清免费观看| 99热网站在线观看| 韩国av在线不卡| 免费看光身美女| 国产伦精品一区二区三区视频9| 日韩欧美精品免费久久| 欧美变态另类bdsm刘玥| 亚洲伊人久久精品综合| 麻豆精品久久久久久蜜桃| 欧美激情极品国产一区二区三区 | 亚洲精品,欧美精品| 精品国产国语对白av| 99久久人妻综合| 亚洲欧美精品自产自拍| 在线观看国产h片| 如何舔出高潮| 午夜福利网站1000一区二区三区| 狂野欧美激情性xxxx在线观看| 麻豆精品久久久久久蜜桃| 看免费成人av毛片| 亚洲内射少妇av| 免费看av在线观看网站| 亚洲欧美一区二区三区黑人 | 国产成人freesex在线| 亚洲伊人久久精品综合| 国产黄色视频一区二区在线观看| 在线播放无遮挡| 日韩中字成人| 中文乱码字字幕精品一区二区三区| 国产av一区二区精品久久| 免费观看a级毛片全部| 插阴视频在线观看视频| 欧美人与善性xxx| 视频区图区小说| 五月天丁香电影| 91精品一卡2卡3卡4卡| 国产一区二区在线观看日韩| 亚洲欧美中文字幕日韩二区| 99国产精品免费福利视频| 精品一区二区免费观看| 国产视频内射| 国产免费福利视频在线观看| 一区二区三区四区激情视频| 秋霞伦理黄片| 免费播放大片免费观看视频在线观看| 一本久久精品| 久久精品国产亚洲av涩爱| 十分钟在线观看高清视频www | av天堂中文字幕网| 在线观看国产h片| av线在线观看网站| 欧美精品一区二区免费开放| 热99国产精品久久久久久7| 日日摸夜夜添夜夜添av毛片| 亚洲av福利一区| 久久精品久久久久久久性| 人体艺术视频欧美日本| 久久久久久久精品精品| a级一级毛片免费在线观看| 69精品国产乱码久久久| 国产亚洲精品久久久com| 亚洲国产精品999| 国产一区二区在线观看av| 日韩 亚洲 欧美在线| 岛国毛片在线播放| 午夜激情久久久久久久| 国产在线一区二区三区精| 91午夜精品亚洲一区二区三区| 18禁在线播放成人免费| 一级爰片在线观看| 亚洲欧美成人综合另类久久久| 一本大道久久a久久精品| 国产成人午夜福利电影在线观看| 美女国产视频在线观看| 青春草国产在线视频| 九九在线视频观看精品| 亚洲国产精品一区三区| 久久婷婷青草| 我的女老师完整版在线观看| 日本欧美国产在线视频| 男女无遮挡免费网站观看| 汤姆久久久久久久影院中文字幕| 久久久精品94久久精品| 精品亚洲乱码少妇综合久久| 久久久午夜欧美精品| 久久午夜福利片| 青春草视频在线免费观看| 日本色播在线视频| 韩国av在线不卡| 在线天堂最新版资源| 亚洲国产精品一区三区| 午夜免费观看性视频| 日韩精品有码人妻一区| 婷婷色av中文字幕| 国产黄色免费在线视频| 麻豆成人午夜福利视频| 黄色日韩在线| av在线播放精品| 一级毛片aaaaaa免费看小| 99热国产这里只有精品6| 简卡轻食公司| 欧美三级亚洲精品| 国产精品久久久久久av不卡| 免费看光身美女| 午夜久久久在线观看| 亚洲精品乱码久久久v下载方式| 亚洲电影在线观看av| 亚洲精品久久午夜乱码| a级片在线免费高清观看视频| 亚洲美女视频黄频| 国产无遮挡羞羞视频在线观看| 精品国产一区二区三区久久久樱花| 国国产精品蜜臀av免费| 99热这里只有是精品50| 欧美日韩视频精品一区| 亚洲精品第二区| 黑丝袜美女国产一区| 久久综合国产亚洲精品| 免费看不卡的av| 国产欧美另类精品又又久久亚洲欧美| 纯流量卡能插随身wifi吗| 日韩av不卡免费在线播放| av国产久精品久网站免费入址| 国产伦精品一区二区三区四那| 日本午夜av视频| 亚洲国产精品一区二区三区在线| 91在线精品国自产拍蜜月| 秋霞伦理黄片| 99久久中文字幕三级久久日本| 麻豆乱淫一区二区| 亚洲av欧美aⅴ国产| 99久久综合免费| 高清视频免费观看一区二区| 91久久精品国产一区二区三区| 特大巨黑吊av在线直播| 蜜臀久久99精品久久宅男| 男人和女人高潮做爰伦理| 成年人免费黄色播放视频 | 亚洲av在线观看美女高潮| 国产精品国产三级专区第一集| 一区二区三区免费毛片| 伊人久久精品亚洲午夜| 天堂8中文在线网| 久久婷婷青草| 大片电影免费在线观看免费| 国产一区有黄有色的免费视频| 国产 一区精品| av不卡在线播放| h日本视频在线播放| 一级二级三级毛片免费看| 国产淫语在线视频| 欧美精品国产亚洲| 免费黄频网站在线观看国产| 国产成人免费观看mmmm| 高清在线视频一区二区三区| 日韩不卡一区二区三区视频在线| 男人狂女人下面高潮的视频| 国产黄频视频在线观看| 麻豆精品久久久久久蜜桃| 边亲边吃奶的免费视频| 一本一本综合久久| 你懂的网址亚洲精品在线观看| 激情五月婷婷亚洲| 两个人免费观看高清视频 | 人妻 亚洲 视频| 亚州av有码| 黑人巨大精品欧美一区二区蜜桃 | 人妻夜夜爽99麻豆av| 精品少妇内射三级| 欧美激情极品国产一区二区三区 | 自拍欧美九色日韩亚洲蝌蚪91 | 亚州av有码| 亚洲美女搞黄在线观看| 午夜av观看不卡| 久久人人爽人人片av| 午夜福利网站1000一区二区三区| 午夜福利影视在线免费观看| 美女脱内裤让男人舔精品视频| 综合色丁香网| 十八禁网站网址无遮挡 | www.av在线官网国产| 成人影院久久| 97超碰精品成人国产| 又粗又硬又长又爽又黄的视频| 午夜精品国产一区二区电影| 免费观看a级毛片全部| 国产精品一二三区在线看| 久久热精品热| 欧美日韩av久久| 国产免费福利视频在线观看| 老司机亚洲免费影院| 国产有黄有色有爽视频| 最近手机中文字幕大全| 日本-黄色视频高清免费观看| 91精品国产国语对白视频| 99re6热这里在线精品视频| 久久影院123| 在线观看免费视频网站a站| 亚洲自偷自拍三级| 一级爰片在线观看| 又粗又硬又长又爽又黄的视频| 亚洲图色成人| 极品人妻少妇av视频| 亚洲av不卡在线观看| 在线观看免费日韩欧美大片 | 日韩一区二区视频免费看| 大码成人一级视频| 日韩视频在线欧美| 国产精品免费大片| 80岁老熟妇乱子伦牲交| 日韩强制内射视频| 久久亚洲国产成人精品v| 激情五月婷婷亚洲| 国产精品不卡视频一区二区| 9色porny在线观看| 高清视频免费观看一区二区| 免费观看性生交大片5| 99re6热这里在线精品视频| 亚洲情色 制服丝袜| 国产欧美日韩精品一区二区| 国产精品三级大全| av视频免费观看在线观看| 亚洲欧洲日产国产| 午夜视频国产福利| 久久久久人妻精品一区果冻| 午夜福利,免费看| 我要看日韩黄色一级片| 久久久精品免费免费高清| 久久人人爽人人爽人人片va| 久久久精品免费免费高清| 多毛熟女@视频| 久久久精品免费免费高清| 一级a做视频免费观看| 国产色婷婷99| 97在线视频观看| 久热这里只有精品99| 亚洲欧洲日产国产| 亚洲精品一二三| 国产精品一区二区在线不卡| 欧美激情国产日韩精品一区| av在线播放精品| 黄色配什么色好看| 亚洲成人手机| 最近中文字幕2019免费版| 亚洲色图综合在线观看| 久久婷婷青草| 日本av免费视频播放| 老司机影院成人| 在线精品无人区一区二区三| 99久久中文字幕三级久久日本| 亚洲国产精品成人久久小说| 欧美日本中文国产一区发布| 精品一区二区免费观看| 美女cb高潮喷水在线观看| 成年女人在线观看亚洲视频| 亚洲欧美精品专区久久| 久久国内精品自在自线图片| 国产精品一区二区在线观看99| 国产黄片视频在线免费观看| 久久久久久久久久久免费av| 亚洲综合精品二区| 永久免费av网站大全| 丝袜脚勾引网站| 在线观看av片永久免费下载| 国产美女午夜福利| 亚洲精品,欧美精品| 亚洲av综合色区一区| 日本色播在线视频| 乱人伦中国视频| 99久久中文字幕三级久久日本| 乱人伦中国视频| 99久久中文字幕三级久久日本| 亚洲av不卡在线观看| 欧美精品人与动牲交sv欧美| 少妇猛男粗大的猛烈进出视频| 国产精品麻豆人妻色哟哟久久| 美女大奶头黄色视频| 六月丁香七月| 尾随美女入室| 国产欧美另类精品又又久久亚洲欧美| 韩国av在线不卡| 国产熟女欧美一区二区| 久久人人爽av亚洲精品天堂| 99热这里只有是精品50| 婷婷色麻豆天堂久久| 国语对白做爰xxxⅹ性视频网站| 免费人成在线观看视频色| 只有这里有精品99| 日韩免费高清中文字幕av| 伦精品一区二区三区| 大片电影免费在线观看免费| videos熟女内射| 精品国产乱码久久久久久小说| 国产老妇伦熟女老妇高清| 久久久国产精品麻豆| 国产高清国产精品国产三级| 国产深夜福利视频在线观看| freevideosex欧美| 亚洲精品成人av观看孕妇| 街头女战士在线观看网站| 国产一级毛片在线| 高清黄色对白视频在线免费看 | 伊人亚洲综合成人网| 国产精品国产三级国产专区5o| 国产极品天堂在线| 狠狠精品人妻久久久久久综合| av免费观看日本| 黑人巨大精品欧美一区二区蜜桃 | 如日韩欧美国产精品一区二区三区 | 卡戴珊不雅视频在线播放| 欧美日韩综合久久久久久| 国产精品嫩草影院av在线观看| 欧美日韩综合久久久久久| 国产精品嫩草影院av在线观看| 两个人的视频大全免费| 99热这里只有是精品在线观看| 国产精品成人在线| 熟妇人妻不卡中文字幕| 国产精品人妻久久久影院| 少妇的逼水好多| 综合色丁香网| 精品国产露脸久久av麻豆| 男人爽女人下面视频在线观看| 久久热精品热| 国产精品久久久久久久久免| 日日撸夜夜添| 赤兔流量卡办理| 嫩草影院新地址| 夫妻性生交免费视频一级片| 国产伦在线观看视频一区| 偷拍熟女少妇极品色| 国产欧美亚洲国产| 精品少妇久久久久久888优播| 黄色欧美视频在线观看| 噜噜噜噜噜久久久久久91| 尾随美女入室| 9色porny在线观看| 亚洲性久久影院| 91精品国产国语对白视频| 久久人妻熟女aⅴ| 亚洲精品成人av观看孕妇| 国产一区二区在线观看日韩| 在线观看一区二区三区激情| 久久久精品94久久精品| 精品酒店卫生间| 我要看黄色一级片免费的| 日韩av不卡免费在线播放| 极品教师在线视频| 最近最新中文字幕免费大全7| 欧美一级a爱片免费观看看| 狂野欧美激情性xxxx在线观看| 国产精品99久久久久久久久| 一级毛片我不卡| 日韩人妻高清精品专区| 亚洲精品国产av蜜桃| 日韩大片免费观看网站| 亚洲欧美成人精品一区二区| 毛片一级片免费看久久久久| av网站免费在线观看视频| 热re99久久精品国产66热6| 日韩制服骚丝袜av| 欧美变态另类bdsm刘玥| 91精品伊人久久大香线蕉| 人妻夜夜爽99麻豆av| 久久精品久久久久久久性| 少妇人妻久久综合中文| 日韩一区二区视频免费看| 久久青草综合色| 日本免费在线观看一区| 久久人人爽人人片av| 亚洲av成人精品一二三区| 精品一品国产午夜福利视频| 国产av国产精品国产| 欧美xxⅹ黑人| 国产精品久久久久久精品古装| 亚洲欧美成人综合另类久久久| 少妇精品久久久久久久| 在线观看国产h片| 免费av不卡在线播放| 久久久久精品性色| 26uuu在线亚洲综合色| 夜夜爽夜夜爽视频| 一级二级三级毛片免费看| 精品国产一区二区三区久久久樱花| 成年人午夜在线观看视频| 久久国产乱子免费精品| 国产精品麻豆人妻色哟哟久久| 久久久精品94久久精品| 人人妻人人澡人人爽人人夜夜| 国产亚洲精品久久久com| 自拍偷自拍亚洲精品老妇| 中文字幕人妻熟人妻熟丝袜美| 一级a做视频免费观看| 国产在线免费精品| 女性被躁到高潮视频| 久久99精品国语久久久| 国产亚洲av片在线观看秒播厂| 国产亚洲午夜精品一区二区久久| 国产精品不卡视频一区二区| 国语对白做爰xxxⅹ性视频网站| 22中文网久久字幕| 亚洲精品乱码久久久v下载方式| 精品午夜福利在线看| 人妻一区二区av| 一本大道久久a久久精品| 亚洲欧美精品专区久久| 一级爰片在线观看| 91在线精品国自产拍蜜月| 我的老师免费观看完整版| 美女视频免费永久观看网站| 啦啦啦在线观看免费高清www| 亚洲精华国产精华液的使用体验| 一区二区三区四区激情视频| 亚洲av欧美aⅴ国产| 成年av动漫网址| 国产精品欧美亚洲77777| 性高湖久久久久久久久免费观看| 国产老妇伦熟女老妇高清| 精品久久久久久久久亚洲| 国产淫语在线视频| 毛片一级片免费看久久久久| 国产黄色免费在线视频| 丁香六月天网| 日韩成人av中文字幕在线观看| 99视频精品全部免费 在线| 国产视频内射| 亚洲自偷自拍三级| 欧美日本中文国产一区发布| 黄色视频在线播放观看不卡| 九九久久精品国产亚洲av麻豆| 午夜免费观看性视频| 99久久综合免费| 日产精品乱码卡一卡2卡三| 观看免费一级毛片| 国产黄片视频在线免费观看| av网站免费在线观看视频| av线在线观看网站| 欧美性感艳星| 午夜福利在线观看免费完整高清在| 韩国高清视频一区二区三区| 丰满人妻一区二区三区视频av| 午夜免费男女啪啪视频观看| 午夜福利影视在线免费观看| 一区在线观看完整版| 在线观看免费视频网站a站| 嫩草影院入口| av在线观看视频网站免费| 亚洲国产毛片av蜜桃av| 亚洲欧美日韩卡通动漫| 亚洲精品自拍成人| 在线观看人妻少妇| 国产高清有码在线观看视频| 久久免费观看电影| 中文字幕人妻熟人妻熟丝袜美| 国产精品一区二区在线不卡| 永久网站在线| 纯流量卡能插随身wifi吗| 91久久精品国产一区二区三区| 人人妻人人澡人人爽人人夜夜| 国产黄色视频一区二区在线观看| 又大又黄又爽视频免费| 97超碰精品成人国产| 大香蕉97超碰在线| 日本色播在线视频| 国产在线男女| 日韩免费高清中文字幕av| 3wmmmm亚洲av在线观看| 另类亚洲欧美激情| 2021少妇久久久久久久久久久| 午夜av观看不卡| 国产伦精品一区二区三区四那| 少妇猛男粗大的猛烈进出视频| 22中文网久久字幕| 在线观看人妻少妇| 亚洲欧美日韩卡通动漫| 国产黄色免费在线视频| 免费少妇av软件| 亚洲高清免费不卡视频| 少妇人妻一区二区三区视频| a级一级毛片免费在线观看| 日韩免费高清中文字幕av| 欧美bdsm另类| 熟女av电影| 亚洲国产精品成人久久小说| 久久久久久久久大av| 18+在线观看网站|