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

干貨分享:六大招教你有效進行代碼 Review

新聞 前端
研發同學都知道代碼 Review 的重要性,在騰訊代碼 Review 也越來越受大家重視,作為騰訊專有云平臺研發的一員,我參與了大量的代碼 Review,明顯地感受到有效的代碼 Review 不但能提高代碼的質量,更能促進團隊溝通協作。

 [[349706]]

研發同學都知道代碼 Review 的重要性,在騰訊代碼 Review 也越來越受大家重視,作為騰訊專有云平臺研發的一員,我參與了大量的代碼 Review,明顯地感受到有效的代碼 Review 不但能提高代碼的質量,更能促進團隊溝通協作,建立更高的工程質量標準,無論對個人還是團隊都有著重要的價值。本文就為什么要做代碼 Review 以及如何有效地做代碼 Review 分享一下個人的看法。

為什么要做代碼 Review

為什么要代碼 Review,相信每個人心中都有比較一致的答案,Google 搜索一下也能找到一大堆的文章。這里簡單總結幾點:

1)提高代碼質量

這是代碼 Review 的初衷,也是代碼 Review 最直接的價值。Reviewers 根據各自的經驗,思考方式,看問題的角度給代碼提出各種可能的改進意見,從而形成更好的代碼以及產品質量。

我們知道產品問題越晚提出解決它的代價就越大,參與進去的人、要走的流程都會越來越多。代碼 Review 可以說是早期解決問題最有效的途徑之一了,在代碼 Review 中解決掉哪怕一個小問題都能避免后續一堆的麻煩事。

2)形成團隊統一的高質量標準

有效的代碼 Review 最終會在團隊范圍內建立起統一的質量標準,并且會隨著團隊成員的互相學習和促進形成更高的標準。參與者會在代碼 Review 的過程中基于具體問題從不同角度提出改進意見,并最終做出當前最佳的選擇并形成共識。隨著代碼 Review 的有效進行,團隊成員會有意識地關注代碼質量,從而形成越來越高的事實上的質量標準。

3)個人快速成長

通過有效的代碼 Review,Author 和 Reviewer 都將獲得成長,在 Review 過程中參與人就具體的問題展開深入的討論,無論是怎么寫出整潔的代碼、怎么更好地更全面地思考問題、怎么最佳地解決問題,參與人都可以互相取長補短,互相提高。通過具體代碼實現進行的討論往往是最深入和有效的,代碼 Review 是開發者提高代碼能力最重要的途徑之一。

有的人認為代碼 Review 就是 Reviewer 幫助查找代碼中的 Bug,其實代碼 Review 不應該是一個單向的過程,而應該是個雙向交流的過程,Reviewer 幫助 Author 提出代碼改進意見的同時,也是向優秀的 Author 學習的過程。我們都知道提高代碼能力一個有效的途徑是閱讀優秀的項目代碼,但是閱讀項目代碼有著不小的難度,這也是大部分人沒有去執行的原因,而 Review 資深同事的代碼,我們在閱讀代碼的同時能夠直接進行有效的溝通,這是一個快速有效的學習途徑,尤其對開發經驗還不算豐富的開發者而言。

如何做好代碼 Review

2.1. 第一招:什么時候發起 Review

在代碼 Review 上,Author 需要意識到:Reviewer 的時間是昂貴的。因此在正式邀請 Reviewer 發起代碼 Review 前,Author 有幾項需要注意的點,這些都能提高代碼 Review 的效率,節省 Reviewer 的時間。

2.1.1. MR (Merge Request)

