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

改善Java文檔的理由、建議和技巧

開(kāi)發(fā) 后端 前端
我非常確定,作為開(kāi)發(fā)人員我們都喜愛(ài)技術(shù)文檔。我們喜歡閱讀文檔、寫(xiě)文檔,更不用說(shuō)維護(hù)文檔了,我簡(jiǎn)直愛(ài)死它了!

我非常確定,作為開(kāi)發(fā)人員我們都喜愛(ài)技術(shù)文檔。我們喜歡閱讀文檔、寫(xiě)文檔,更不用說(shuō)維護(hù)文檔了,我簡(jiǎn)直愛(ài)死它了!

我也知道,每次你創(chuàng)建一個(gè)類(lèi)或者一個(gè)方法,你都會(huì)想到要為此寫(xiě)文檔。我也很確定你很享受于寫(xiě)文檔,就像你喜歡偶爾美味的漢堡一樣。但是有時(shí)候,只是有時(shí)候,你會(huì)想要松懈一下,也許這次就跳過(guò)文檔部分。不幸的是,這種行為會(huì)很快地失控。

[[145020]]

所以在這篇文章中,我想聊聊這個(gè)開(kāi)發(fā)者的生活中關(guān)鍵但是通常被忽視并遺忘的部分。希望你會(huì)從此愛(ài)上文檔,明白你的代碼為什么能工作,能幫助你、你的團(tuán)隊(duì)和使用你的軟件的數(shù)不盡的用戶。

為什么文檔很重要

通常,開(kāi)發(fā)者都不會(huì)忘記他們兩個(gè)星期前寫(xiě)的代碼。兩個(gè)月以后甚至更長(zhǎng)時(shí)間以后他們都會(huì)記得。即使我們保證我們從來(lái)不忘記我們寫(xiě)過(guò)的任何代碼,寫(xiě)文檔卻有另一個(gè)理由并且更加重要。

在寫(xiě)代碼前理清思路

我會(huì)舉一個(gè)自己的例子:我有一個(gè)開(kāi)發(fā)SlideshowFX里一個(gè)全新特性的想法,這時(shí)我就想直接開(kāi)始寫(xiě)代碼并實(shí)現(xiàn)它。但我知道我不是做這項(xiàng)工程的唯一一個(gè)有激情的開(kāi)發(fā)者。所以我的典型行為是這樣的:

1. 寫(xiě)出以下類(lèi)主體
public class BurgersManager {
}
2. 思考:“那么,我應(yīng)該在BurgersManager類(lèi)中有些CRUD操作”
3. 寫(xiě)下:
public…
4. 思考:“我應(yīng)該返回什么值?目前來(lái)說(shuō)void就可以”
5. public void addBurger(Burger burger) {
// TODO implement that later
}
public …
6. 思考:“我應(yīng)該返回被吃掉的漢堡的實(shí)例嗎?還是void就可以?就像第4步那樣。。。”
7. public void eat(Burger burger, boolean fast) {
// TODO …
8. 告訴自己:“糟糕,咖啡時(shí)間了,我的咖啡呢。。。”
9. 搜索,喝咖啡,和同事交談
10. 然后告訴自己:“回去工作吧,我剛才在做什么來(lái)著?”

我知道,你在這個(gè)例子中看到了自己,對(duì)吧?在創(chuàng)造性工作剛開(kāi)始的時(shí)候,我們的思路有些混亂,所以當(dāng)你直接開(kāi)始寫(xiě)代碼,那么代碼也會(huì)很混亂。在寫(xiě)代碼之前就考慮文檔能夠幫你理清思路并清除列出你要用代碼實(shí)現(xiàn)的事。所以第一步應(yīng)該是寫(xiě)出以下代碼:

/**
* 此類(lèi)通過(guò)提供CRUD操作來(lái)管理漢堡
* 采用單件模式。可以使用{<a >@link</a> #getInstance()}來(lái)獲得這個(gè)管理器的實(shí)例。
* 之后可以用以下方法來(lái)調(diào)用CRUD操作:
*/

{<a >@link</a> #addBurger(Burger)} 用來(lái)增加漢堡,并受管理于
* 單件實(shí)例 ;
* @作者 Thierry Wasylczenko
* @版本 0.1
* <a >@since</a> BurgerQueen 1.0
*/
public class BurgersManager {

}

這就是一個(gè)簡(jiǎn)短的例子,這個(gè)例子能夠:

  • 強(qiáng)迫你思考你創(chuàng)建的類(lèi)的目的是什么

  • 幫你確定你的需要

  • 即使是在你休息之后也能幫你想起來(lái)你在做什么

  • 幫助你預(yù)估還有什么是需要做的

伙計(jì),你是在團(tuán)隊(duì)中開(kāi)發(fā)

你也許不是在單獨(dú)工 作,你可能有尊敬的同事,你想和那些同事一起喝咖啡聊天。重點(diǎn)是,因?yàn)槟阆矚g他們,所以你想要幫助他們參與到你那令人興奮的漢堡王的實(shí)現(xiàn)中去。為此,最好 的做法就是確定他們?cè)谧x你的代碼時(shí),有完美的文檔參考。即使他們?cè)谀銓?xiě)代碼之后的兩個(gè)星期問(wèn)你問(wèn)題,你也能毫無(wú)猶豫地回答他們。

