青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Creative Commons License
本Blog采用 知識共享署名-非商業(yè)性使用-禁止演繹 3.0 Unported許可協(xié)議 進行許可。 —— Fox <游戲人生>

游戲人生

游戲人生 != ( 人生 == 游戲 )
站點遷移至:http://www.yulefox.com。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

原文地址:

  • 格式

代碼風(fēng)格和格式確實比較隨意,但一個項目中所有人遵循同一風(fēng)格是非常容易的,作為個人未必同意下述格式規(guī)則的每一處,但整個項目服從統(tǒng)一的編程風(fēng)格是很重要的,這樣做才能讓所有人在閱讀和理解代碼時更加容易。

1. 行長度(Line Length)

每一行代碼字符數(shù)不超過80。

我們也認(rèn)識到這條規(guī)則是存有爭議的,但如此多的代碼都遵照這一規(guī)則,我們感覺一致性更重要。

優(yōu)點:提倡該原則的人認(rèn)為強迫他們調(diào)整編輯器窗口大小很野蠻。很多人同時并排開幾個窗口,根本沒有多余空間拓寬某個窗口,人們將窗口最大尺寸加以限定,一致使用80列寬,為什么要改變呢?

缺點:反對該原則的人則認(rèn)為更寬的代碼行更易閱讀,80列的限制是上個世紀(jì)60年代的大型機的古板缺陷;現(xiàn)代設(shè)備具有更寬的顯示屏,很輕松的可以顯示更多代碼。

結(jié)論:80個字符是最大值。例外:

1) 如果一行注釋包含了超過80字符的命令或URL,出于復(fù)制粘貼的方便可以超過80字符;

2) 包含長路徑的可以超出80列,盡量避免;

3) 頭文件保護(防止重復(fù)包含第一篇)可以無視該原則。

2. 非ASCII字符(Non-ASCII Characters)

盡量不使用非ASCII字符,使用時必須使用UTF-8格式。

哪怕是英文,也不應(yīng)將用戶界面的文本硬編碼到源代碼中,因此非ASCII字符要少用。特殊情況下可以適當(dāng)包含此類字符,如,代碼分析外部數(shù)據(jù)文件時,可以適當(dāng)硬編碼數(shù)據(jù)文件中作為分隔符的非ASCII字符串;更常用的是(不需要本地化的)單元測試代碼可能包含非ASCII字符串。此類情況下,應(yīng)使用UTF-8格式,因為很多工具都可以理解和處理其編碼,十六進制編碼也可以,尤其是在增強可讀性的情況下——如"\xEF\xBB\xBF"是Unicode的zero-width no-break space字符,以UTF-8格式包含在源文件中是不可見的。

3. 空格還是制表位(Spaces vs. Tabs)

只使用空格,每次縮進2個空格。

使用空格進行縮進,不要在代碼中使用tabs,設(shè)定編輯器將tab轉(zhuǎn)為空格。

譯者注:在前段時間的關(guān)于Debian開發(fā)學(xué)習(xí)日記一文中,曾給出針對C/C++編碼使用的vim配置。

4. 函數(shù)聲明與定義(Function Declarations and Definitions)

返回類型和函數(shù)名在同一行,合適的話,參數(shù)也放在同一行。

函數(shù)看上去像這樣:

ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
  DoSomething();
  ...
}

如果同一行文本較多,容不下所有參數(shù):

ReturnType ClassName::ReallyLongFunctionName(Type par_name1,
                                             Type par_name2,
                                             Type par_name3) {
  DoSomething();
  ...
}

甚至連第一個參數(shù)都放不下:

ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1,  // 4 space indent
    Type par_name2,
    Type par_name3) {
  DoSomething();  // 2 space indent
  ...
}

注意以下幾點:

1) 返回值總是和函數(shù)名在同一行;

2) 左圓括號(open parenthesis)總是和函數(shù)名在同一行;

3) 函數(shù)名和左圓括號間沒有空格;