也稱為 PR(Pull Request), MR 是我們進行代碼 Review 的地方,它記錄著代碼的具體改動,參與者具體的討論過程。好的 MR 應該做到以下幾點:

  • 單一:一個 MR 應該只解決一個單一的問題,無論是修復一個 bug,還是實現一個新 feature。Author 應該避免一個 MR 包含不同意圖的代碼改動。單一的 MR 能幫助 Reviewer 快速地了解代碼改動的動機,能有針對性地進行 Review。
  • 短小:MR 應該盡量地小,比如一個 feature 引入了較多的改動,需要考慮是否可以拆成獨立的幾塊實現,分開提 MR,比如接口定義、接口實現、邏輯對接等拆分開。
  • 詳細: 這里說的詳細是指 MR 應該盡可能地詳細描述它的背景和動機,可以是在 MR 的描述中詳細體現,也可以是連接到具體 issue 或 tapd 單中。需要達到的目的是,其他人翻開一個 MR 能知道當時做這個改動的背景以及動機。

2.1.2. Commit Message

之前翻看了不少現存的項目代碼,看到不少的 Commit Message 寫得比較簡單,例如一連串的 "update", "fix",從這些 Commit Message 中完全看不出做了什么改動,想想如果之后想要定位之前的某個改動,該從哪里下手。

目前 Commit Message 規范比較常見的有 Angular 團隊的規范,并由此衍生出了 Conventional Commits Specification,可以參照此 Specification 約定 Commit Message 格式規范。

  1. <type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer> 

大體分三行:

  • 【標題行】 必填, 描述主要修改類型和內容。
  • 【主題內容】 描述為什么修改, 做了什么樣的修改, 以及這么做的思路等等。
  • 【頁腳注釋】 放 Breaking Changes 或 Closed Issues

其中 type 是 Commit 的類型,可以有以下取值:

  • feat:新特性
  • fix:修改 bug
  • refactor:代碼重構
  • docs:文檔更新
  • style:代碼格式修改
  • test:測試用例修改
  • chore:其他修改, 比如構建流程, 依賴管理

其中 scope 表示的是 Commit 影響的范圍,比如 ui,utils,build 等,是一個可選內容。

其中 subject 是 Commit 的概述,body 是 Commit 的具體內容。

例如:

  1. fix: correct minor typos in codesee the issue for details on typos fixed.Refs #133 

Commit Message 可以在 git 中配置模板,這樣可以在 vim 中展示出模板,另外可有工具幫助我們生成和約束 Commit Message,例如 commitizen/cz-cli,這里不再具體說明。

2.1.3. CI 通過

CI(Continuous Integration),持續集成可以幫助我們自動發現很多代碼中的基本問題,在合適的靜態代碼檢查(lint)配置和良好的單元測試覆蓋下,CI 可以有效地提高代碼的質量。很多人都低估了靜態代碼檢查的能力,實際上現在常見語言的靜態代碼檢查已經能幫助發現不少的 bug 和隱患。對于 Go 語言,可以配置 golangci-lint 來做代碼檢查,單元測試根據實際情況可以制定相應的標準,比如覆蓋率 60%,其中關鍵的代碼邏輯盡量全面覆蓋。

提交代碼 Review 前需要確保 CI 執行通過,這也是為了節省 Reviewer 的時間,能夠通過自動化解決的事情,盡量不要讓 Reviewer 來做,而 Reviewer 發現 CI 未過的 MR 也可以要求 Author 先解決 CI 問題。

2.1.4. Self-Review

我們一般代碼 Review 都是找他人來進行 Review,其實負責任的 Author 在邀請他人來代碼 Review 前也需要自己簡單 Review 一遍,即 Self-Review。

Self-Review 的目的包括:

  • 發現那些明顯的疏忽,如代碼 debug 過程中留下的不必要的痕跡,比如 fmt.Println(...),不小心注釋掉的代碼。
  • 之前被 Reviewer 多次提出過的問題。
  • Commits 是否正常,在多人協作的情況下 MR 中否帶入了不相關的 Commit。
  • Commit Message 是否合適。

Self-Review 是一個非常快速的過程,從我個人的經驗,一般 1-2 分鐘即可完成,所以推薦大家養成 Self-Review 的習慣。

2.2. 第二招:該找誰來 Review