這就是另一個(gè)為什么文檔很重要的理由:它能避免人們多次跑來(lái)問(wèn)你你這復(fù)雜的算法是怎樣運(yùn)作的,或者為什么管理器中增加的漢堡沒(méi)有同樣被加到職工管理器的統(tǒng)計(jì)中去。在一個(gè)團(tuán)隊(duì)中,文檔可以避免以下問(wèn)題:

  • 在工作的時(shí)候被打斷,之后難以返回繼續(xù)工作;

  • 尋找可以回答問(wèn)題的人,因?yàn)樽屍渌蓡T知道了解自己是否能夠回答問(wèn)題;

  • 等待某個(gè)隊(duì)員有時(shí)間回答他們的問(wèn)題。

  • 所以寫(xiě)文檔可以幫助團(tuán)隊(duì)提高生產(chǎn)力并專(zhuān)注于開(kāi)發(fā)。

讓成功更進(jìn)一步

這一點(diǎn)更加主觀些。寫(xiě)Javadoc讓我非常有成就感,因?yàn)楫?dāng)我再次使用我的API的時(shí)候,我寫(xiě)代碼有文檔參考,這幫我確保我沒(méi)有忘記任何小細(xì)節(jié)。盡管我通常不會(huì)忘記,知道有文檔在支撐我的記憶力也是件很棒的事。

看到IntelliJ IDEA展示我的文檔讓我有“嘿,看,我就像是專(zhuān)業(yè)的,我做的東西太棒了,我甚至有文檔噢”的感覺(jué)。在某些程度上的確是這樣,不是嗎?因?yàn)楫?dāng)你在使用一個(gè) lib,其中的 log(String s, int i) 沒(méi)有任何命名良好的參數(shù)描述,你一定像我一樣在想“這個(gè)究竟是什么玩意兒?”。

不知道你怎樣想的,我反正是覺(jué)得新的Javadoc設(shè)計(jì)特別贊。我認(rèn)為讓自己的文檔整潔是非常棒的事。但是正如我說(shuō)的,這只是我個(gè)人的感受。

寫(xiě)Javadoc的小技巧

在Javadoc中你有一下很好的標(biāo)簽可以使用:

  • @author

  • @version

  • @param

  • @return

  • @exception/@throws

  • @see

  • @since

  • @serial/@serialField/@serialData

  • @deprecated

但是這篇文章的目的并不是詳細(xì)解釋所有標(biāo)簽,而是作為文檔作者和開(kāi)發(fā)人員,我想分享我在寫(xiě)我的Javadoc時(shí)使用的技巧。

使用@link和@linkplain來(lái)指向某些代碼