4) 圓括號與參數(shù)間沒有空格;

5) 左大括號(open curly brace)總在最后一個參數(shù)同一行的末尾處;

6) 右大括號(close curly brace)總是單獨位于函數(shù)最后一行;

7) 右圓括號(close parenthesis)和左大括號間總是有一個空格;

8) 函數(shù)聲明和實現(xiàn)處的所有形參名稱必須保持一致;

9) 所有形參應(yīng)盡可能對齊;

10) 缺省縮進為2個空格;

11) 獨立封裝的參數(shù)保持4個空格的縮進。

如果函數(shù)為const的,關(guān)鍵字const應(yīng)與最后一個參數(shù)位于同一行。

// Everything in this function signature fits on a single line
ReturnType FunctionName(Type par) const {
  ...
}

// This function signature requires multiple lines, but
// the const keyword is on the line with the last parameter.
ReturnType ReallyLongFunctionName(Type par1,
                                  Type par2) const {
  ...
}

如果有些參數(shù)沒有用到,在函數(shù)定義處將參數(shù)名注釋起來:

// Always have named parameters in interfaces.
class Shape {
 public:
  virtual void Rotate(double radians) = 0;
}

// Always have named parameters in the declaration.
class Circle : public Shape {
 public:
  virtual void Rotate(double radians);
}

// Comment out unused named parameters in definitions.
void Circle::Rotate(double /*radians*/) {}
// Bad - if someone wants to implement later, it's not clear what the
// variable means.
void Circle::Rotate(double) {}

譯者注:關(guān)于UNIX/Linux風(fēng)格為什么要把左大括號置于行尾(.cc文件的函數(shù)實現(xiàn)處,左大括號位于行首),我的理解是代碼看上去比較簡約,想想行首除了函數(shù)體被一對大括號封在一起之外,只有右大括號的代碼看上去確實也舒服;Windows風(fēng)格將左大括號置于行首的優(yōu)點是匹配情況一目了然。

5. 函數(shù)調(diào)用(Function Calls)

盡量放在同一行,否則,將實參封裝在圓括號中。

函數(shù)調(diào)用遵循如下形式:

bool retval = DoSomething(argument1, argument2, argument3);

如果同一行放不下,可斷為多行,后面每一行都和第一個實參對齊,左圓括號后和右圓括號前不要留空格:

bool retval = DoSomething(averyveryveryverylongargument1,
                          argument2, argument3);

如果函數(shù)參數(shù)比較多,可以出于可讀性的考慮每行只放一個參數(shù):

bool retval = DoSomething(argument1,
                          argument2,
                          argument3,
                          argument4);

如果函數(shù)名太長,以至于超過行最大長度,可以將所有參數(shù)獨立成行:

if (...) {
  ...
  ...
  if (...) {
    DoSomethingThatRequiresALongFunctionName(
        very_long_argument1,  // 4 space indent
        argument2,
        argument3,
        argument4);
  }

6. 條件語句(Conditionals)

更提倡不在圓括號中添加空格,關(guān)鍵字else另起一行。

對基本條件語句有兩種可以接受的格式,一種在圓括號和條件之間有空格,一種沒有。

最常見的是沒有空格的格式,那種都可以,還是一致性為主。如果你是在修改一個文件,參考當(dāng)前已有格式;如果是寫新的代碼,參考目錄下或項目中其他文件的格式,還在徘徊的話,就不要加空格了。

if (condition) {  // no spaces inside parentheses
  ...  // 2 space indent.
} else {  // The else goes on the same line as the closing brace.
  ...
}

如果你傾向于在圓括號內(nèi)部加空格:

if ( condition ) {  // spaces inside parentheses - rare
  ...  // 2 space indent.
} else {  // The else goes on the same line as the closing brace.
  ...
}

注意所有情況下if和左圓括號間有個空格,右圓括號和左大括號(如果使用的話)間也要有個空格:

if(condition)     // Bad - space missing after IF.
if (condition){   // Bad - space missing before {.
if(condition){    // Doubly bad.
if (condition) {  // Good - proper space after IF and before {.

有些條件語句寫在同一行以增強可讀性,只有當(dāng)語句簡單并且沒有使用else子句時使用:

if (x == kFoo) return new Foo();
if (x == kBar) return new Bar();

如果語句有else分支是不允許的:

// Not allowed - IF statement on one line when there is an ELSE clause
if (x) DoThis();
else DoThat();

通常,單行語句不需要使用大括號,如果你喜歡也無可厚非,也有人要求if必須使用大括號:

if (condition)
  DoSomething();  // 2 space indent.

if (condition) {
  DoSomething();  // 2 space indent.
}

但如果語句中哪一分支使用了大括號的話,其他部分也必須使用:

// Not allowed - curly on IF but not ELSE
if (condition) {
  foo;
} else
  bar;

// Not allowed - curly on ELSE but not IF
if (condition)
  foo;
else {
  bar;
}
 
// Curly braces around both IF and ELSE required because
// one of the clauses used braces.
if (condition) {
  foo;
} else {
  bar;
}

7. 循環(huán)和開關(guān)選擇語句(Loops and Switch Statements)

switch語句可以使用大括號分塊;空循環(huán)體應(yīng)使用{}continue

switch語句中的case塊可以使用大括號也可以不用,取決于你的喜好,使用時要依下文所述。

如果有不滿足case枚舉條件的值,要總是包含一個default(如果有輸入值沒有case去處理,編譯器將報警)。如果default永不會執(zhí)行,可以簡單的使用assert

switch (var) {
  case 0: {  // 2 space indent
    ...      // 4 space indent
    break;
  }
  case 1: {
    ...
    break;
  }
  default: {
    assert(false);
  }
}

空循環(huán)體應(yīng)使用{}continue,而不是一個簡單的分號:

while (condition) {
  // Repeat test until it returns false.
}
for (int i = 0; i < kSomeNumber; ++i) {}  // Good - empty body.
while (condition) continue;  // Good - continue indicates no logic.
while (condition);  // Bad - looks like part of do/while loop.

8. 指針和引用表達式(Pointers and Reference Expressions)

句點(.)或箭頭(->)前后不要有空格,指針/地址操作符(*、&)后不要有空格。

下面是指針和引用表達式的正確范例:

x = *p;
p = &x;
x = r.y;
x = r->y;

注意:

1) 在訪問成員時,句點或箭頭前后沒有空格;

2) 指針操作符*&后沒有空格。

在聲明指針變量或參數(shù)時,星號與類型或變量名緊挨都可以:

// These are fine, space preceding.
char *c;
const string &str;

// These are fine, space following.
char* c;    // but remember to do "char* c, *d, *e, ...;"!
const string& str;
char * c;  // Bad - spaces on both sides of *
const string & str;  // Bad - spaces on both sides of &

同一個文件(新建或現(xiàn)有)中起碼要保持一致。

譯者注:個人比較習(xí)慣與變量緊挨的方式

9. 布爾表達式(Boolean Expressions)

如果一個布爾表達式超過標(biāo)準(zhǔn)行寬(80字符),如果斷行要統(tǒng)一一下。

下例中,邏輯與(&&)操作符總位于行尾:

if (this_one_thing > this_other_thing &&
    a_third_thing == a_fourth_thing &&
    yet_another & last_one) {
  ...
}

兩個邏輯與(&&)操作符都位于行尾,可以考慮額外插入圓括號,合理使用的話對增強可讀性是很有幫助的。

譯者注:個人比較習(xí)慣邏輯運算符位于行首,邏輯關(guān)系一目了然,各人喜好而已,至于加不加圓括號的問題,如果你對優(yōu)先級了然于胸的話可以不加,但可讀性總是差了些

10. 函數(shù)返回值(Return Values)

return表達式中不要使用圓括號。

函數(shù)返回時不要使用圓括號:

return x;  // not return(x);

11. 變量及數(shù)組初始化(Variable and Array Initialization)

選擇=還是()

需要做二者之間做出選擇,下面的形式都是正確的:

int x = 3;
int x(3);
string name("Some Name");
string name = "Some Name";

12. 預(yù)處理指令(Preprocessor Directives)

預(yù)處理指令不要縮進,從行首開始。

即使預(yù)處理指令位于縮進代碼塊中,指令也應(yīng)從行首開始。

// Good - directives at beginning of line
  if (lopsided_score) {
#if DISASTER_PENDING      // Correct -- Starts at beginning of line
    DropEverything();
#endif
    BackToNormal();
  }
// Bad - indented directives
  if (lopsided_score) {
    #if DISASTER_PENDING  // Wrong!  The "#if" should be at beginning of line
    DropEverything();
    #endif                // Wrong!  Do not indent "#endif"
    BackToNormal();
  }

13. 類格式(Class Format)

聲明屬性依次序是public:protected:private:,每次縮進1個空格(譯者注,為什么不是兩個呢?也有人提倡private在前,對于聲明了哪些數(shù)據(jù)成員一目了然,還有人提倡依邏輯關(guān)系將變量與操作放在一起,都有道理:-)

類聲明(對類注釋不了解的話,參考第六篇中的類注釋一節(jié))的基本格式如下:

class MyClass : public OtherClass {
 public:      // Note the 1 space indent!
  MyClass();  // Regular 2 space indent.
  explicit MyClass(int var);
  ~MyClass() {}

  void SomeFunction();
  void SomeFunctionThatDoesNothing() {
  }

  void set_some_var(int var) { some_var_ = var; }
  int some_var() const { return some_var_; }

 private:
  bool SomeInternalFunction();

  int some_var_;
  int some_other_var_;
  DISALLOW_COPY_AND_ASSIGN(MyClass);
};

注意:

1) 所以基類名應(yīng)在80列限制下盡量與子類名放在同一行;

2) 關(guān)鍵詞public:、protected:private:要縮進1個空格(譯者注,MSVC多使用tab縮進,且這三個關(guān)鍵詞沒有縮進)