從目的出發,可以從以下幾方面考慮 Reviewer:

  • 提高代碼質量。所以首先應該找和代碼改動緊密相關的研發人員參與 Review,比如一起開發某個功能,某個項目,或者一起參與了方案設計討論并給出了有價值意見的研發。
  • 獲取意見。找有相關經驗的資深研發幫忙 Review,比如 Java 語言資深的研發、寫過相同或類似系統/功能的研發。
  • 形成共識。如果涉及到不同團隊或模塊間的接口改動,或其他會影響其他人的改動,可以邀請相關團隊或模塊的接口人參與 Review,以對改動形成共識。
  • 質量把關。對于重要的代碼庫,可能會執行比較嚴格的質量把控,如果設置了必須的 Reviewer,這些 Reviewer 也會參與進來。
  • 變動告知。很多情況下一個代碼庫可能只有一個人維護,如果做了些比較特殊的變動,其他人很難發現。因此在做一些重要的但是理解起來不那么直接的地方的時候,最好告知一下相關的研發,以便他們能大概知道發生了什么。

2.3. 第三招:都 Review 些什么

經常會有 Reviewer 拿到 MR 不知道該 Review 些什么,其實無論你參與對應項目的深入如何,都可以對代碼進行 Review,也鼓勵不同人從不同的深度、角度去幫助 Review。代碼 Review 沒有固定的形式,它更像是一門藝術,唯一的提高辦法就是實際參與進去。

Review 的時候可以從以下幾個方面入手:

1)簡單的 Review

在 CI 通過的情況下,最簡單的 Review 方式可能只需要這樣:

Reviewer:在實際環境中都驗證過了嗎?
Author:當然驗證過了
Reviewer:LGTM

這是一種提醒式的 Review。確認一句:是否在環境中驗證過了,或者進一步把能想到的重要的驗收點提出來確認一遍。即使是這種最簡單的 Review 實際上也是有價值的,我們很難保證所有研發都會在提 MR 前實際在環境中驗證自己所做的修改,也很難保證單元測試、e2e 測試能 Cover 住所有的情況,Reviewer 基本上也不可能都自己去環境上跑一遍。讓 Author 去確認實際上就是提醒 Author 去確保改動至少是真實有效的,尤其是對一些已發布版本的 Bugfix,一定要提醒實際自測通過。

類似的提醒還包括:相關的文檔(外部的)是否相應更新了、這個改動是否會有兼容性的問題、性能是否有影響。他們的本質就是提醒 Author 自己去思考他們可能遺漏的問題。

2)常規的 Review

代碼 Review 一般都會從代碼風格、變量命名、語法統一處入手,當然這些應該更多的借助于 CI 等自動化手段來保證,但是在相關流程還不是很完善的前提下還是有必要進行關注。

此外代碼可讀性、代碼健壯性、代碼可擴展性都是 Review 時關注的點。每一個關注的點都依賴于 Reviewer 的實際經驗,這里只簡單舉幾個例子:

{ 代碼可讀性 }

代碼是寫給人看的,因為沒有不需要維護的代碼,無論是 Author 自己后續維護代碼,還是他人接手代碼,能快速地理解代碼邏輯是非常必要的。

代碼 Review 的時候可以關注以下幾點:

  • 變量、方法的命名是否合適,是否真實反映了他們的目的,這方面網上可以找到不少的資料說明。
  • 實現的邏輯是否已有現成的庫可以替代。如果有成熟的庫可以使用,盡量不要自己去實現,因為可能會引入不必要的 bug。從我個人的角度,簡潔(大白話就是代碼少)是可讀性一個很重要的指標。
  • 關于注釋。代碼注釋不求多,而在于有效,以前也經歷過代碼注釋要求至少達到 30% 以上的年代,現在看來過多依賴注釋其實是對代碼質量的不自信,好的代碼應該盡量做到自解釋。在實際過程中偶爾能看到代碼邏輯實際已經清晰明了,但是用語句不怎么通的英文注釋了一通,最后反而是看懂了代碼才能理解注釋到底說了啥。因此 Review 的時候,不必要的注釋可以建議去掉。
  • 不好理解的地方要有恰當的注釋。代碼中如果有特殊處理、特殊的常量、或者不符合一般用法的邏輯需要特別注釋說明一下。
  • 代碼的組織。良好的代碼應該有較好的封裝以及層級,使得代碼看起來清晰明了,比如 DAO 層、Service 層。