在我的Javadoc中,如果有依賴(lài)關(guān)系或者對(duì)文檔有用,我會(huì)提及其它類(lèi)和方法。為了使方法和類(lèi)的瀏覽更簡(jiǎn)便,你可以使用@link。它是這樣工作的:

  • {@link BurgersManager} 指向一個(gè)類(lèi)

  • {@link BurgersManager burgers manager} 指向帶有標(biāo)簽的類(lèi)

  • {@link #eat(Burger, boolean)} 指向此類(lèi)中的某個(gè)方法

  • {@link #eat(Burger, boolean) eat} 指向此類(lèi)中帶有標(biāo)簽的某個(gè)方法

  • {@link BurgersManagers#eat(Burger, boolean)} 指向其他類(lèi)中的某個(gè)方法

  • {@link BurgersManagers#eat(Burger, boolean) burgers manager eat} 指向其他帶有標(biāo)簽的類(lèi)的某個(gè)方法

@link 和 @linkplain 的區(qū)別是后者不會(huì)生成等寬字體的代碼。

使用@code來(lái)表明代碼段

通常你會(huì)在Javadoc中發(fā)現(xiàn)一段代碼,用來(lái)說(shuō)明怎樣使用方法和類(lèi),或者提供其它例子。為了正確顯示代碼,并防止一些像這樣的標(biāo)記被打斷,你可以使用@code。

{<a >@code</a>
List&lt;Burger&gt; burgers = new ArrayList&lt;&gt;();
  for(int index = 0; index &lt; 10; index++) {
    burgers.add(new Burger(“Burger #” + index));
  }
}

@code會(huì)為你生成標(biāo)記。

使用@value來(lái)在文檔中插入字段值

當(dāng)你有一個(gè)常量,我可能想要它的值在文檔中顯示出來(lái)。有兩個(gè)選擇:

  • 自己插入這個(gè)值。但是如果這個(gè)值改變了,你必須更新你的文檔,如果你絕對(duì)不會(huì)忘記這點(diǎn),那你可以放心選擇這個(gè)做法;

  • 使用@value來(lái)為你插入值,這樣你就不用手動(dòng)更新你的文檔。

對(duì)我來(lái)說(shuō)第二個(gè)選擇是利用Javadoc工具的最佳方法,我會(huì)討論這個(gè)方法。實(shí)際上,使用單一屬性特別有用:

/**
* The default value for this field is {@value}.
* 這個(gè)域的默認(rèn)值是{@value}.
*/
public static final String BURGER_SHOP_NAME = "Thierry's shop";

但你也可以指向其它常量,比如:

/**
* The default value for this field is {@value} when the value
* of {<a >@link</a> #OWNER} is {@value #OWNER}.

* 這個(gè)域的默認(rèn)值是{@value} 當(dāng)
* {<a >@link</a> #OWNER}的值為{@value #OWNER}.
*/
public static final String BURGER_SHOP_NAME = &quot;Thierry&#039;s shop&quot;;

/**
* The default owner of this awesome burger shop.

* 這家很棒的漢堡店的默認(rèn)店主.
*/
public static final String OWNER = &quot; Thierry&quot;;

用@since來(lái)表明此特性的生效時(shí)間

通常,在你的代碼中表明類(lèi)或者方法何時(shí)開(kāi)始生效非常有用。為此使用@since標(biāo)簽并在其后注明該特性執(zhí)行的版本/年份:

/**
* This awesome class is for doing awesome things
* 這個(gè)棒呆了的類(lèi)是用來(lái)做些棒呆了的事
* <a >@since</a> burger-core-0.1
* @version 0.2
*/
public class BurgersManager {

/**
* Allows to eat burgers
* 可以吃漢堡
* <a >@since</a> burger-core-0.2
*/
public void eat(Burger burger, boolean fast) {
// TODO
}
}

你可以看到,我把它用在了方法和類(lèi)上,并且不止包含了版本號(hào)。事實(shí)上,現(xiàn)在我們的應(yīng)用有很多不同的模塊,這些模塊可以有不同生命周期,即版本。說(shuō)某 個(gè)方法或者類(lèi)從0.2版本開(kāi)始生效并沒(méi)有特別的意思。那么究竟是什么的0.2版本?這就是為什么我總是用一個(gè)相關(guān)的@since 來(lái)幫助我的同事第一眼就 明白這些是什么時(shí)候開(kāi)始生效的。

不止如此,這個(gè)標(biāo)簽的一個(gè)好處就是它可以幫你創(chuàng)建發(fā)布說(shuō)明。等會(huì)兒,啥?不,并不是使用你最喜歡的IDE,比如IntelliJ IDEA,然后查找包含“@since burger-core-0.2″的文件。然后瞧,你可以找到自那個(gè)版本之后添加的所有方法和類(lèi)。當(dāng)然,這無(wú)法告訴你被更新的方法和類(lèi),而只會(huì)告訴你新添 加的東西。但是你應(yīng)該看到,這么簡(jiǎn)單的竅門(mén)多有用。

不要匿名,使用 @author

我非常討厭的一件事:開(kāi)發(fā)人員不承認(rèn)自己的代碼,并且不表明是他們?yōu)榱艘粋€(gè)糟糕的原因?qū)懥诉@糟糕的代碼。如果你寫(xiě)了一段代碼,要么承認(rèn)它,要么去當(dāng) 經(jīng)理。你可以用 @author 來(lái)表明你是這個(gè)類(lèi)或者方法的作者。我認(rèn)為把這標(biāo)簽既放在類(lèi)上也放在方法上比較好,因?yàn)橐粋€(gè)類(lèi)的方法可能不是都是類(lèi)的作者寫(xiě)的。

另一個(gè)好習(xí)慣就是,把一個(gè)方法或類(lèi)的所有作者都加上。 試想一下,你和你的同事寫(xiě)了一個(gè)很棒的方法,而標(biāo)簽表明你是這個(gè)方法的唯一作者。有一天你去度假了,有人在讀你的方法,但不是很明白并且想要一些細(xì)節(jié)。而 是因?yàn)槟惚粯?biāo)為唯一的作者,他們不知道這個(gè)信息可以從和你一起寫(xiě)代碼的同事那里很容易就獲得。你知道我要說(shuō)什么了,對(duì)吧?要記得給代碼加@author來(lái) 表 明作者。

對(duì)非void方法要使用@return

我要說(shuō)這一點(diǎn)對(duì)我來(lái)說(shuō)非常有意義。有時(shí)候我看到類(lèi)似以下例子中的代碼就要跪了。

/** Get the address.
* @return
*/
public String getAddress() { /* … */ }

為什么!?說(shuō)真的,為什么你不填好@return?“因?yàn)橹皇且恍卸眩褪谦@得地址”。