3) 除第一個關(guān)鍵詞(一般是public)外,其他關(guān)鍵詞前空一行,如果類比較小的話也可以不空;

4) 這些關(guān)鍵詞后不要空行;

5) public放在最前面,然后是protectedprivate

6) 關(guān)于聲明次序參考第三篇聲明次序一節(jié)。

14. 初始化列表(Initializer Lists)

構(gòu)造函數(shù)初始化列表放在同一行或按四格縮進并排幾行。

兩種可以接受的初始化列表格式:

// When it all fits on one line:
MyClass::MyClass(int var) : some_var_(var), some_other_var_(var + 1) {

// When it requires multiple lines, indent 4 spaces, putting the colon on
// the first initializer line:
MyClass::MyClass(int var)
    : some_var_(var),             // 4 space indent
      some_other_var_(var + 1) {  // lined up
  ...
  DoSomething();
  ...
}

15. 命名空間格式化(Namespace Formatting)

命名空間內(nèi)容不縮進。

命名空間不添加額外縮進層次,例如:

namespace {

void foo() {  // Correct.  No extra indentation within namespace.
  ...
}

}  // namespace

不要縮進:

namespace {

  // Wrong.  Indented when it should not be.
  void foo() {
    ...
  }

}  // namespace

16. 水平留白(Horizontal Whitespace)

水平留白的使用因地制宜。不要在行尾添加無謂的留白。

普通

void f(bool b) {  // Open braces should always have a space before them.
  ...
int i = 0;  // Semicolons usually have no space before them.
int x[] = { 0 };  // Spaces inside braces for array initialization are
int x[] = {0};    // optional.  If you use them, put them on both sides!
// Spaces around the colon in inheritance and initializer lists.
class Foo : public Bar {
 public:
  // For inline function implementations, put spaces between the braces
  // and the implementation itself.
  Foo(int b) : Bar(), baz_(b) {}  // No spaces inside empty braces.
  void Reset() { baz_ = 0; }  // Spaces separating braces from implementation.
  ...

添加冗余的留白會給其他人編輯時造成額外負擔(dān),因此,不要加入多余的空格。如果確定一行代碼已經(jīng)修改完畢,將多余的空格去掉;或者在專門清理空格時去掉(確信沒有其他人在使用)。

循環(huán)和條件語句

if (b) {          // Space after the keyword in conditions and loops.
} else {          // Spaces around else.
}
while (test) {}   // There is usually no space inside parentheses.
switch (i) {
for (int i = 0; i < 5; ++i) {
switch ( i ) {    // Loops and conditions may have spaces inside
if ( test ) {     // parentheses, but this is rare.  Be consistent.
for ( int i = 0; i < 5; ++i ) {
for ( ; i < 5 ; ++i) {  // For loops always have a space after the
  ...                   // semicolon, and may have a space before the
                        // semicolon.
switch (i) {
  case 1:         // No space before colon in a switch case.
    ...
  case 2: break;  // Use a space after a colon if there's code after it.

操作符

x = 0;              // Assignment operators always have spaces around
                    // them.
x = -5;             // No spaces separating unary operators and their
++x;                // arguments.
if (x && !y)
  ...
v = w * x + y / z;  // Binary operators usually have spaces around them,
v = w*x + y/z;      // but it's okay to remove spaces around factors.
v = w * (x + z);    // Parentheses should have no spaces inside them.

模板和轉(zhuǎn)換

vector<string> x;           // No spaces inside the angle
y = static_cast<char*>(x);  // brackets (< and >), before
                            // <, or between >( in a cast.
vector<char *> x;           // Spaces between type and pointer are
                            // okay, but be consistent.
set<list<string> > x;       // C++ requires a space in > >.
set< list<string> > x;      // You may optionally make use
                            // symmetric spacing in < <.

17. 垂直留白(Vertical Whitespace)

垂直留白越少越好。

這不僅僅是規(guī)則而是原則問題了:不是非常有必要的話就不要使用空行。尤其是:不要在兩個函數(shù)定義之間空超過2行,函數(shù)體頭、尾不要有空行,函數(shù)體中也不要隨意添加空行。

基本原則是:同一屏可以顯示越多的代碼,程序的控制流就越容易理解。當(dāng)然,過于密集的代碼塊和過于疏松的代碼塊同樣難看,取決于你的判斷,但通常是越少越好。

函數(shù)頭、尾不要有空行:

void Function() {

  // Unnecessary blank lines before and after

}

代碼塊頭、尾不要有空行:

while (condition) {
  // Unnecessary blank line after

}
if (condition) {

  // Unnecessary blank line before
}

if-else塊之間空一行還可以接受:

if (condition) {
  // Some lines of code too small to move to another function,
  // followed by a blank line.

} else {
  // Another block of code
}

______________________________________

譯者:首先說明,對于代碼格式,因人、因系統(tǒng)各有優(yōu)缺點,但同一個項目中遵循同一標(biāo)準(zhǔn)還是有必要的:

1. 行寬原則上不超過80列,把22寸的顯示屏都占完,怎么也說不過去;

2. 盡量不使用非ASCII字符,如果使用的話,參考UTF-8格式(尤其是UNIX/Linux下,Windows下可以考慮寬字符),盡量不將字符串常量耦合到代碼中,比如獨立出資源文件,這不僅僅是風(fēng)格問題了;

3. UNIX/Linux下無條件使用空格,MSVC的話使用Tab也無可厚非;

4. 函數(shù)參數(shù)、邏輯條件、初始化列表:要么所有參數(shù)和函數(shù)名放在同一行,要么所有參數(shù)并排分行;

5. 除函數(shù)定義的左大括號可以置于行首外,包括函數(shù)/類/結(jié)構(gòu)體/枚舉聲明、各種語句的左大括號置于行尾,所有右大括號獨立成行;

6. ./->操作符前后不留空格,*/&不要前后都留,一個就可,靠左靠右依各人喜好;

7. 預(yù)處理指令/命名空間不使用額外縮進,類/結(jié)構(gòu)體/枚舉/函數(shù)/語句使用縮進;

8. 初始化用=還是()依個人喜好,統(tǒng)一就好;

9. return不要加();

10. 水平/垂直留白不要濫用,怎么易讀怎么來。

Feedback

# re: [譯]Google C++編程風(fēng)格指南(七)  回復(fù)  更多評論   

2008-07-25 10:07 by tangfl
4) 圓括號與參數(shù)間沒有看過; ???

# re: [譯]Google C++編程風(fēng)格指南(七)  回復(fù)  更多評論   

2008-07-25 14:27 by Fox
空格,呵呵,謝謝提醒!:D

# re: [譯]Google C++編程風(fēng)格指南(七)  回復(fù)  更多評論   

2010-07-18 04:13 by AvilaNoelle22
It's good that we can get the <a href="http://bestfinance-blog.com/topics/home-loans">home loans</a> moreover, it opens up completely new possibilities.

# re: [譯]Google C++編程風(fēng)格指南(七)  回復(fù)  更多評論   

2010-08-02 02:48 by annotated bibliography
That's not easy to deal with several things at the same time, especially when you have to create the essay papers. The only purchase essays service would manage even with complicated tasks.
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产综合视频| 亚洲高清不卡| 国产精品一区二区在线观看| 久久福利资源站| 欧美亚洲一级| 欧美在线免费视频| 久久国内精品视频| 久久综合网hezyo| 欧美v日韩v国产v| 欧美日本视频在线| 国产精品国产三级国产专播品爱网 | 欧美高清一区| 亚洲国内精品在线| 一本色道久久综合亚洲91| 日韩一级成人av| 午夜精品一区二区三区在线视 | 久久精品五月| 久久亚洲私人国产精品va| 蜜桃伊人久久| 亚洲美女精品成人在线视频| 在线亚洲精品福利网址导航| 亚洲一级片在线看| 欧美伊久线香蕉线新在线| 久久久久久久一区二区三区| 欧美激情第3页| 国产伦精品一区二区三区照片91 | 国产农村妇女精品| 国产一区日韩欧美| 日韩一二三区视频| 欧美一区成人| 亚洲国产天堂久久综合| 亚洲一区二区三区在线| 久久噜噜亚洲综合| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 免费在线看成人av| 一本色道久久综合亚洲精品按摩 | 欧美久久久久久久| 国产一区在线免费观看| 99精品视频免费观看视频| 久久精品综合一区| 日韩视频免费看| 久久亚洲综合| 国产嫩草影院久久久久| 日韩亚洲国产精品| 免费观看成人| 香蕉乱码成人久久天堂爱免费| 欧美成人官网二区| 黑丝一区二区| 欧美一区二区三区免费大片| 欧美国产视频在线| 小黄鸭视频精品导航| 欧美日韩一区精品| 亚洲精品久久久久久久久久久久久| 欧美在线免费观看亚洲| 99精品国产热久久91蜜凸| 久久亚洲欧美国产精品乐播| 国产私拍一区| 性欧美办公室18xxxxhd| 亚洲蜜桃精久久久久久久| 欧美 日韩 国产精品免费观看| 国产日韩精品在线| 欧美亚洲免费在线| 中文av一区二区| 欧美色中文字幕| 亚洲免费av网站| 亚洲日本中文字幕免费在线不卡| 久久精品女人| 激情综合色综合久久| 亚洲综合电影| 一本色道久久综合狠狠躁篇的优点| 欧美成人网在线| 伊人成年综合电影网| 久久精品99国产精品| 狠狠色丁香久久综合频道| 激情成人av在线| 久久综合国产精品台湾中文娱乐网| 一本色道久久综合亚洲二区三区| 欧美日韩精品免费观看| 亚洲精品中文字幕女同| 亚洲第一在线| 美日韩精品免费| 亚洲电影网站| 亚洲人成在线播放| 欧美日韩日日骚| 亚洲欧美在线一区二区| 一个色综合导航| 国产精品国产三级国产a| 一区二区冒白浆视频| 日韩网站在线| 国产日产亚洲精品| 美腿丝袜亚洲色图| 免费欧美日韩| 一区二区av| 亚洲欧美资源在线| 国模套图日韩精品一区二区| 美女任你摸久久| 欧美激情在线有限公司| av不卡在线| 久久久99爱| 一区二区高清| 久久精品91久久久久久再现| 亚洲欧洲日韩在线| 亚洲午夜精品久久| 亚洲二区免费| 亚洲香蕉网站| 亚洲成色最大综合在线| 亚洲精品一区二区网址| 国产日产亚洲精品| 亚洲欧洲精品一区二区三区不卡 | 国产欧美日韩综合精品二区| 久久精品在线| 欧美日韩成人激情| 久久aⅴ国产紧身牛仔裤| 久久在线免费观看| 亚洲综合视频网| 久久综合精品一区| 欧美一区二区三区四区夜夜大片| 久久只有精品| 亚洲欧美日韩视频一区| 久久免费视频在线| 亚洲欧美日韩一区二区三区在线| 久久久999精品| 亚洲一区自拍| 男人插女人欧美| 快she精品国产999| 国产精品vip| 亚洲国产精品一区二区久| 国产乱码精品一区二区三区五月婷 | 噜噜噜噜噜久久久久久91| 欧美日韩国产综合新一区| 久久久91精品国产| 欧美日韩三级电影在线| 久久亚洲综合色一区二区三区| 欧美体内谢she精2性欧美| 欧美成在线视频| 国产一区二区三区av电影 | 亚洲精品视频在线看| 久久国产精品99国产| 亚洲欧美日韩精品久久| 欧美激情 亚洲a∨综合| 在线亚洲欧美| 夜夜嗨av一区二区三区| 久久精品人人| 久久精品夜色噜噜亚洲aⅴ| 欧美亚洲第一区| 亚洲激情国产精品| 亚洲精品1区2区| 久久综合色88| 老鸭窝91久久精品色噜噜导演| 国产婷婷97碰碰久久人人蜜臀| 亚洲一区www| 亚洲在线观看视频网站| 欧美精品在线看| 欧美激情亚洲| 亚洲精品女人| 欧美激情va永久在线播放| 欧美大胆a视频| 亚洲精品中文字幕女同| 欧美成人精品福利| 亚洲高清不卡| 夜夜夜久久久| 欧美午夜激情视频| 一区二区高清| 性久久久久久久久久久久| 国产一区二区三区久久久久久久久| 在线综合亚洲欧美在线视频| 日韩亚洲欧美综合| 欧美日韩一区二区在线视频| 99re在线精品| 午夜老司机精品| 国产视频亚洲| 久久福利资源站| 日韩午夜电影av| 性色av一区二区怡红| 国产日韩亚洲| 免费成人av| 日韩一级黄色大片| 欧美怡红院视频| 伊人成人在线视频| 欧美美女日韩| 亚洲欧美日韩在线| 暖暖成人免费视频| 一本久久综合亚洲鲁鲁| 国产精品久久999| 欧美在线观看网站| 鲁大师影院一区二区三区| 99re亚洲国产精品| 欧美jizz19性欧美| 亚洲一区二区三区在线| 国产精品推荐精品| 榴莲视频成人在线观看| 亚洲免费观看高清完整版在线观看熊 | 欧美91视频| 亚洲欧美精品在线观看| 老司机免费视频一区二区| 亚洲一区二区不卡免费| 黄网站免费久久| 国产精品久久久久99| 免费成人黄色| 亚洲特色特黄|