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

Redis是如何寫代碼注釋的?

數據庫 其他數據庫 Redis
我的工作始于隨機地閱讀Redis源代碼,以檢查注釋是否以及為什么在不同的上下文中起作用。我很快發現,注釋的作用來源于多方面:它們在功能,編程風格,長度和更新頻率方面往往非常不同。

Redis是如何寫代碼注釋的?

許多人認為,如果代碼寫得足夠扎實,注釋就沒什么用了。在他們看來,當一切都設計妥當時,代碼本身會記錄其作用,因此代碼注釋是多余的。我對此持不同意見,主要出于兩個原因:

1、許多注釋并未起到解釋代碼的作用。

2、注釋使讀者不必憑空想象太多細枝末節,幫助讀者降低認知負擔。

注釋的分類

我的工作始于隨機地閱讀Redis源代碼,以檢查注釋是否以及為什么在不同的上下文中起作用。我很快發現,注釋的作用來源于多方面:它們在功能,編程風格,長度和更新頻率方面往往非常不同。我最終轉向了注釋分類。

在研究期間,我確定了九種注釋類別:

* 函數注釋 Function comments

* 設計注釋 Design comments

* 原因注釋 Why comments

* 教學注釋 Teacher comments

* 清單注釋 Checklist comments

* 引導注釋 Guide comments

* 瑣碎注釋 Trivial comments

* (代碼)負債注釋 Debt comments

* 備份注釋 Backup comments

在我看來,前六個主要是非常積極的注釋形式,而***三個有點值得懷疑。在接下來的部分中,我將使用Redis源代碼中的示例分析每種注釋類型。

函數注釋

函數注釋的目標是防止讀者直接閱讀代碼。

在閱讀注釋之后,讀者應該可以將一些代碼視為應遵守某些規則的黑箱子。通常情況下,函數注釋位于函數定義的頂部。