不不不,請(qǐng)不要這樣。如果你那樣回答,是因?yàn)槟愕奈臋n。怎么說(shuō)呢,因?yàn)槟愕奈臋n欠佳。是的,因?yàn)槟憧梢院芎?jiǎn)單地寫(xiě)出一個(gè)更好的版本,而不是像以上你見(jiàn)到的糟糕的文檔, 看:

/**
* Get the address of this burger shop. The address is of the following format:
* {<a >@code</a> address line 1
* address line 2
* zipcode city}
* @return the address of this burger shop or {<a >@code</a> null} if not filled.
*/

/**
*獲取漢堡店的地址。地址格式:
* {<a >@code</a> 地址行1
* 地址行2
* 郵編 城市}
* @return 漢堡店的地址,如果沒(méi)有填地址返回 {<a >@code</a> null}.
*/

好太多了,對(duì)吧?這樣你的文檔就有用了。我一直試著尋找給代碼寫(xiě)文檔的合適方法,因?yàn)橛袝r(shí)候讀者只讀 @return 的內(nèi)容,有時(shí)候也會(huì)讀 @return 上面的內(nèi)容,你添加一些說(shuō)明就可以簡(jiǎn)單地避免疑惑。

用@param說(shuō)明參數(shù)的含義

有什么比看到方法使用一個(gè)像 i 這樣的意義不明的參數(shù)而不加任何文檔更加沮喪呢?有時(shí)候你可以通過(guò)方法的名字來(lái)猜到這個(gè)參數(shù)的目的,可是有時(shí)候就不行。所以在你的文檔里,你應(yīng)該使用 @param來(lái)表明這個(gè)參數(shù)的含義,并說(shuō)明可能的有效值。在我們的例子中,i可以是日志的級(jí)別:INFO, DEBUG或者TRACE。這個(gè)標(biāo)簽另一個(gè)很有用的例子就是當(dāng)這個(gè)值對(duì)應(yīng)的是一個(gè)索引。有些情況下索引從0開(kāi)始,有些情況下從1開(kāi)始。@param就是用 來(lái)描述這一區(qū)別的標(biāo)簽。

