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

看了同事的代碼,我忍不住寫了這份代碼指南

開發(fā) 后端
寫出整潔的代碼,是每個程序員的追求。《clean code》指出,要想寫出好的代碼,首先得知道什么是骯臟代碼、什么是整潔代碼;然后通過大量的刻意練習(xí),才能真正寫出整潔的代碼。

寫出整潔的代碼,是每個程序員的追求。《clean code》指出,要想寫出好的代碼,首先得知道什么是骯臟代碼、什么是整潔代碼;然后通過大量的刻意練習(xí),才能真正寫出整潔的代碼。

WTF/min是衡量代碼質(zhì)量的唯一標(biāo)準(zhǔn),Uncle Bob在書中稱糟糕的代碼為沼澤(wading),這只突出了我們是糟糕代碼的受害者。國內(nèi)有一個更適合的詞匯:屎山,雖然不是很文雅但是更加客觀,程序員既是受害者也是加害者。

對于什么是整潔的代碼,書中給出了大師們的總結(jié):

  •  Bjarne Stroustrup:優(yōu)雅且高效;直截了當(dāng);減少依賴;只做好一件事
  •  Grady booch:簡單直接
  •  Dave thomas:可讀,可維護,單元測試
  •  Ron Jeffries:不要重復(fù)、單一職責(zé),表達力(Expressiveness)

其中,我最喜歡的是表達力(Expressiveness)這個描述,這個詞似乎道出了好代碼的真諦:用簡單直接的方式描繪出代碼的功能,不多也不少。

命名的藝術(shù)

坦白的說,命名是一件困難的事情,要想出一個恰到好處的命名需要一番功夫,尤其我們的母語還不是編程語言所通用的英語。不過這一切都是值得了,好的命名讓你的代碼更直觀,更有表達力。

好的命名應(yīng)該有下面的特征:

名副其實

好的變量名告訴你:是什么東西,為什么存在,該怎么使用

如果需要通過注釋來解釋變量,那么就先得不那么名副其實了。

下面是書中的一個示例代碼,展示了命名對代碼質(zhì)量的提升 

  1. # bad code  
  2. def getItem(theList):  
  3.    ret = []  
  4.    for x in theList:  
  5.       if x[0] == 4:  
  6.          ret.append(x)  
  7.    return ret  
  8. # good code  
  9. def getFlaggedCell(gameBoard):  
  10.    '''掃雷游戲,flagged: 翻轉(zhuǎn)'''  
  11.    flaggedCells = []  
  12.    for cell in gameBoard:  
  13.       if cell.IsFlagged():  
  14.          flaggedCells.append(cell)  
  15.    return flaggedCells 

避免誤導(dǎo)

  •  不要掛羊頭賣狗肉
  •  不要覆蓋慣用縮略語

這里不得不吐槽前兩天才看到的一份代碼,居然使用了 l 作為變量名;而且,user居然是一個list(單復(fù)數(shù)都沒學(xué)好!!)

有意義的區(qū)分

代碼是寫給機器執(zhí)行,也是給人閱讀的,所以概念一定要有區(qū)分度 

  1. # bad  
  2. def copy(a_list, b_list):  
  3. pass  
  4. # good  
  5. def copy(source, destination):  
  6. pass 

使用讀的出來的單詞

如果名稱讀不出來,那么討論的時候就會像個傻鳥

使用方便搜索的命名

名字長短應(yīng)與其作用域大小相對應(yīng)

避免思維映射

比如在代碼中寫一個temp,那么讀者就得每次看到這個單詞的時候翻譯成其真正的意義

注釋

有表達力的代碼是無需注釋的。

The proper use of comments is to compensate for our failure to express ourself in code.

注釋的適當(dāng)作用在于彌補我們用代碼表達意圖時遇到的失敗,這聽起來讓人沮喪,但事實確實如此。The truth is in the code, 注釋只是二手信息,二者的不同步或者不等價是注釋的最大問題。

書中給出了一個非常形象的例子來展示:用代碼來闡述,而非注釋 

  1. bad  
  2. // check to see if the employee is eligible for full benefit  
  3. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))  
  4. good  
  5. if (employee.isEligibleForFullBenefits()) 