{ 代碼健壯性 }

  • 代碼的改動是否會影響其他功能。
  • 用戶參數是否做好細致的校驗。
  • 有沒有 Panic 的可能(針對 Go 的說法)。
  • 是否會破壞 API 的兼容性。

{ 可擴展性 }

當前的實現方式是否能兼容以后類似的擴展需求。比如在新增接口、API 或者調整參數以解決某一問題上,可以考慮是否后續會有其他類似情況發生。舉幾個例子:

  • 假設我們需要定義一個 API 接口去獲取一個用戶的某些信息,例如聯系方式等,我們定義的 API 就不能只返回這些信息,而是應該把用戶相關的信息都返回。
  • 假設我要定義一個參數,雖然當前定義成單個元素即可滿足,例如 string, int,但是以后是否會涉及到多個元素的場景,是否定義成 []stirng, []int 是更優的。

這里只是舉了有限的一些例子,在實際 Review 過程中,Reviewer 可以根據自身的經驗從各個角度提出優化的意見。一般需要重點看看:

  • 你看不懂或疑惑的地方。
  • 打破你常規的地方。
  • 復雜的地方。

2.4. 第四招:如何進行

Review 過程中鼓勵 Reviewer 大膽 Comment,有不理解的地方,或者覺得不合適的地方都直接表達出來,Author 對 MR 的 每個 Comment 也要做出反饋,無論是展開討論還是簡單的給個 OK 都是有效的反饋。

Review 的過程可以是:

  • Author 在各項確認工作完成后,發起 Review,如果比較急,可以給重要的 Reviewer 發消息請求幫忙 Review。
  • Reviewer 看到 MR 后應該先確認 MR 的背景和目的,如果不清楚也無法從 MR 中獲取該信息,最好直接和 Author 溝通。
  • Reviewer 直接在 MR 上提出自己的建議或者問題。
  • Author 對每個 Comment 進行反饋,并展開必要的討論。
  • 復雜的話題可以采用線下討論以提高溝通效率。
  • Author 處理完了所有的 Comment,也修改了代碼后,需要在 MR 里 @ 一下相關 Reviewer 告知所有優化已經提交,如果時間比較急也可以直接和 Reviewer 溝通。
  • Reviewer 確認沒問題,給 MR 進行 Approve,一般簡單的回復是 LGTM(Lood Good To Me),也可以對 Author 的工作進行贊賞,比如 “God Job” 等。
  • Approve 后 MR 由誰來合并這個看自己選擇。
  • 如果 Reviewer 提供了很多有用的建議幫助優化代碼,Author 也可以禮貌性地感謝一下 Reviewer。

2.5. 第五招:關于 Comment

代碼 Review 很大程度上就是給代碼挑毛病,而且一般預期挑的越多越好,但代碼是 Author 寫的,很多情況下或多或少會對 Author 造成不適。所以在 Comment 的時候需要盡量注意措辭,尤其是一些主觀的東西,一般以建議的方式給出。當然對于原則性的問題,是要堅守質量標準的,甚至可以直接 Deny 掉 MR。

另外,參與者也不要吝嗇你的溢美之詞,無論是 Author 還是 Reviewer,在 Review 中發現了好的地方或好的建議,請給予對方以肯定和贊美,這樣有助于 Review 有效的進行。

2.6. 第六招:參與者該抱著怎樣的心態

2.6.1. Author

首先需要明確一點,是 Author 自己對代碼的質量負責,因此應當懷著感恩的心去看待堅持認真幫你 Review 代碼的 Reviewer,因為并不是所有你加的 Reviewer 都有時間和精力來幫你提高代碼質量。