生成文檔

在代碼中有文檔是非常好的,但是現(xiàn)在你必須生成文檔。所以你可以使用JDK提供的Java文檔工具來(lái)生成它。

通過(guò)執(zhí)行類(lèi)似這樣的命令:

javadoc {packages|source-files} [options]

你可以指定想要生成文檔的包名或文件名,多個(gè)名字用空格分隔。

以下簡(jiǎn)要描述了一些jJavadoc工具能夠接受的選項(xiàng):

  • -author: 在生成的文檔中生成@author用

  • -d: 要在當(dāng)前目錄之外生成文檔的目錄

  • -nodeprecated: 不為被標(biāo)為@deprecated的代碼生成文檔

  • -protected: 包含protected和public類(lèi)和類(lèi)成員

  • -private: 包含private類(lèi)和類(lèi)成員

  • -public: 只包含public類(lèi)和類(lèi)成員

像IDE之類(lèi)的工具也可以生成你的文檔,但是如果它很好地格式化并且可以提供預(yù)覽。

一些像Maven和Gradle這樣的依賴(lài)管理工具也帶有生成文檔的階段或任務(wù)。這很棒,因?yàn)槟愕奈臋n可以一直緊隨代碼的發(fā)布來(lái)生成,這樣它就一直是最新的。

總結(jié)

文檔對(duì)于你的整個(gè)團(tuán)隊(duì)非常重要。它能幫你理清你在寫(xiě)什么代碼,更重要的是,你為什么這樣實(shí)現(xiàn)它。

希望這篇文章能讓你想要寫(xiě)出更好的文檔。如果是這樣的話請(qǐng)告訴我你是否寫(xiě)了文檔,你是怎樣寫(xiě)的。

我的推特@twasyl,或者在下面留言都可以!

責(zé)任編輯:王雪燕 來(lái)源: ImportNew
相關(guān)推薦

2012-12-12 13:44:31

Git

2022-07-25 15:21:50

Java編程語(yǔ)言開(kāi)發(fā)

2017-08-28 22:14:24

開(kāi)發(fā)者Unity

2014-04-24 10:11:17

iOS性能調(diào)優(yōu)

2018-10-19 13:20:47

Python編程語(yǔ)言建議

2011-03-10 15:49:12

數(shù)據(jù)中心布線

2011-03-22 14:58:08

Nagios

2021-08-17 10:47:44

工作場(chǎng)所物聯(lián)網(wǎng)IoT

2015-09-21 09:42:57

程序員教誨

2020-04-18 20:21:16

網(wǎng)絡(luò)安全可視性安全工具

2017-03-24 10:56:21

Webpack技巧建議

2017-05-02 16:29:11

Webpack技巧建議

2011-04-07 10:13:48

數(shù)據(jù)庫(kù)開(kāi)發(fā)

2021-12-17 10:29:38

CIOITCFO

2010-12-31 15:29:54

Web應(yīng)用程序

2025-05-22 08:21:28

2015-12-10 09:29:28

WiFi網(wǎng)絡(luò)優(yōu)化

2015-09-06 08:53:22

谷歌Docs理由

2018-05-23 13:47:24

數(shù)據(jù)數(shù)據(jù)管理可視化

2011-03-16 13:57:21

SQL Server數(shù)據(jù)庫(kù)查詢
點(diǎn)贊
收藏

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