因此,當(dāng)想要添加注釋的時候,可以想想是否可以通過修改命名,或者修改函數(shù)(代碼)的抽象層級來展示代碼的意圖。

當(dāng)然,也不能因噎廢食,書中指出了以下一些情況屬于好的注釋

  1.  法務(wù)信息
  2.  對意圖的注釋,為什么要這么做
  3.  警示
  4.  TODO注釋

    放大看似不合理之物的重要性

其中個人最贊同的是第2點和第5點,做什么很容易通過命名表達,但為什么要這么做則并不直觀,特別涉及到專業(yè)知識、算法的時候。另外,有些第一感覺“不那么優(yōu)雅”的代碼,也許有其特殊愿意,那么這樣的代碼就應(yīng)該加上注釋,說明為什么要這樣,比如為了提升關(guān)鍵路徑的性能,可能會犧牲部分代碼的可讀性。

最壞的注釋就是過時或者錯誤的注釋,這對于代碼的維護者(也許就是幾個月后的自己)是巨大的傷害,可惜除了code review,并沒有簡單易行的方法來保證代碼與注釋的同步。

函數(shù)

函數(shù)的單一職責(zé)

一個函數(shù)應(yīng)該只做一件事,這件事應(yīng)該能通過函數(shù)名就能清晰的展示。判斷方法很簡單:看看函數(shù)是否還能再拆出一個函數(shù)。