rax.c:

 

  1. / * 在當前節點的子樹中尋找***的key。 
  2.     如果內存不足返回0,否則 返回1. * / 
  3. int raxSeekGreatest(raxIterator * it){ 
  4.     ... 

函數注釋實際上是一種內聯API文檔。如果函數注釋編寫得好,那么用戶在大多數時候能跳回到她正在閱讀的內容(如閱讀調用此類API的代碼),而無需閱讀函數(function),類(class),宏(macro)等的實現過程。

在所有注釋類型中,函數注釋被整個編程界廣泛接受和需要。要分析的唯一一點是:在代碼內部放置以API參考文檔為主的注釋是否是件好事。

對我來說答案很簡單:我希望API文檔與代碼完全匹配。隨著代碼的更改,文檔也得到更改。出于這個原因,我們將函數注釋用作函數或其他元素的序言,使API文檔接近代碼,完成三個任務:

* 隨著代碼的更改,我們可以輕松更改文檔,API參考也不會有過時的風險。

* 這種方法使得更改者(理應是最清楚更改目的的人)在***限度上成為API文檔的更改者。

* 讀者能通過閱讀代碼直接找到函數或方法(method)的文檔,以便閱讀代碼的讀者只關注代碼,而不是代碼和文檔之間的上下文切換。

設計注釋

“函數注釋”通常位于函數的開頭,而設計注釋通常位于文件的開頭。

設計注釋一般說明了給定代碼片段使用某些算法、技術、技巧和具體實現的方式和原因,對代碼中實現的內容進行了更高級別的概述。在這樣的背景下,閱讀代碼會更簡單一些。

bio.c

 

  1. *設計 
  2. ------ 
  3. *設計很簡單,我們用一個結構代表要執行的一項 Job 
  4. *每種Job類型有不同的線程和Job隊列。 
  5. *每個線程都在等待隊列中的新Job,并按照順序處理 
  6. *每個Job。 
  7.  ... 

原因注釋

原因注釋解釋了代碼執行某些操作的原因——即使代碼執行的操作非常明確。請看以下來自Redis replication的代碼 的示例。

replication.c:

 

  1. if(idle> server.repl_backlog_time_limit){ 
  2.  
  3. /* 當我們釋放 backlog時,我們總是使用新的 
  4.  * replication ID并清除ID2。這是 
  5.  * 因為在沒有backlog時,master_repl_offset 
  6.  * 未更新,但我們仍會保留我們的 
  7.  * replication ID,由此導致以下問題: 
  8.  * 
  9.  * 1.我們是一個主實例(master instance)。 
  10.  * 2.我們的副本成為主服務器(Master)。repl-id-2將會 
  11.  *   與我們的repl-id相同。 
  12.  * 3.我們作為主服務器,收到了一些更新命令,但不會 
  13.  *   增加master_repl_offset。 
  14.  * 4.稍后我們將變成副本,連接到新的 
  15.  *   主服務器,它將接受我們第二個副本ID的 
  16.  *   PSYNC請求,但會有數據不一致的情況 
  17.  *   因為我們接受了寫命令。* / 
  18.  
  19. changeReplicationId(); 
  20. clearReplicationId2(); 
  21. freeReplicationBacklog(); 
  22. serverLog(LL_NOTICE, 
  23.     "Replication backlog freed after %d seconds " 
  24.     "without connected replicas."
  25.     (int) server.repl_backlog_time_limit); 

如果我只檢查函數調用,就沒什么需要糾結的:如果超時了就更改主replication ID,清除輔助ID,***釋放replication backlog。

教學注釋

教學注釋不會試圖解釋代碼本身或我們應該注意的某些副作用。教學注釋教授的是代碼運行的“領域”(例如數學,計算機圖形學,網絡系統,統計,復雜的數據結構等),這些信息可能超出了讀者的認知范圍,或者細節多到難以回憶。

版本5中的LOLWUT命令需要在屏幕上顯示旋轉的方塊。為了做到這一點,它使用了一些基本的三角函數:盡管涉及的數學內容很簡單,但許多閱讀Redis源代碼的程序員可能沒有任何數學背景知識,因此函數頂部的注釋解釋了該函數的原理。

 

  1. /* 
  2. * 繪制一個以指定的x,y坐標為中心的正方形 
  3. * 旋轉角度和大小已定。為了寫出旋轉方塊的代碼,我們使用了 
  4. * 參數方程: 
  5. * x = sin(k) 
  6. * y = cos(k) 
  7. * 繪制一個圓(0-2*PI)。然后,如果我們從45度 
  8. * 開始,即k = PI / 4,以此作為***個點,然后我們發現 
  9. * 其他三個點的K值以PI / 2(90度)遞增,于是我們得到 
  10. * 了構成一個圓的點。為了旋轉方塊,我們從 
  11. * k = PI / 4 + rotation_angle開始,然后我們就完事兒了。 
  12. * ...... 
  13. * / 

注釋不包含任何與函數本身的代碼,或其副作用,或與函數相關的技術細節等內容。注釋描述的部分僅限于函數內部使用以達到給定目標的數學概念。

清單注釋

這是一個非常常見且奇怪的問題:有時由于語言限制,設計問題,或者僅僅因為系統內部固有的復雜性,我們無法將某個概念或界面集中在一個代碼片段中,因此代碼中有一些部分能提醒你在代碼的某個部分做某件事。一般概念是:

 

  1. / * 警告:如果你在此處添加類型ID,請務必修改 
  2.  
  3.    * getTypeNameByID()函數。* / 

 

在一個***世界中,我們永遠不需要添加這類注釋;但在實踐中有時沒法省略這一步。

在這種情況下,防御性注釋有時能起作用:如果你修改了某節代碼,它會提醒你修改代碼的其他相關部分。具體而言,清單注釋會發揮以下一種作用(或者兩種兼而有之):

* 告訴你在修改某些內容時要執行的一系列操作。

* 警告你應該如何進行某些更改。

引導注釋

我濫用引導注釋到這種程度:Redis中的大多數注釋都是引導注釋。然而,引導注釋正是大多數人認知中那類完全無用的注釋:

* 他們沒有說明代碼中不甚明了的內容。

* 指導注釋不提供有關設計方面的提示。

引導注釋只做了一件事:他們照顧了讀者的需求,在讀者處理源代碼中的內容時提供明確的劃分(division)和節奏(rhythm),并介紹接下來需要閱讀的內容。

rax.c

 

  1. / *調用節點回調(如果有的話),如果回調返回true 
  2.   *則替換節點指標* / 
  3. if (it->node_cb && it->node_cb(&it->node)) 
  4.     memcpy(cp,&it->node,sizeof(it->node)); 
  5.  
  6. /*對于“下一步”,每次找到一個鍵就停止 
  7. *一次,因為相比較后面子節點分支中的內容 
  8. *鍵本身字典序較小。* / 
  9. if (it->node->iskey) { 
  10.     it->data = raxGetData(it->node); 
  11.     return 1; 

Redis內“實際上”充滿了引導注釋,所以基本上你打開的每個文件都會包含很多引導注釋。為什么要費這個力氣呢?在這篇博客文章中所分析的所有注釋類型中,這絕對是最主觀的一種。我并不覺得沒有引導注釋的代碼就不是好代碼。但我堅信,如果人們認為Redis代碼是可讀的,部分原因就在于其中的引導注釋。

引導注釋還有一些別的用處。因為它們明確地將代碼劃分為獨立的部分,所以我們能在合適的位置插入新代碼,而不是隨便加在其他代碼后面。在代碼附近設置相關語句能大大提高可讀性。

引導注釋能簡要地告訴讀者函數將要執行什么操作,所以如果你只對大框架感興趣,則無需回過頭去閱讀函數。

瑣碎注釋

引導注釋是非常主觀的工具。不管你喜不喜歡,我反正超愛引導注釋。

然而,引導注釋可能會退化為極其糟糕的注釋:它很容易變成“瑣碎注釋”(trivial comment)。

瑣碎注釋這種引導注釋所帶來的認知負荷和僅閱讀相關代碼比起來相差無幾,甚至可能更高。以下這種瑣碎注釋正是許多書籍規勸你避免的。

array_len ++; / *增加數組的長度。* /

因此,如果你寫引導注釋的話,請避免寫瑣碎注釋。

(代碼)負債注釋

負債注釋是源代碼內部硬編碼的技術債務語句:

 

  1. entries -= to_delete; 
  2. marked_deleted += to_delete; 
  3. if (entries + marked_deleted > 10 && marked_deleted > entries/2) {     
  4.   / * TODO:執行垃圾收集操作。* / 

FIXME,TODO,XXX,“這是一個黑客”,這些都是負債注釋。總的來說這些注釋不算好,我試圖避免使用它們,但看起來不太可能。有時候,比起永遠忘記一個問題,我更喜歡在源代碼中放置一個節點。程序員至少應該定期查看這些注釋,看看是否可以能改進一下表述,或者這些問題是否已不再相關或可以立即解決。

備份注釋

備份注釋是開發人員對某些代碼塊的舊版本甚至是整個函數做出的注釋,因為他/她對新版本中運行的更改放不下心。令人費解的是,現在有了Git,人們卻還在使用這類注釋。我想人們對于丟失代碼片段有一種不安全感,過去提交代碼時,使用備份注釋會顯得更加理智可靠。

但源代碼并不是用來備份的。如果你需要保存舊版本的函數或代碼,說明你的工作尚未完成,也無法提交。要么確保新函數比過去的更好,要么只在開發樹(development tree)中使用它,直到你確定為止。

備份注釋是我分類中的***一項。我們來做個總結。

總結

注釋是和未來的代碼讀者聊天,讀者們還能在Twitter上評價你的注釋。所以在這個過程中,你真心地在審視自己所注釋的內容是否“能讓人接受”,看自己寫得是否足夠體面、足夠好。如果不是,你就勤勤懇懇地再做一遍,拿出更好的注釋來。

你可能認為編寫注釋不是個高端工作。畢竟你“會寫代碼”!但請考慮這一點:代碼是一組語句和函數調用(或者你做的其他編程范例也一樣)。如果代碼寫得不好,這些語句就沒有多大意義。注釋常常要求你進行一些設計過程,并從更深層次來理解你正在編寫的代碼。

最重要的是,為了寫出好的注釋,你必須培養自己的寫作能力。這種寫作技巧能幫你更好地編寫電子郵件、文案、設計文檔、博客文章和提交文件。

我寫代碼是因為我迫切想要與他人溝通交流、分享想法。注釋能夠為代碼提供幫助,把作者的心血表現出來。說到底,我喜歡寫注釋,就像我喜歡寫代碼一樣。

注:英文原文太長,翻譯后有刪減。 

責任編輯:龐桂玉 來源: 快資訊
相關推薦

2013-05-02 09:36:44

代碼項目

2015-05-21 10:43:36

工程師如何寫代碼

2020-12-14 08:17:50

代碼

2024-10-29 09:25:00

2011-05-26 09:39:53

程序

2010-01-04 10:07:03

程序員

2020-07-15 08:17:16

代碼

2014-11-26 14:46:47

代碼

2020-05-11 15:23:58

CQRS代碼命令

2021-09-01 08:55:20

JavaScript代碼開發

2013-06-07 14:00:23

代碼維護

2021-11-30 10:20:24

JavaScript代碼前端

2022-12-06 09:03:44

代碼fork系統

2022-02-17 10:05:21

CSS代碼前端

2021-10-13 08:16:14

SQL 代碼系統

2022-02-08 19:33:13

技巧代碼格式

2021-01-04 07:57:07

C++工具代碼

2019-09-20 15:47:24

代碼JavaScript副作用

2020-05-19 15:00:26

Bug代碼語言

2020-12-19 10:45:08

Python代碼開發
點贊
收藏

51CTO技術棧公眾號

国产免费成人在线视频| 亚洲高清资源| 欧美日韩成人综合在线一区二区| 午夜一区二区三视频在线观看| 一级片在线免费观看视频| 欧美另类女人| 亚洲色图50p| 69久久精品无码一区二区 | 国产精品videossex久久发布| 欧美日韩免费观看中文| 亚洲精品视频一区二区三区| 蜜臀av中文字幕| 日韩国产精品91| 欧美高清不卡在线| 9.1片黄在线观看| **爰片久久毛片| 欧美性生活大片视频| 99久久久精品视频| 在线观看av的网站| 成人国产视频在线观看| 国产精品永久在线| 在线天堂中文字幕| 欧美在线看片| 中文字幕在线成人| 中文字幕丰满孑伦无码专区| 日韩在线观看中文字幕| 欧美三级日韩在线| 人妻内射一区二区在线视频 | 成年人黄色片视频| 免费看电影在线| 1区2区3区欧美| 欧美下载看逼逼| 天堂网av2014| 成人久久久精品乱码一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看 | 国产精品sss| 91国偷自产中文字幕久久| 亚洲精品视频啊美女在线直播| 久久亚洲国产成人| 欧美福利第一页| 亚洲人成网77777色在线播放| 精品国产露脸精彩对白| 日本在线观看视频一区| 日本中文字幕视频一区| 欧美三日本三级三级在线播放| aa在线免费观看| h片视频在线观看| 亚洲国产精品影院| 欧美一级视频在线播放| 日本中文字幕中出在线| 樱花影视一区二区| 黑人巨茎大战欧美白妇| 国产欧美黑人| 亚洲精品一卡二卡| 久久久99精品视频| 色呦呦在线资源| 亚洲精品免费播放| 激情五月六月婷婷| 免费电影视频在线看| 亚洲国产成人av网| 久激情内射婷内射蜜桃| 成人在线黄色电影| 欧美视频在线免费| 日本精品www| 欧美va在线| 欧美日韩久久一区| 日韩a一级欧美一级| 亚洲精品18| 亚洲成色www8888| 黄色工厂在线观看| 国产一区毛片| xvideos亚洲人网站| 成年人av电影| aa亚洲婷婷| 国产91色在线免费| 中文字幕精品无码亚| 黑人巨大精品欧美一区| 99c视频在线| 少妇一级淫片免费看| 久久天天做天天爱综合色| 日韩电影大全在线观看| 最新黄网在线观看| 偷拍亚洲欧洲综合| 亚洲第一中文av| 精品一区二区三区视频在线播放| 精品国产一区二区在线观看| 一二三不卡视频| 99精品全国免费观看视频软件| 九九精品视频在线观看| 国产成人在线免费视频| 美女视频黄 久久| av资源一区二区| 酒色婷婷桃色成人免费av网| 中文字幕一区二区日韩精品绯色| 韩日视频在线观看| 欧美日韩视频免费观看| 91精品国产91久久久久久最新毛片| youjizz.com国产| 色狮一区二区三区四区视频| 国内精品视频一区| 亚洲熟女乱色一区二区三区久久久| 国产成人福利片| 日本不卡二区高清三区| 欧洲黄色一区| 欧美日韩色一区| 中国一级特黄录像播放| 日韩欧美网址| 欧美一级电影在线| 国产肥老妇视频| 国产欧美一二三区| 91免费黄视频| 国产激情综合| 亚洲视频777| 国产一级视频在线| 久久国产综合精品| 久久精品综合一区| 亚洲精品白浆| 91精品综合久久久久久| 三上悠亚影音先锋| 亚洲激情一区| 亚洲专区国产精品| 午夜小视频在线| 欧美性高潮在线| 精品人妻一区二区免费| 雨宫琴音一区二区三区| 国产成人精品av在线| 丰满人妻熟女aⅴ一区| 国产精品国产三级国产| 美女黄色片视频| 妖精视频一区二区三区| 国内伊人久久久久久网站视频| 国产精品久久久久久免费 | 免费在线小视频| 欧美一级精品大片| 911国产在线| 美女视频网站久久| 亚洲视频sss| 九九九伊在线综合永久| 亚洲欧美日韩国产中文| 日韩精品一区二区亚洲av| 成人精品免费网站| 欧美国产视频一区| 波多野结衣欧美| 欧美国产精品va在线观看| 国产熟女一区二区三区四区| √…a在线天堂一区| 黄色在线视频网| 成人免费在线播放| 国产精品亚洲欧美导航| jyzzz在线观看视频| 欧美性一级生活| 免费看的黄色网| 热久久一区二区| 四虎影院一区二区三区| 国产亚洲精彩久久| 日韩在线不卡视频| 国产熟女精品视频| 亚洲一区二区综合| 亚洲调教欧美在线| 亚洲欧美网站| 区一区二区三区中文字幕| 色8久久影院午夜场| 中文字幕日韩精品有码视频| 夜夜爽8888| 一区二区三区在线看| 亚洲精品久久一区二区三区777 | 色橹橹欧美在线观看视频高清| 91精品国产乱码久久久久久久久| 午夜视频免费在线| 日本高清成人免费播放| 天天爽天天爽天天爽| 国产精品夜夜爽| av女优在线播放| 色综合综合网| 国产日韩av在线播放| 三级资源在线| 亚洲精品国精品久久99热| 加勒比在线一区| ㊣最新国产の精品bt伙计久久| 无码人妻一区二区三区免费n鬼沢| 99热免费精品在线观看| 日韩欧美一区二区三区四区| 91精品国产一区二区在线观看| 欧美激情一区二区三区成人| 免费在线稳定资源站| 在线成人高清不卡| 欧美亚洲天堂网| 中文字幕不卡的av| 无码人妻一区二区三区精品视频 | 亚洲天堂中文字幕| 中国黄色片视频| 蜜桃视频一区二区三区在线观看| 亚洲激情免费视频| 精品国产一区探花在线观看| 97神马电影| 桃花岛成人影院| 欧美激情精品久久久久久变态| 极品美乳网红视频免费在线观看| 91精品欧美久久久久久动漫| 九九九在线观看| 亚洲精品亚洲人成人网在线播放| 极品白嫩丰满美女无套| 国产在线视视频有精品| 国产xxxxx在线观看| 中文视频一区| 图片区小说区区亚洲五月| 999久久久精品一区二区| 国产欧美日韩综合精品| 一区二区电影免费观看| 欧美老女人性视频| 在线免费看黄网站| 日韩精品亚洲精品| 亚洲伦理在线观看| 欧美日韩一区二区在线观看视频| 99视频在线看| 亚洲综合在线视频| 国产3级在线观看| 久久精品人人做人人爽人人| 欧美xxxxx少妇| 国产在线播放一区| 国产视频手机在线播放| 免费日韩一区二区| 日本韩国欧美在线观看| 欧美午夜久久| 亚洲精品偷拍视频| 99久久亚洲精品蜜臀| 欧美激情视频一区二区三区| 国产日韩三级| y111111国产精品久久婷婷| 国产精品一区免费在线| 国产女人精品视频| 成人黄色免费网站| 国产精品福利在线观看网址| 一根才成人网| 日本高清久久天堂| 中文在线资源| 欧美最近摘花xxxx摘花| 黄频免费在线观看| 97精品伊人久久久大香线蕉| 久久不射影院| 久久久欧美一区二区| 色帝国亚洲欧美在线| 欧美第一黄色网| av电影免费在线观看| 另类少妇人与禽zozz0性伦| 国产理论在线观看| 日韩视频在线免费| 亚洲妇熟xxxx妇色黄| 欧美日韩成人精品| av资源一区| 91国产一区在线| 中文字幕成在线观看| 人人做人人澡人人爽欧美| 久久91导航| 国产精品视频免费在线观看| 一区二区三区无毛| 亚洲精品日韩av| 成人动态视频| 久久精品丝袜高跟鞋| 欧美日韩在线二区| 偷拍盗摄高潮叫床对白清晰| 91精品国产91久久久久久黑人| 黄色片免费在线观看视频| 黄色在线成人| 99色精品视频| 日韩va欧美va亚洲va久久| 天天干天天av| 高清国产一区二区| 青青草视频成人| 亚洲国产精品99久久久久久久久| 强制高潮抽搐sm调教高h| 一区二区三区四区av| 粉嫩aⅴ一区二区三区| 在线中文字幕一区二区| 91久久国语露脸精品国产高跟| 日韩欧美不卡在线观看视频| 亚洲 欧美 自拍偷拍| 丝袜亚洲欧美日韩综合| 在线中文免费视频| 欧洲精品久久久| 亚洲欧美在线综合| 国产欧美日韩综合精品二区| 国产一区三区在线播放| www.国产二区| 日本欧美在线看| 伊人影院在线观看视频| 久久日一线二线三线suv| 亚洲国产123| 精品久久久在线观看| 一级特黄录像免费看| 亚洲电影在线观看| 最近高清中文在线字幕在线观看| 九九热视频这里只有精品| 国偷自产一区二区免费视频 | 欧美精品中文| 亚洲一区二区精品在线观看| 影音先锋国产精品| 午夜两性免费视频| 99久久久久久| 国产探花在线免费观看| 色综合久久久久综合99| 成人高潮片免费视频| 在线精品91av| a毛片不卡免费看片| 91影院在线免费观看视频| 羞羞色国产精品网站| 国产高清不卡无码视频| 日韩成人伦理电影在线观看| 成人午夜精品无码区| 最好看的中文字幕久久| www.亚洲激情| 日韩精品久久久久久福利| 污影院在线观看| 国产美女91呻吟求| 女优一区二区三区| 高清欧美精品xxxxx| 国产麻豆成人精品| 国产精品久久久久久久av| 午夜精品久久久久久久99樱桃| 99久久久国产精品无码免费| 国产亚洲视频在线观看| 三妻四妾的电影电视剧在线观看| av免费精品一区二区三区| 国产精品精品| 91女神在线观看| 久久免费看少妇高潮| 日日夜夜综合网| 亚洲精品99999| 欧美人与动牲性行为| 亚洲综合av影视| 欧美肥老太太性生活| 一道本视频在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲午夜18毛片在线看| 精品视频在线播放免| 最新日韩精品| 快播亚洲色图| 久久一综合视频| 超碰97人人干| 日韩欧美国产一区二区| 日本成人一区二区三区| 欧美一性一乱一交一视频| 加勒比视频一区| 久久黄色片视频| 2023国产精品| 国产一卡二卡三卡| 永久555www成人免费| 欧美日韩尤物久久| 亚洲v国产v在线观看| 免费成人av在线播放| 亚洲熟女毛茸茸| 欧美男生操女生| 成人黄色网址| yellow视频在线观看一区二区| 亚洲视频狠狠| 久久午夜夜伦鲁鲁片| 日本高清成人免费播放| 日韩三级影院| 亚洲一区美女视频在线观看免费| 亚洲视频碰碰| 亚洲久久久久久| 日韩欧美在线网址| 18免费在线视频| 亚洲综合色av| 亚洲日产国产精品| 级毛片内射视频| 欧美精品 日韩| а_天堂中文在线| 欧美精品久久久| 久久97超碰色| 久久精品欧美一区二区| 亚洲精品久久久久久久久久久久久| 成人美女黄网站| 正在播放国产精品| 床上的激情91.| 你懂的国产在线| 日韩视频免费看| 国产精品丝袜在线播放| 久久久久久久久久久免费视频| 亚洲欧美一区二区在线观看| 好吊色在线观看| 日韩av123| 欧美在线三区| jizz欧美性20| 日韩欧美国产综合在线一区二区三区| 成人免费观看在线观看| 在线码字幕一区| 99久久精品国产网站| 亚洲天堂狠狠干| 97在线视频一区| 亚洲精品99| x88av在线| 欧美tk丨vk视频| 草民电影神马电影一区二区| 91九色丨porny丨国产jk| 欧美国产成人精品| 天天操天天射天天舔| 成人在线视频网| 久久亚洲色图| 国产精品成人免费一区二区视频|