精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

欧美性猛交xxx| 不卡的av在线| 久久99热这里只有精品国产| 国产av一区二区三区传媒| 涩涩视频在线免费看| 中文字幕+乱码+中文字幕一区| 成人久久久久久| 亚洲国产综合久久| 日韩av密桃| 欧美成人在线直播| 99草草国产熟女视频在线| 黄网站在线免费看| 久久亚洲精华国产精华液| 成人免费黄色网| 亚洲另类欧美日韩| 久久久久蜜桃| 亚洲精品视频中文字幕| 福利视频999| 久草在线中文最新视频| 自拍偷在线精品自拍偷无码专区| 国产精品一区二区av| 中文有码在线播放| 一本色道久久综合亚洲精品不| 中文国产亚洲喷潮| 最新中文字幕视频| 97久久精品| 欧美精品 日韩| 久久久久免费精品| 日韩电影免费看| 亚洲精品中文在线| 一本一道久久a久久综合精品| 日韩一级免费毛片| 国产精品123| 91精品免费看| 中文在线a天堂| 久久一区二区三区超碰国产精品| 欧美激情免费视频| 亚洲熟女www一区二区三区| 不卡中文字幕| 日韩av在线一区二区| 日韩少妇一区二区| 日本在线成人| 日韩欧美国产精品| 在线成人精品视频| 未满十八勿进黄网站一区不卡| 一本一道综合狠狠老| 成人性生活视频免费看| 日韩欧美一起| 樱桃国产成人精品视频| 黄频视频在线观看| 黄在线免费观看| 中文字幕在线观看不卡| 午夜一区二区三区| 亚洲xxxxxx| 国产精品成人免费精品自在线观看| 欧美一进一出视频| 激情小说 在线视频| 久久亚洲一区二区三区明星换脸| 久久精品中文字幕一区二区三区| 色一情一乱一区二区三区| 成人高清av在线| 国产一区福利视频| 日韩大片b站免费观看直播| 91视频.com| 久久精品日韩精品| 大片免费播放在线视频| 欧美国产日韩在线观看| 色噜噜色狠狠狠狠狠综合色一| 韩国免费在线视频| 国产精品久久久久一区二区三区 | 欧美一级电影在线| 午夜久久久久久久久久影院| 日本不卡高清视频| 成人免费福利视频| 黄色aaa大片| 91小视频在线免费看| 色姑娘综合网| 污污网站在线看| 亚洲电影在线播放| 蜜臀av午夜一区二区三区| 粉嫩91精品久久久久久久99蜜桃 | 97国产精品视频| 中文字幕激情小说| 青娱乐精品在线视频| 91在线中文字幕| 亚洲 欧美 激情 小说 另类| 久久久久久久久久久久久夜| 亚洲一卡二卡区| 日韩伦理电影网站| 色婷婷综合五月| 激情成人在线观看| 网红女主播少妇精品视频| 在线日韩欧美视频| 久久久久久蜜桃| 日韩精品一二三| 1卡2卡3卡精品视频| 亚洲AV第二区国产精品| 中文字幕日韩欧美一区二区三区| 久久国产午夜精品理论片最新版本| 中文字幕21页在线看| 欧美二区三区的天堂| 国产精品九九视频| 国产精品久久久久一区二区三区厕所| 欧美精品videos| 中文字幕丰满人伦在线| av电影天堂一区二区在线 | 绯色av蜜臀vs少妇| 国产99久久| 欧美激情视频一区| 亚洲一级黄色大片| 97久久超碰国产精品| 国产卡一卡二在线| 成人免费福利| 精品成人私密视频| 希岛爱理中文字幕| 久久一区中文字幕| 国产精品日韩一区二区| 免费黄色在线看| 在线观看视频91| 亚洲熟女乱综合一区二区三区| 亚洲精品在线观看91| 国产成人涩涩涩视频在线观看| 亚洲国产成人在线观看| 中日韩av电影| 亚洲精品一二三四五区| 亚洲精品aaaaa| 欧美黄色片视频| 99久久国产热无码精品免费| 中文字幕精品三区| 久久人妻精品白浆国产 | 裸体在线国模精品偷拍| 久久综合九色欧美狠狠| 国产欧洲在线| 亚洲福利小视频| 欧美日韩大片在线观看| 国模娜娜一区二区三区| 黄色www在线观看| 成人一级视频| 在线观看欧美日韩国产| 免费看av在线| 国产欧美1区2区3区| 午夜精品久久久内射近拍高清| 九九热hot精品视频在线播放| 欧美国产日产韩国视频| 国产成人精品一区二三区四区五区 | 欧美视频一区二区三区…| 亚洲图片综合网| 一区二区日本视频| 久久久综合亚洲91久久98| 中文字幕乱码在线播放| 日韩黄在线观看| 成人公开免费视频| 国产农村妇女精品| 中文字幕在线综合| 亚洲成人99| 亚洲伊人第一页| 男女免费观看在线爽爽爽视频| 日韩精品自拍偷拍| 色网站在线播放| 久久久久久电影| 成年人在线观看视频免费| av一区二区在线播放| 国产专区欧美专区| 久久av色综合| 日韩大陆欧美高清视频区| 在线观看亚洲天堂| 国产欧美日韩不卡| 亚洲热在线视频| 国产亚洲在线观看| 婷婷四房综合激情五月| 国产精品亚洲欧美日韩一区在线| 欧美美女操人视频| 午夜激情小视频| 欧美在线色视频| 顶臀精品视频www| 成人精品视频一区| 国产又大又黄又粗的视频| 欧美高清在线| 国产精品乱码一区二区三区| 老色鬼在线视频| 中文欧美日本在线资源| 国产高清视频免费| 欧美日韩中文字幕在线视频| www亚洲色图| 国产精品白丝jk白祙喷水网站| 久久久亚洲精品无码| 青青草91久久久久久久久| 99re在线国产| 久久久久久久| 欧美日韩ab片| 国产在线一二| 日韩欧美国产精品| 亚洲天堂视频在线播放| 亚洲午夜久久久久久久久电影院| 97人妻精品一区二区免费| 国产一区福利在线| 国产美女三级视频| 欧美久久综合网| 国产日韩精品入口| 女人让男人操自己视频在线观看| 久久九九精品99国产精品| 熟妇人妻av无码一区二区三区| 欧美日韩国产影片| 草久久免费视频| 亚洲黄网站在线观看| 精品欧美一区二区久久久| 国产69精品一区二区亚洲孕妇| 动漫av免费观看| 亚洲人成毛片在线播放女女| 一区二区三区电影| 婷婷精品在线| 97人人做人人人难人人做| 欧美gay视频| 久久青草福利网站| www在线免费观看视频| 亚洲欧美一区二区三区在线| 精品人妻一区二区三区四区不卡 | 欧美不卡视频一区发布| av在线中文| 日韩精品小视频| 亚洲国产精品久久久久久6q| 欧美日韩dvd在线观看| 欧美h在线观看| 午夜电影网一区| 久青草免费视频| 亚洲美腿欧美偷拍| 情侣偷拍对白清晰饥渴难耐| 久久久激情视频| 黑丝av在线播放| 成人免费视频国产在线观看| 久久精品久久99| 久久精品国产在热久久| 91激情视频在线| 日韩黄色片在线观看| 亚洲人成无码www久久久| 亚洲欧美久久| 国产主播在线看| 亚洲一区日韩| 国产乱子伦农村叉叉叉| 99精品国产在热久久| 久久这里只有精品23| 一区免费视频| 国产日韩亚洲欧美在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美一级特黄aaaaaa在线看片| 欧美激情另类| www.午夜色| 亚洲一区 二区 三区| 五月天男人天堂| 亚洲成人精选| 黄网站色视频免费观看| 欧美视频官网| 97视频久久久| 久久国产精品久久久久久电车 | 中文av在线全新| 国产成人精品一区二区在线 | 成人激情在线播放| 奇米一区二区| 国产自产在线视频一区| 三级精品视频| 日韩精品一区二区三区色偷偷| 日韩一区电影| 人妻无码一区二区三区四区| 伊人精品视频| 久久久久久久久久久久久久国产| 老色鬼久久亚洲一区二区| 国产一区二区在线免费播放| 激情伊人五月天久久综合| 性高潮久久久久久| 99国产精品99久久久久久| a级在线免费观看| 亚洲色图.com| 国产成人免费观看视频 | 天堂99x99es久久精品免费| 欧美日韩在线观看一区二区三区| 欧美自拍偷拍| 欧美另类videosbestsex日本| 亚洲黄色一区| 韩国视频一区二区三区| 国产精品一区2区| 91av在线免费| 成人欧美一区二区三区1314| 国产在线观看99| 91国产精品成人| 国产jzjzjz丝袜老师水多| 精品视频久久久| 黄网站免费在线观看| **欧美日韩vr在线| 欧美在线一级| 久久99久久精品国产| 久久一区二区三区喷水| 无码 制服 丝袜 国产 另类| 日本sm残虐另类| 白嫩情侣偷拍呻吟刺激| 国产精品国产自产拍高清av| 亚洲欧美在线视频免费| 欧美精品在线一区二区三区| 色窝窝无码一区二区三区成人网站| 中文字幕av一区| 国产福利片在线观看| 国产一区欧美二区三区| 欧美a一欧美| 色哟哟免费网站| 日本成人在线不卡视频| av无码一区二区三区| 亚洲欧美日韩精品久久久久| 99精品在线播放| 精品人伦一区二区色婷婷| aaa在线观看| 51视频国产精品一区二区| 视频二区欧美毛片免费观看| 色噜噜狠狠色综合网| 国产精品久久久久9999高清| 欧美一区二区三区影院| 国产精品免费看片| 天堂网免费视频| 亚洲国产私拍精品国模在线观看| 国产丝袜在线| 国产精品中文久久久久久久| 天天久久夜夜| 男人添女荫道口图片| 国产一区二区伦理片| 免费在线观看a视频| 午夜激情一区二区| 亚洲精品成人区在线观看| 久久精品电影网站| 国产一区二区三区四区五区3d| 精品一区2区三区| 欧美~级网站不卡| www.51色.com| 国产精品电影院| 91精品视频免费在线观看| 在线观看91久久久久久| 免费观看一级欧美片| 久久av一区二区三区亚洲| 伊人影院久久| 95视频在线观看| 午夜欧美2019年伦理| 亚洲免费黄色片| 欧美激情视频一区| 国产精品对白| 男女视频网站在线观看| fc2成人免费人成在线观看播放 | 欧美性极品少妇精品网站| 少妇av在线播放| 97在线看福利| 日韩欧美美女在线观看| 色综合久久久久无码专区| 久久五月婷婷丁香社区| 久久精品视频5| 在线日韩日本国产亚洲| 欧美美女福利视频| 水蜜桃在线免费观看| 国产成人免费视频一区| 18精品爽视频在线观看| 亚洲第一级黄色片| 国产99在线观看| 日本中文不卡| 久久国产剧场电影| 少妇影院在线观看| 亚洲的天堂在线中文字幕| 三妻四妾完整版在线观看电视剧| 蜜桃导航-精品导航| 日韩电影一二三区| 男人晚上看的视频| 欧美不卡一区二区三区| heyzo中文字幕在线| 欧美激情视频一区二区三区| 天堂在线一区二区| 欧美视频一区二区在线| 日韩免费性生活视频播放| 成年人在线网站| 天堂社区 天堂综合网 天堂资源最新版 | 久久久久成人精品| 宅男在线一区| 日本77777| 欧美日韩国产丝袜另类| 午夜老司机在线观看| www日韩av| 免费在线亚洲| 老熟妇高潮一区二区三区| 亚洲第一男人av| 欧美va在线| 800av在线免费观看| 久久精品无码一区二区三区| 96亚洲精品久久久蜜桃| 午夜精品福利视频| 91久久电影| 双性尿奴穿贞c带憋尿| 欧美高清激情brazzers| av免费不卡国产观看| 四虎永久国产精品| av动漫一区二区| 国产女主播福利| 国产v综合v亚洲欧美久久| 亚洲无中文字幕| 色欲AV无码精品一区二区久久| 日韩一二三四区| 午夜日韩成人影院| 欧美无砖专区免费|