也正是因為 Author 是自己代碼的 owner,所以不要依賴于 Reviewer 去幫你守代碼質量的大門,像 “代碼 Review 的時候你怎么就沒看出來”,“這不是你建議我這么做的嗎” 這樣的話千萬別說。Reviewer 只是幫你提高代碼質量,因此我們該做的工作都要去做,比如細致的 Reviewer 可能某些情況下直接提出了代碼優化的建議,Comment 時貼上了優化的代碼片段,Author 不能直接假設它一定是能正常工作的,而應該對它進行完整的驗證。

對 Reviewer 給出的 Comment,不要有抵觸的情緒,對你覺得不合理的建議,可以委婉地進行拒絕,或者詳細說明自己的看法以及這么做的原因。有時候一個你覺得不合理的建議可能代表一個新的思考角度,也可能代表 Reviewer 自身代碼能力上的不足,無論是哪個,無論最終是 Author 還是 Reviewer 得到了提高,都應該是好事。

2.6.2. Reviewer

Review 代碼既是幫助提高代碼質量的過程,也是 Reviewer 提高自己代碼能力和溝通能力的過程。因此應該在 Review 的同時保持一個學習者的心態,既要發現對方代碼中的缺陷,也要努力去發現代碼中的亮點。切忌單純以挑毛病的心態去 Review 代碼。

有不少 Reviewer 在寫 Comment 的時候會猶豫,擔心自己提出的問題或建議比較“蠢”,因此猶猶豫豫下看完了代碼抱著一堆疑慮最終啥也沒留下。其實在代碼 Review 的時候大可不必有什么心里負擔,有什么疑惑的、不清楚的地方或者有什么自己的想法,可以直接提出來,有時候一個簡單的 Comment 就可能會激起 Author 和你的 Comment 毫不相干的新思路。再者你即使沒幫 Author 提高代碼,讓 Author 幫你提高思考不也是件不錯的事情嗎。

Reviewer 也不需要去關注自己的“產出”,并不是一定要提出一堆問題才是好的代碼 Review,Author 代碼寫得很棒也是很正常的,如果從你的角度覺得代碼沒問題,大膽給個 LGTM 甚至是 Approve。

責任編輯:張燕妮 來源: 騰訊技術工程
相關推薦

2018-02-06 09:25:35

數據分析分析方法分析工具

2010-03-30 11:29:08

BMCCMDBIT運維

2023-08-31 22:12:51

低代碼隱患技術

2014-03-19 09:13:54

2010-12-08 11:46:34

職場

2023-09-06 08:30:00

低代碼自動化開發

2010-10-19 14:57:25

谷歌云計算

2022-05-17 07:33:56

云環境策略云服務

2009-08-25 09:29:18

維護代碼

2023-10-18 10:48:44

Python解釋器

2010-07-30 13:15:17

Flex優勢

2010-12-02 11:12:41

職場

2012-03-02 09:18:30

ISACA云計算

2010-09-25 15:22:19

DHCP故障處理

2024-10-22 14:42:14

2010-08-16 10:14:23

云計算誤區

2022-03-07 14:10:13

云數據倉庫云遷移云原生

2015-08-18 09:02:37

2009-02-13 09:51:43

程序員職業素養團隊

2021-08-12 14:31:52