在线看一级片| 国产精品久久久久久久久久新婚 | 在线性视频日韩欧美| 最新av网址在线观看| a天堂视频在线观看| 九色porny在线| 日本欧美在线观看| 欧美午夜精品久久久久久浪潮 | 26uuu另类欧美亚洲曰本| 久久成人精品一区二区三区| 午夜激情av在线| 国产三级在线| 日韩国产高清在线| 亚洲色图偷窥自拍| av动漫免费看| 天堂资源最新在线| 国产欧美日韩亚洲一区二区三区| 亚洲国产精品成人va在线观看| 国产精品波多野结衣| 少妇又紧又色又爽又刺激视频 | 久久视频免费看| 麻豆视频久久| 一区二区三区美女| 亚洲综合中文字幕在线观看| 国产在线一卡二卡| 深夜福利一区二区三区| 亚洲一区二区欧美激情| 99国精产品一二二线| a在线视频播放观看免费观看| 日韩欧美美女在线观看| 欧美日韩亚洲视频一区| 欧美日韩一区在线播放| 日韩黄色片网站| 成人中文在线| 91精品国产综合久久福利软件| eeuss中文| 国产综合视频一区二区三区免费| 日韩中文字幕不卡| 成人动漫一区二区三区| 色777狠狠综合秋免鲁丝| 成人午夜激情av| 9色在线视频| 精品一区二区三区不卡| 久久亚洲精品一区| 东方伊人免费在线观看| 欧美日韩精品免费观看视完整| 国产无一区二区| 国产精品 欧美在线| 女人十八毛片嫩草av| 女人抽搐喷水高潮国产精品| 日韩欧美精品网站| 国产a级片网站| 天堂在线免费av| 成人av网址在线| 国产精品一区二区三区在线| 天天干,天天干| 亚洲天天综合| 亚洲国产另类 国产精品国产免费| 无码精品a∨在线观看中文| 成年午夜在线| 国产成人精品免费网站| 欧美亚洲另类视频| 天天做夜夜爱爱爱| 开心激情综合| 欧美伦理视频网站| 国产青青在线视频| 在线看黄色av| 亚洲视频综合在线| 欧美精品在线一区| 男女视频在线观看| 国产成人精品午夜视频免费| 日本精品久久电影| 精品人妻一区二区三区视频| 久久久加勒比| 精品免费在线观看| 先锋影音男人资源| 国产日本在线观看| 国产精品女上位| 国产综合动作在线观看| 91精品国产综合久| 久久aⅴ国产紧身牛仔裤| 欧美精品在线看| 欧美激情亚洲色图| 欧美1区2区3区4区| 亚洲人成77777在线观看网| 中文字幕伦理片| 一区二区三区在线观看免费| 久久久久久97| 顶臀精品视频www| 欧美二区视频| 日韩在线欧美在线| 真实国产乱子伦对白在线| 欧美丝袜一区| 欧美成人四级hd版| 久久青青草原亚洲av无码麻豆 | 成人h动漫精品| 区一区二区三区中文字幕| 成人午夜视频一区二区播放| 国产在线播放一区三区四| 国产精品美女www| 精品人妻无码一区二区三区蜜桃一| 奇米精品一区二区三区四区| 91在线免费看网站| 国产精品福利电影| 日韩成人一区二区三区在线观看| 91免费欧美精品| 视频一区二区三区国产| 亚洲三级电影全部在线观看高清| 国产免费黄视频| 岛国在线视频网站| 亚洲永久精品大片| 成人在线免费播放视频| 竹内纱里奈兽皇系列在线观看| 亚洲成a人片在线不卡一二三区 | 国产熟妇久久777777| 美女福利一区| 欧美成人免费视频| 日韩av免费播放| 成人黄色av网站在线| 亚洲国产一区二区在线| 中文字幕日本在线观看| 亚洲二区在线观看| 秋霞无码一区二区| 亚洲一区二区三区久久久| 欧美精品日韩综合在线| 国产色视频一区二区三区qq号| 综合激情视频| 国产一区二区视频在线观看| 国产免费av观看| 国产精品自拍毛片| 国产精品一区二区在线观看| 浪潮av一区| 在线亚洲人成电影网站色www| www亚洲成人| 成人在线分类| 欧美精品一区二区在线播放| 香蕉视频黄色在线观看| 亚洲婷婷免费| 国产成人亚洲综合青青| 性感美女一级片| 国产精品午夜电影| a级网站在线观看| 欧美成人高清视频在线观看| 一区二区在线视频播放| 中国毛片直接看| 狠狠综合久久av一区二区老牛| 91热福利电影| 国产午夜精品久久久久免费视| 欧美日韩国产首页| 日本精品一二三| 国产一区日韩| 欧美日本亚洲视频| 欧美一区免费看| 久久久久久久综合色一本| 一区二区三区四区久久| 国产精品99久久久久久董美香| 日韩免费视频一区二区| 久久丫精品国产亚洲av不卡| 亚洲人成久久| 国产在线精品成人一区二区三区| 午夜在线视频| 五月天亚洲精品| 美女又爽又黄免费| 四虎成人av| 91sao在线观看国产| 色婷婷久久综合中文久久蜜桃av| 中文字幕免费一区| 亚洲图色中文字幕| 亚洲精品国产精品粉嫩| 久久99精品久久久久久琪琪 | 欧美a级理论片| 成人免费看片网址| www.在线播放| 欧美日本视频在线| 免费人成视频在线| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩欧美一区二区在线观看| av福利在线导航| 51久久夜色精品国产麻豆| 极品粉嫩小仙女高潮喷水久久| 亚洲一区二区三区无吗| 99精彩视频| 日本在线啊啊| 精品99999| 亚洲欧美一区二区三区在线观看| 中国色在线观看另类| av电影中文字幕| 天天射天天综合网| 国产精品久久久久久久9999| 日本美女一级片| 亚洲一区二区黄色| 色欲av无码一区二区三区| 精品一二线国产| 色综合电影网| 裤袜国产欧美精品一区| 亚洲高清久久久久久| 国产精品乱码一区二区视频| 亚洲欧美日韩在线| 实拍女处破www免费看| 国内外成人在线| 国产a级一级片| 亚洲免费二区| 日本一区视频在线播放| 一级毛片精品毛片| 欧美大荫蒂xxx| 国产色综合视频| 欧美性xxxx在线播放| 91免费公开视频| 国产日韩欧美精品一区| 99久久久无码国产精品性波多 | 深夜视频在线观看| 久久精品噜噜噜成人av农村| 日韩性感在线| 国产精品丝袜在线播放| 久久人人爽人人| 姝姝窝人体www聚色窝| 婷婷开心激情综合| 神马久久精品综合| 亚洲国产高清不卡| 内射中出日韩无国产剧情| 国产精品一区二区果冻传媒| 日本美女高潮视频| 久久国产日韩| 青青青国产在线观看| 在线观看免费一区二区| 午夜午夜精品一区二区三区文| 欧美自拍一区| 高清视频一区二区三区| 精品国产不卡一区二区| 成人女保姆的销魂服务| 182tv在线播放| 日韩在线中文视频| 成人精品一区二区| 亚洲天堂免费在线| 欧美一级黄视频| 欧美日韩精品在线观看| 精品成人久久久| 中文字幕精品一区| 91中文字幕永久在线| 91啪亚洲精品| 人妻丰满熟妇aⅴ无码| 99久久久久久| 午夜两性免费视频| 日韩制服丝袜av| 99视频在线免费| 中文字幕一区二区三区久久网站| 手机成人av在线| 国产精品99久久| 久久精品国产精品亚洲精品色| 久久久久久久久久久久久久| 国产精品日韩欧美一区二区| 日韩精品亚洲专区在线观看| 亚洲一区久久久| 日韩精品成人在线观看| 国产精品免费一区二区三区| 都市激情久久| 久久久久久久久久久久久久一区 | 电影午夜精品一区二区三区| 欧美第一在线视频| 成人欧美视频在线| 另类春色校园亚洲| 欧美专区一二三| 久久中文字幕av| 777久久精品一区二区三区无码| 日韩a级大片| 免费久久99精品国产自| 网站一区二区| 好看的日韩精品视频在线| 祥仔av免费一区二区三区四区| 78m国产成人精品视频| 最新中文字幕在线播放| 国产成人精品一区| 97久久中文字幕| 成人蜜桃视频| 欧美精美视频| 精品乱码一区二区三区| 久久99国内| 国产又粗又硬又长| 亚洲美女网站| 91免费版看片| 国产视频一区免费看| 四季av一区二区| 国产一区二区三区国产| 国产精品入口麻豆| 国产精品一区二区黑丝| 久久人妻一区二区| 中文字幕不卡的av| 国产小视频在线看| 欧美午夜不卡视频| 欧美一级黄视频| 日韩精品最新网址| 黄色片在线免费观看| 久久夜精品香蕉| 日韩大片免费观看| 91社区国产高清| 亚洲欧洲美洲国产香蕉| 国产免费xxx| 天堂久久一区二区三区| 日韩精品视频一区二区在线观看| 秋霞影院一区二区| 亚洲熟女一区二区| 亚洲欧洲在线观看av| 91禁男男在线观看| 中文字幕第一区第二区| 精品无码黑人又粗又大又长| 欧美最新大片在线看| 俄罗斯嫩小性bbwbbw| 色偷偷av一区二区三区| 台湾佬中文娱乐网欧美电影| 91亚洲va在线va天堂va国| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲欧美日韩不卡| 日韩国产一区二| a天堂视频在线观看| 亚洲精品ww久久久久久p站| 国产精品免费人成网站酒店| 欧美丝袜一区二区三区| 亚洲AV无码国产精品午夜字幕| 日韩欧美精品在线| 一区二区高清不卡| 日韩av电影院| 久久婷婷国产| av免费看网址| 国产成人亚洲综合色影视| 国产黄色片在线| 欧美在线观看一区二区| 欧美日韩影视| 91国产精品91| 牛牛视频精品一区二区不卡| 久久av综合网| 麻豆久久婷婷| aa片在线观看视频在线播放| 亚洲国产成人av网| 乱精品一区字幕二区| 欧美精品情趣视频| 成人久久精品| 欧美一区二区精品在线| 日韩免费黄色片| 亚洲国产精品一区二区久| 另类视频在线| 青青a在线精品免费观看| 91夜夜蜜桃臀一区二区三区| 蜜桃日韩视频| 国产日韩欧美一区在线| 日本丰满少妇裸体自慰| 高跟丝袜一区二区三区| 四虎永久在线精品免费网址| 久久久久久久香蕉网| 成人av综合网| 国产免费成人在线| 久久精品男人天堂av| 国产一级片免费视频| 色视频www在线播放国产成人 | 91久久国产精品| 午夜日韩在线| 久久精品女同亚洲女同13| 疯狂蹂躏欧美一区二区精品| 免费在线观看一级毛片| 国产精品第一页在线| 婷婷成人基地| 亚洲综合中文网| 国产人久久人人人人爽| 欧美成人三级在线观看| 欧美va天堂va视频va在线| 国产在线一二三区| 国产精品久久久久久久久久小说| 日韩精品免费一区二区在线观看| 999在线观看视频| 2欧美一区二区三区在线观看视频| 日韩免费av网站| 久久精品视频在线观看| 日韩网站中文字幕| 国产免费一区二区三区| 亚洲一区二区三区四区五区午夜| 短视频在线观看| 欧美久久久久免费| 男人天堂亚洲| 欧美日韩一区在线播放| 狠狠色丁香婷婷综合久久片| 国产亚洲精品久久777777| 日韩精品免费在线视频观看| 黑人精品视频| 91精品视频播放| 日韩视频久久| 在线观看天堂av| 在线观看日韩高清av| 蜜桃视频网站在线| 国产精品久久久久久久久| 亚洲情侣在线| 强伦人妻一区二区三区| 51精品国自产在线| 小h片在线观看| ijzzijzzij亚洲大全| 91免费视频大全| 国产成人av免费看| 美日韩在线视频| 在线观看欧美理论a影院| 99热这里只有精品2| 色婷婷综合久久久久中文一区二区| 日本亚洲欧美|