函數(shù)要么做什么do_sth, 要么查詢什么query_sth。最惡心的就是函數(shù)名表示只會query_sth, 但事實上卻會do_sth, 這使得函數(shù)產(chǎn)生了副作用。比如書中的例子 

  1. public class UserValidator {  
  2. private Cryptographer cryptographer;  
  3. public boolean checkPassword(String userName, String password) {   
  4.         User user = UserGateway.findByName(userName);  
  5. if (user != User.NULL) {  
  6. String codedPhrase = user.getPhraseEncodedByPassword();   
  7. String phrase = cryptographer.decrypt(codedPhrase, password);   
  8. if ("Valid Password".equals(phrase)) {  
  9.                 Session.initialize();  
  10. return true;   
  11.             }  
  12.         }  
  13. return false;   
  14.     }  

函數(shù)的抽象層級

每個函數(shù)一個抽象層次,函數(shù)中的語句都要在同一個抽象層級,不同的抽象層級不能放在一起。比如我們想把大象放進冰箱,應(yīng)該是這個樣子的: 

  1. def pushElephantIntoRefrige():  
  2.     openRefrige()  
  3.     pushElephant()  
  4.     closeRefrige() 

函數(shù)里面的三句代碼在同一個層級(高度)描述了要完成把大象放進冰箱這件事順序相關(guān)的三個步驟。顯然,pushElephant這個步驟又可能包含很多子步驟,但是在pushElephantIntoRefrige這個層級,是無需知道太多細節(jié)的。

當(dāng)我們想通過閱讀代碼的方式來了解一個新的項目時,一般都是采取廣度優(yōu)先的策略,自上而下的閱讀代碼,先了解整體結(jié)構(gòu),然后再深入感興趣的細節(jié)。如果沒有對實現(xiàn)細節(jié)進行良好的抽象(并凝練出一個名副其實的函數(shù)),那么閱讀者就容易迷失在細節(jié)的汪洋里。

某種程度看來,這個跟金字塔原理也很像

每一個層級都是為了論證其上一層級的觀點,同時也需要下一層級的支持;同一層級之間的多個論點又需要以某種邏輯關(guān)系排序。pushElephantIntoRefrige就是中心論點,需要多個子步驟的支持,同時這些子步驟之間也有邏輯先后順序。

函數(shù)參數(shù)

函數(shù)的參數(shù)越多,組合出的輸入情況就愈多,需要的測試用例也就越多,也就越容易出問題。

輸出參數(shù)相比返回值難以理解,這點深有同感,輸出參數(shù)實在是很不直觀。從函數(shù)調(diào)用者的角度,一眼就能看出返回值,而很難識別輸出參數(shù)。輸出參數(shù)通常逼迫調(diào)用者去檢查函數(shù)簽名,這個實在不友好。

向函數(shù)傳入Boolean(書中稱之為 Flag Argument)通常不是好主意。尤其是傳入True or False后的行為并不是一件事情的兩面,而是兩件不同的事情時。這很明顯違背了函數(shù)的單一職責(zé)約束,解決辦法很簡單,那就是用兩個函數(shù)。

Dont repear yourself

在函數(shù)這個層級,是最容易、最直觀實現(xiàn)復(fù)用的,很多IDE也難幫助我們講一段代碼重構(gòu)出一個函數(shù)。

不過在實踐中,也會出現(xiàn)這樣一種情況:一段代碼在多個方法中都有使用,但是又不完全一樣,如果抽象成一個通用函數(shù),那么就需要加參數(shù)、加if else區(qū)別。這樣就有點尷尬,貌似可以重構(gòu),但又不是很完美。

造成上述問題的某種情況是因為,這段代碼也違背了單一職責(zé)原則,做了不只一件事情,這才導(dǎo)致不好復(fù)用,解決辦法是進行方法的細分,才能更好復(fù)用。也可以考慮template method來處理差異的部分。

測試

非常慚愧的是,在我經(jīng)歷的項目中,測試(尤其是單元測試)一直都沒有得到足夠的重視,也沒有試行過TDD。正因為缺失,才更感良好測試的珍貴。

我們常說,好的代碼需要有可讀性、可維護性、可擴展性,好的代碼、架構(gòu)需要不停的重構(gòu)、迭代,但自動化測試是保證這一切的基礎(chǔ),沒有高覆蓋率的、自動化的單元測試、回歸測試,誰都不敢去修改代碼,只能任其腐爛。

即使針對核心模塊寫了單元測試,一般也很隨意,認(rèn)為這只是測試代碼,配不上生產(chǎn)代碼的地位,以為只要能跑通就行了。這就導(dǎo)致測試代碼的可讀性、可維護性非常差,然后導(dǎo)致測試代碼很難跟隨生產(chǎn)代碼一起更新、演化,最后導(dǎo)致測試代碼失效。所以說,臟測試 - 等同于 - 沒測試。

因此,測試代碼的三要素:可讀性,可讀性,可讀性。

對于測試的原則、準(zhǔn)則如下:

  •  You are not allowed to write any production code unless it is to make a failing unit test pass. 沒有測試之前不要寫任何功能代碼
  •  You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 只編寫恰好能夠體現(xiàn)一個失敗情況的測試代碼
  •  You are not allowed to write any more production code than is sufficient to pass the one failing unit test. 只編寫恰好能通過測試的功能代碼

測試的FIRST準(zhǔn)則:

  1.  快速(Fast)測試應(yīng)該夠快,盡量自動化。
  2.  獨立(Independent) 測試應(yīng)該應(yīng)該獨立。不要相互依賴
  3.  可重復(fù)(Repeatable) 測試應(yīng)該在任何環(huán)境上都能重復(fù)通過。
  4.  自我驗證(Self-Validating) 測試應(yīng)該有bool輸出。不要通過查看日志這種低效率方式來判斷測試是否通過
  5.  及時(Timely) 測試應(yīng)該及時編寫,在其對應(yīng)的生產(chǎn)代碼之前編寫 

 

責(zé)任編輯:龐桂玉 來源: 程序員共讀
相關(guān)推薦

2022-05-09 14:33:20

代碼設(shè)計設(shè)計模式

2022-03-23 08:01:04

Python語言代碼

2021-12-03 11:57:27

代碼##語言

2020-03-20 08:00:32

代碼程序員追求

2015-11-16 14:52:13

代碼程序員

2021-08-02 08:53:26

設(shè)計師面試求職

2023-02-15 08:30:05

2020-08-17 09:30:34

代碼焦點程序員

2020-11-20 10:22:34

代碼規(guī)范設(shè)計

2024-12-12 12:00:00

代碼C++

2015-11-17 09:47:32

代碼寫下去

2015-11-16 09:04:19

寫代碼程序員年齡

2017-06-29 14:47:57

2020-09-27 10:55:10

代碼Java字符串

2019-06-24 10:26:15

代碼程序注釋

2023-01-31 07:42:29

代碼JDKMaven

2021-01-04 13:33:08

黑客微軟網(wǎng)絡(luò)攻擊

2020-10-16 09:09:56

代碼業(yè)務(wù)模型

2020-02-20 10:45:57

代碼JS開發(fā)

2020-12-28 05:54:37

構(gòu)造builder模式
點贊
收藏

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

精品一区二区三区欧美| 狠狠色丁香婷婷综合影院| 亚洲宅男天堂在线观看无病毒| 日韩乱码在线视频| 污视频免费在线观看网站| 精品176二区| www.欧美.com| 成人a视频在线观看| 91精品国产高潮对白| 成人羞羞网站入口免费| 精品国产免费一区二区三区香蕉 | 国产精品视频一区二区三区| 亚洲男人的天堂在线观看| 国产成人免费电影| 中文有码在线播放| 99热免费精品在线观看| 久久影院在线观看| 波多野结衣av在线观看| 中文成人在线| 色噜噜狠狠成人网p站| 成年丰满熟妇午夜免费视频| 内衣办公室在线| 成人免费视频网站在线观看| 成人h视频在线观看播放| 狠狠人妻久久久久久| 欧美va天堂在线| 在线日韩av观看| 800av在线播放| 国产亚洲亚洲国产一二区| 色伊人久久综合中文字幕| www.国产二区| 免费网站看v片在线a| 久久影院午夜论| 国产精品乱码一区二区三区| 97视频免费在线| 日本美女一区二区| 日本久久久久久久| 久久狠狠高潮亚洲精品| 欧美深夜福利| 欧美剧在线观看| 我要看一级黄色录像| 国产一区日韩| 亚洲视频axxx| 国产jk精品白丝av在线观看| 日本成人中文| 亚洲第一中文字幕在线观看| 三级网站免费看| 日本久久伊人| 欧美一级免费大片| 北条麻妃亚洲一区| 国产精品欧美一区二区三区不卡| 亚洲精品国产无套在线观| 亚洲第一精品区| 日本www在线观看视频| 26uuu精品一区二区| 久久久久久九九| 欧美美乳在线| 国产日韩欧美高清| 婷婷五月色综合| 久久伊伊香蕉| 国产欧美日韩三级| 亚洲三区视频| 91精品国产91久久久久久青草| 91视视频在线直接观看在线看网页在线看| 国产成人亚洲精品| 手机av免费观看| 日本成人在线一区| 成人黄色影片在线| 97人妻精品一区二区三区| 国产精品一二三四五| av日韩免费电影| 日日躁夜夜躁白天躁晚上躁91| 免费不卡在线观看| 国产精品亚洲精品| 精品国产av鲁一鲁一区| 成人手机在线视频| 日韩欧美电影一区二区| 麻豆传媒在线观看| 亚洲高清免费观看| 久久久久久久久久久久久久国产| 日韩精品分区| 欧美日韩国产精品| 麻豆三级在线观看| 99精品国产高清一区二区麻豆| 欧洲精品中文字幕| 一级黄色大片儿| 久久久亚洲欧洲日产| 亚洲人线精品午夜| 亚洲av无码一区二区三区在线| 给我免费播放日韩视频| 亚洲欧美日韩久久久久久| 日本成人免费在线观看| 亚洲视屏一区| 国产极品精品在线观看| 性欧美8khd高清极品| 97国产一区二区| 亚洲欧美在线网| av在线最新| 欧美视频在线观看一区| 国产又粗又猛又爽又黄| 国产区精品区| 欧美国产在线视频| 亚洲精品91天天久久人人| 国产99久久久久| 清纯唯美一区二区三区| 亚洲综合伊人久久大杳蕉| 色婷婷综合久久久久中文一区二区| 激情五月宗合网| 亚洲免费看片| 亚洲人成电影在线观看天堂色| 国产精品无码网站| 99热在线成人| 国产91在线播放| www.黄色小说.com| 国产精品久久久久久久久晋中| 一区二区视频在线免费| 小h片在线观看| 日韩一二三四区| 五月天免费网站| 在线亚洲成人| 国产精品国产亚洲精品看不卡15| 人妻va精品va欧美va| 18欧美亚洲精品| 久久精品一区二| 琪琪久久久久日韩精品| 欧美老女人xx| 99久久久国产精品无码免费| 久久久久9999亚洲精品| 精品国产一区三区| 日韩欧美中文字幕一区二区三区 | 午夜精品久久久久久久白皮肤 | 亚洲国产免费| 成人免费网站在线看| 成人综合影院| 欧美性猛xxx| 日本丰满少妇裸体自慰 | 成人毛片老司机大片| 在线一区亚洲| 久久天天久久| 一二美女精品欧洲| 中文字幕观看在线| 亚洲国产精品av| 黄色片视频在线播放| 欧美精品中文| 97成人精品区在线播放| 污污网站在线免费观看| 亚洲福利国产精品| 欧美性生交xxxxx| 欧美特黄视频| 国产女主播一区二区| 色呦呦呦在线观看| 日韩欧美国产一区二区三区 | 国产精品免费久久| 中文字幕无码不卡免费视频| 自拍偷拍精品| 国产成人涩涩涩视频在线观看 | 亚洲人成电影在线| 精品视频一二三区| 国产精品三级av在线播放| 一级片视频免费观看| 成人网18免费网站| 成人免费自拍视频| 国产在线拍揄自揄拍视频| 精品成人一区二区三区四区| 亚洲免费激情视频| 久久久久国产精品人| 色www免费视频| 午夜视频一区| 精品免费二区三区三区高中清不卡| 色影院视频在线| 91精品国产综合久久精品麻豆| 国产老熟女伦老熟妇露脸| 香蕉久久久久久久av网站| 日韩精品一区二区三区四区五区 | 韩国三级在线观看久| 欧美午夜在线观看| www.av视频| 成人免费观看视频| 激情内射人妻1区2区3区| 久久久久久久久久久久久久久久久久| 国产精品电影在线观看| 日本成人网址| 日韩精品中文字幕在线播放| 中文在线字幕免费观| 亚洲人成亚洲人成在线观看图片 | 国产婷婷成人久久av免费高清| 久久中文免费视频| 99久久国产综合精品女不卡| 老司机午夜av| 欧美区国产区| 三区精品视频观看| 91精品国产乱码久久久竹菊| 日本精品视频在线播放| dy888亚洲精品一区二区三区| 欧美日韩一区二区三区在线看| 免费看污黄网站在线观看| 久久精品999| 九九九九免费视频| 天天色综合色| 欧美精品欧美精品| 年轻的保姆91精品| 国产精品午夜一区二区欲梦| 9999精品成人免费毛片在线看| 亚洲第一av在线| 亚洲一区精品在线观看| 精品国产福利在线| 青青草原免费观看| 欧美激情中文不卡| 一边摸一边做爽的视频17国产| 黄色精品免费| 正在播放一区二区三区| 四虎影视精品| 国产精品青青草| 成人午夜一级| 日本成人在线视频网址| 波多野结衣在线观看| 日韩资源在线观看| 国产在线观看黄| 亚洲精品成人网| www.xxx国产| 欧美精品123区| 姑娘第5集在线观看免费好剧| **欧美大码日韩| 国产又粗又猛又爽又黄av| 成人小视频在线| 国产精品成人免费一区久久羞羞| 在线观看日韩av电影| 神马午夜伦理影院| 欧美丰满日韩| 一本一道久久a久久精品综合 | 国产欧美一区二区三区国产幕精品| 久久久久久国产精品一区| aaa国产精品| 97久久天天综合色天天综合色hd| 黄频免费在线观看| 欧美精品18videos性欧美| av网站免费在线观看| 久久久精品国产网站| 亚洲视频tv| 永久免费精品影视网站| 毛片网站在线| 一本色道久久88精品综合| 国产福利电影在线| 伊人亚洲福利一区二区三区| 2019中文字幕在线视频| 中文字幕精品av| 欧美尤物美女在线| 久久久国产成人精品| 91在线中文| 久久人人97超碰精品888| 成年网站在线视频网站| 久久久中文字幕| 日本不卡1234视频| 日韩av黄色在线观看| 亚洲电影有码| 91在线国产电影| 亚洲伊人影院| 精品麻豆av| 激情综合网站| 老司机av福利| 韩国亚洲精品| av观看免费在线| 美女脱光内衣内裤视频久久网站| 青娱乐自拍偷拍| 亚洲综合社区| 妓院一钑片免看黄大片| 精品一区二区在线视频| 亚洲黄色小说在线观看| 99国产精品国产精品毛片| 波多野结衣一本| 国产精品色呦呦| 国产性生活网站| 日韩欧美在线视频日韩欧美在线视频| h色网站在线观看| 亚洲亚洲人成综合网络| 久久久午夜影院| 欧美视频在线一区| 成人黄色在线观看视频| 亚洲欧美制服中文字幕| 色开心亚洲综合| 欧美精品久久久久久久久久| 成人av三级| 成人国产精品免费视频| 精品伊人久久久| 亚洲欧美99| 樱桃成人精品视频在线播放| 黄色三级视频在线| 成人性生交大片免费看中文 | 91禁在线观看| 欧美va天堂va视频va在线| 国内精品在线视频| 久久国产精品影视| 黑人精品一区| 亚洲综合精品伊人久久| 国产欧美日韩影院| 欧美久久在线观看| 麻豆精品新av中文字幕| xxxx黄色片| 亚洲摸摸操操av| 免费无码国产精品| 精品久久一区二区三区| 欧美精品日韩少妇| 欧洲成人性视频| 在线播放一区二区精品视频| 亚洲精品久久区二区三区蜜桃臀| 欧美理论视频| 少妇无码av无码专区在线观看| 亚洲欧洲另类| 先锋资源在线视频| 国产精品素人视频| 国产精品21p| 欧美一级xxx| 午夜在线小视频| 日韩美女主播视频| 日韩欧美影院| 天堂8在线天堂资源bt| 精品一区免费av| 免费看的黄色网| 91久久线看在观草草青青| 四虎在线视频免费观看| 欧美成人精品在线播放| 欧美特黄色片| 亚洲欧洲精品一区二区三区波多野1战4| 日韩精品诱惑一区?区三区| 看av免费毛片手机播放| 成人免费的视频| 免费无码毛片一区二区app| 欧美日本在线观看| 成a人v在线播放| 国产成人综合精品在线| 精品在线观看入口| 国产主播在线看| 99精品久久只有精品| 亚洲国产精一区二区三区性色| 色综合天天综合色综合av | 亚洲一区二区三区免费看| 国产精品入口66mio| 国产xxxx视频| 亚洲一区二区三区视频在线播放 | 精品卡一卡二| 最新亚洲一区| 亚洲国产第一区| 欧美日韩国产精品一区二区三区四区| 久久这里只有精品9| 亚洲性猛交xxxxwww| 国产三级一区| 欧美日韩在线免费观看视频| 精品伊人久久久久7777人| 日韩女优一区二区| 欧美一区二区三级| 草莓视频丝瓜在线观看丝瓜18| 国产精品你懂得| 欧美mv日韩| 毛毛毛毛毛毛毛片123| 一区二区三区成人| 欧美一级特黄aaaaaa| 久久久噜噜噜久久中文字免| 国产精品久久久久av蜜臀| 国产视频一视频二| 久久久噜噜噜久久中文字幕色伊伊 | 爆乳熟妇一区二区三区霸乳| 国产欧美精品一区二区色综合 | 在线中文免费视频| 超碰97国产在线| 亚洲高清自拍| 国产免费看av| 欧美日韩情趣电影| 牛牛电影国产一区二区| 精品亚洲第一| 美女一区二区三区| 九九视频免费看| 精品视频偷偷看在线观看 | 国产精品成人一区二区| 日韩精品二区| 中文在线字幕观看| 欧美性少妇18aaaa视频| 日本在线www| 国模精品一区二区三区| 美女精品一区二区| 四虎免费在线视频| 亚洲欧洲国产一区| 美女国产精品久久久| 乱妇乱女熟妇熟女网站| 国产精品久久久久久久久免费相片 | 黄色亚洲精品| 美国黑人一级大黄| 欧美zozozo| 欧美123区| 国产精品久久久久7777| 国产精品乱码一区二三区小蝌蚪| 无码视频一区二区三区| 久久成人免费视频| 欧美黑人巨大videos精品| 黄色小视频免费网站| 婷婷六月综合亚洲| 羞羞污视频在线观看| 日韩国产精品一区二区| 成人美女视频在线观看| 国产又黄又粗又猛又爽| 日韩av毛片网|