邊緣計算云計算數據
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品va| 五月天久久比比资源色| 亚洲在线免费视频| 国产精品suv一区二区三区| 女人av一区| 欧美一区二区三区日韩| 波多野结衣之无限发射| lutube成人福利在线观看| 久久国产视频网| 午夜精品久久久久久久男人的天堂 | 亚洲精品mp4| www.超碰97.com| 2020av在线| 18欧美乱大交hd1984| 久久久久久亚洲精品不卡4k岛国| 亚洲系列第一页| 野花国产精品入口| 欧美成人午夜激情在线| 手机看片福利视频| 欧美日韩看看2015永久免费| 欧美乱妇一区二区三区不卡视频| 亚洲 高清 成人 动漫| 国产原创在线观看| 国产清纯白嫩初高生在线观看91| 国产伦精品一区二区三区免费视频| 在线观看毛片网站| 久久国产精品久久久久久电车| 欧美日韩国产成人在线| www.97视频| 国产精品一区二区99| 亚洲国产精品va在线观看黑人| 午夜剧场高清版免费观看| 成人影院网站| 婷婷成人激情在线网| 国产成人生活片| 欧美r级在线| 国产日产欧美一区二区三区| 精品视频导航| 天堂中文字幕av| 岛国精品在线观看| 丁香婷婷久久久综合精品国产 | 亚洲欧美日韩在线综合 | julia中文字幕一区二区99在线| 欧美视频一二三区| 天天影视综合色| 欧美xxx性| 欧美日韩在线一区| www.爱色av.com| 黄色18在线观看| 亚洲高清免费一级二级三级| 菠萝蜜视频在线观看入口| a级网站在线播放| 亚洲欧美国产三级| 中日韩在线视频| 激情视频在线观看| 亚洲免费色视频| 国产a级黄色大片| 在线网址91| 亚洲国产成人91porn| 波多野结衣综合网| 国产剧情av在线播放| 精品久久久国产| 国产女大学生av| 日韩三级影视| 欧美日韩精品久久久| 亚洲无在线观看| 日韩欧美激情电影| 亚洲第一级黄色片| 国产中年熟女高潮大集合| 欧美日韩高清| 久久伊人色综合| 精品视频久久久久| 校园激情久久| 国产精品麻豆va在线播放| 91尤物国产福利在线观看| 国产精品中文字幕日韩精品| 国产精品大全| 免费黄色片在线观看| 国产精品久久久久久久久免费相片 | 中文字幕在线播放视频| 亚洲图区在线| 深夜福利国产精品| 久久久久久久久99| 久久久人人人| 国产精品久久久久久亚洲调教| 91女人18毛片水多国产| 丁香婷婷深情五月亚洲| 欧美日韩一区在线播放| 黄色免费网站在线| 午夜亚洲福利老司机| 日本www.色| 中文字幕一区二区三区中文字幕| 亚洲精品在线观看www| 久久精品色妇熟妇丰满人妻| 亚洲精品韩国| 国产女精品视频网站免费| 丰满熟女一区二区三区| 国产免费成人在线视频| 男女激情免费视频| 日韩一级二级| 亚洲精品第一页| 日日操免费视频| 久久国产99| 成人欧美一区二区三区在线观看| 国产乱子伦三级在线播放| 亚洲欧美电影一区二区| 日本三区在线观看| 中文字幕av一区二区三区四区| 在线成人免费网站| 亚洲视频免费播放| 国产一区二区导航在线播放| 欧美午夜精品久久久久免费视 | 国产精品偷伦视频免费观看了| 欧美女王vk| 欧美精品激情在线| 国产精品无码天天爽视频| 久久综合丝袜日本网| 女人被男人躁得好爽免费视频| 成人国产精品| 亚洲欧美日韩国产精品| 国产午夜精品一区二区理论影院| 青青草伊人久久| 久久福利电影| 成人性生交大片免费看在线播放| 欧美一区二区精美| 天堂网av2018| 日本亚洲一区二区| 欧美一区二区三区精美影视| 日韩电影免费看| 精品电影一区二区三区| 欧美日韩国产精品一区二区三区 | 国产精品嫩草影院一区二区| 欧美香蕉爽爽人人爽| 午夜精品久久久久久久久| 国产精品偷伦视频免费观看了| 国产国产精品| 成人激情视频网| 91短视频版在线观看www免费| 色先锋资源久久综合| 丝袜美腿中文字幕| 亚洲一区二区毛片| 久久久国产精品一区二区三区| 91九色在线播放| 精品免费日韩av| 久久在线视频精品| 成人免费视频免费观看| 国产天堂视频在线观看| 白嫩白嫩国产精品| 孩xxxx性bbbb欧美| 性xxxx18| 色综合久久99| 欧美18—19性高清hd4k| 日本一不卡视频| 一区二区免费电影| 国产亚洲亚洲国产一二区| 久久天天躁狠狠躁夜夜爽蜜月| 国产剧情精品在线| 一区二区三区丝袜| 国产精品久久久久久久无码| 亚洲女同在线| 欧美视频1区| 午夜不卡一区| 久久99亚洲热视| 亚洲精品综合网| 午夜久久久久久久久久一区二区| 成年人的黄色片| 玖玖精品视频| 国产精品无码乱伦| 亚洲三级av| 欧美性受xxx| 91大神xh98hx在线播放| 日韩午夜激情免费电影| 青青操免费在线视频| 久久久久久久久岛国免费| 亚洲 欧美 日韩系列| 一区二区三区午夜视频| 岛国视频一区免费观看| 成人做爰视频www网站小优视频| 永久免费看mv网站入口亚洲| av高清一区二区| 精品免费在线观看| 手机毛片在线观看| 国产成人精品免费网站| 免费av网址在线| 欧美+日本+国产+在线a∨观看| 国产日韩欧美二区| 成人国产精品| 91禁外国网站| 国产在线更新| 亚洲女在线观看| av手机免费看| 色视频成人在线观看免| 91成人福利视频| 久久久久久免费网| 农村末发育av片一区二区 | 国产福利视频一区二区| 伊人春色在线观看| 亚洲天堂成人在线| 亚洲第一大网站| 欧美视频中文字幕| 日韩特黄一级片| 亚洲精品伦理在线| 中国女人特级毛片| 成人白浆超碰人人人人| 午夜精品中文字幕| 视频一区视频二区中文| 国产在线视频综合| 99久久.com| 青青草成人激情在线| 好吊妞视频这里有精品| 91精品久久久久久久久久入口| 亚洲欧洲高清| 欧美精品福利视频| 污污网站在线看| 日韩在线高清视频| 成人网视频在线观看| 亚洲精品xxx| 亚洲欧美另类日韩| 欧美高清激情brazzers| 丰满人妻一区二区三区四区| 欧美日韩亚洲国产一区| 青娱乐91视频| 亚洲三级电影全部在线观看高清| 久久久久亚洲av无码a片| 99综合电影在线视频| 大桥未久恸哭の女教师| 国产一区二区美女诱惑| 999在线观看| 老鸭窝一区二区久久精品| 中文字幕在线导航| 水蜜桃久久夜色精品一区的特点| 国产精品宾馆在线精品酒店| 日韩视频在线一区二区三区 | 波多野结衣在线一区| 一级片免费在线观看视频| 美国欧美日韩国产在线播放| 无码内射中文字幕岛国片| 亚洲专区免费| 凹凸国产熟女精品视频| 亚洲免费中文| 黄色一级一级片| 羞羞视频在线观看欧美| 亚洲国产精品久久久久爰色欲| 国产欧美一级| 免费无码国产v片在线观看| 亚洲一级在线| 久久久久国产精品熟女影院| 日日夜夜精品免费视频| 爆乳熟妇一区二区三区霸乳| 日韩av网站在线观看| 亚洲国产成人va在线观看麻豆| 美女一区二区视频| 日日干日日操日日射| 精品一区二区国语对白| 国产在线a视频| www.亚洲在线| 国产精品jizz| 亚洲国产岛国毛片在线| 国产成人免费在线观看视频| 亚洲品质自拍视频| 妺妺窝人体色www婷婷| 亚洲成人在线免费| 五月天激情国产综合婷婷婷| 91国偷自产一区二区使用方法| 中文字幕欧美人妻精品一区蜜臀 | www,av在线| 国产精品18久久久久久久久久久久| 日韩高清一二三区| 久久久久久一级片| 开心激情五月网| 亚洲曰韩产成在线| 人妻丰满熟妇av无码区| 欧美日韩亚洲综合在线| 亚洲高清精品视频| 国产婷婷成人久久av免费高清| 亚洲精品承认| 欧美激情手机在线视频 | 国产综合久久久久久久久久久久| 亚洲综合在线一区二区| www.成人在线| 特黄一区二区三区| 亚洲午夜免费电影| 波多野结衣在线观看一区| 欧美一区二区日韩一区二区| 日韩有码电影| 久久成人在线视频| 韩漫成人漫画| 7777精品久久久大香线蕉小说| 女同另类激情重口| 国产精品99久久久久久大便| 亚洲经典视频在线观看| 色噜噜狠狠一区二区| 99久久国产综合精品色伊| 国产黄色片在线| 午夜影视日本亚洲欧洲精品| 国产精品玖玖玖| 久久久久av| 亚洲欧美一区二区三区四区| 天堂中文8资源在线8| 97在线精品视频| 成人97精品毛片免费看| 欧美伦理一区二区| 欧美视频导航| 色悠悠久久综合网| www..com久久爱| 永久免费看mv网站入口| 色综合久久久久综合| 成人黄色免费视频| 中文字幕亚洲欧美一区二区三区| segui88久久综合| 川上优av一区二区线观看| 亚洲精品进入| 国产高清av在线播放| 极品销魂美女一区二区三区| 成人免费无遮挡无码黄漫视频| 亚洲小说欧美激情另类| 国产精品久久免费| 在线观看视频99| 成人性生交大片免费网站| 国产一区二区精品在线| 欧美精品综合| 伊人五月天婷婷| 中文字幕精品一区| 无码人妻aⅴ一区二区三区有奶水| 欧美变态tickling挠脚心| 美女羞羞视频在线观看| 国产精品专区h在线观看| 亚洲区小说区图片区qvod按摩| 欧美视频在线观看视频| 国产大片一区二区| 四虎永久免费在线| 欧美精品丝袜久久久中文字幕| 国产在线高清| 国产高清在线不卡| 国产日韩欧美一区二区三区| 鲁一鲁一鲁一鲁一澡| av电影天堂一区二区在线观看| 国产亚洲精品成人| 欧美成人艳星乳罩| 日韩激情美女| 亚洲综合中文字幕68页| 中文字幕免费一区二区三区| 男人午夜视频在线观看| 中文字幕日韩一区| 国产精品嫩草影院精东| 久久这里有精品| 免费观看在线一区二区三区| a级片一区二区| 丰满放荡岳乱妇91ww| 国产成人精品亚洲男人的天堂| 精品国产91洋老外米糕| www视频在线观看| 美国av一区二区三区| 六月丁香综合| 日本视频在线免费| 91精品国产综合久久蜜臀| 国产福利在线播放麻豆| 99re国产| 亚洲另类自拍| 中文幕无线码中文字蜜桃| 在线一区二区三区四区五区 | 最新中文字幕第一页| 正在播放国产一区| 国产美女亚洲精品7777| 日韩成人三级视频| 91在线观看地址| 五月激情丁香网| 久久精品2019中文字幕| 91欧美日韩在线| 欧美xxxxx在线视频| 国产精品福利电影一区二区三区四区| 国产一区二区在线视频观看| 欧美成年人网站| 少妇精品导航| 视频二区在线播放| 亚洲一区二区三区四区在线免费观看| 日韩性xxxx| 国产精品精品国产| 欧美成人首页| 在线免费观看日韩av| 在线播放国产精品二区一二区四区| 天堂av在线电影| 蜜桃传媒一区二区| 国产原创一区二区三区| 日韩黄色三级视频| 在线国产精品视频| 成人av影音| 久久婷五月综合| 午夜精品国产更新| 在线播放麻豆| 国产在线精品日韩| 蜜臀av性久久久久av蜜臀妖精| 免费在线黄色片| 亚洲最大中文字幕| 91精品尤物| 亚洲久久中文字幕| 黄色精品在线看| 亚洲丝袜一区| 午夜欧美性电影| 99在线精品视频|