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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

OGRE Code Review HOWTO

http://temas.obelisk.net/ogre/CR/docs/howto.html

OGRE Code Review HOWTO

Thomas Muldowney


Introduction

The time has come for all good men to come to the aid of their favorite rendering engine. The OGRE Project needs you to help with an ongoing code review. This document will outline how everyone will be able to participate and what guidelines need to be followed. It will also outline what will need to be looked for during the review process.

The Process

The code review will center around this website and use a fairly simple voting process to decide when a file has passed review. Here is a quickstart guide to understanding the process:

  1. Create a normal user account on the website.
  2. Pick a file that needs more reviewers and flag that you are beginning to review it.
  3. With the other reviewers leave comments and/or patches to make the file compliant with the process.
  4. When you are done reviewing a file flag your review complete.
  5. When an administrator has decided you have been helpful in the review process they will promote you to a voter.
  6. Once a voter you can still continue the normal process of commenting and submitting patches, but you can now vote on the completion of a file.
  7. When a file has received a set number of votes it will be flagged for an administrator to finalize.
  8. When an administrator finalizes a file it is considered to be fully satisfying the reveiw rules, and may be reopened when major changes are made.

What to Look For

The following areas are where the focus of the review should be directed. Many will have very specific criteria to be considered complete, but others will be more open to a general concensus of the reviewers. The current list of review points is fairly short and will be updated as the review develops. Many of the review points come from the Effective C++, More Effective C++ and Effective STL by Scotty Meyers. If you don't already have these books, you really want to get them. Other points come from decisions by the core team and practical experience. If you feel there should be additions or changes, please contact .

Style

These rules deal with the general look of the files, including issues such as indenting, bracket placement, variable naming, etc.

  • All indentation is done using 4 spaces, no tabs.

  • Braces are placed under any line that needs a new logical block. This includes if, else, for, while, class defnitions, function definitions, and most others.

    Example?1.?Normal Brace Usage

                  while (expr)
                  {
                      // This is the logical block. It spans multiple lines,
                      // and is surrounded by braces.
                  }
                
  • The primary namespace declaration for a file should have the brace placed on the same line as the declaration.

    Example?2.?Namespace Brace Usage

                  namespace Ogre {
                
  • Logical blocks that are only one line do not need braces, but should be on a new line and indented. If a previous and connected block statement (else to an if) has braces then the connected block must have braces, even if it is one line long.

    Example?3.?One Line Logical Blocks

                  if (expr)
                      // One line block
                  else
                      // else may be handled the same.
                

    Example?4.?Connected Blocks

                  if (expr)
                  {
                      // This part is multi line and with braces.
                      // So we must have braces on any connected parts now.
                  }
                  else
                  {
                      // Even though this is on line, it has braces.
                  }
                
  • Control and looping statements that are followed by a "(" should have a space before the open-parenthesis.

    Example?5.?Parenthesis Space

                  if (expr)
                      // Space after the if
                  while (expr)
                      // Space after the while
                  for (expr)
                      // Space after the for
                
  • Control and looping expressions inside parentheses should not have a space before or after the expression.

    Example?6.?Expression Spaces

                  if (expr) // This acceptable, no space before or after expr
                  if ( expr ) // UNACCEPTABLE, spaces should not be before or after expr
                
  • The "else if" control block should always be on a single line.

    Example?7.?Else If Control Block

                  // Acceptable, else if on one line
                  else if
                  // UNACCEPTABLE else if on multiple lines
                  else
                      if
                
  • Switch statements abide by all the previous control block rules, and must have their case statements on the same indentation level as the actual switch statement. Statements inside a case should be indented one level.

    Example?8.?Switch Statements

                  // Acceptable
                  switch (expr)
                  {
                  case CASE1:
                      // The case statement is on the same indentation level
                      // with the switch, and it's statements are indented
                      // one level.
                      break;
                  };
    
                  // UNACCEPTABLE
                  switch( expr )
                  {
                      case CASE1:
                          // The case statement should be on the same
                          // indentation level of the switch statement
                          break;
                  };
                
  • All names should be written in English.

  • Method and function names should be verbs that clearly state what they will do. The name should use a mixed case format, starting with a lower case letter. Methods not intended for general API usage, rather for internal engine usage, it should be prefixed with an underscore.

  • Variables should clearly state what information they contain and use a mixed case format, starting with a lower case letter. Private and protected member variables should be prefixed with a lower case "m" and be followed by an upper case letter. The names may use limited abbreviation, but should be quickly understandable. An exception to this is looping variables (such as in afor loop), this may be a simple single letter variable such as "i".

    Example?9.?Variable Naming

                    loggingLevel // Most clear
                    logLvl // Acceptable, still quickly clear
                    ll // unacceptable
    
                    for (int i = 0; i < max; ++i) // Acceptable
                  

    Are we sure about the "m" for those member vars?

  • Each class should be contained in its won file, unless the class is directly relevant (supporting) to another and is small.

Design Guidelines

  • Prefer initialization to assignment in constructors.

    This one needs a lot of improvement in our code.

  • Use const when it is possible. This includes variables and method declaration.

  • Use pass-by-reference over pass-by-value when possible.

  • Prefix calls to standard library functions with "::".

  • Strongly prefer C++ style casts to C style casts.

  • For STL containers, use empty() instead of checking size() against zero.

  • When advancing iterators and variables prefer ++var to var++.

  • If a base class has virtual functions, derived classes should have the "virtual" keyword repeated for those functions.

    Note

    There are differing reports on whether this might break some compilations for platforms we still wish to maintain. If that is the case, we need to reevaluate this.

  • Base type names should not use any abbreviations.

    Example?10.?Type Names

                  unsigned int // Acceptable
                  uint // UNACCEPTABLE
                
  • C++ style headers should be preferred over C style.

    Example?11.?C++ Style Headers

                  #inclue <cstring> // Acceptable
                  #include <string.h> // UNACCEPTABLE
                
  • Prefer standard C++ library and STL functions over C stdlib functions.

    Example?12.?Functions

                  // Acceptable
                  ifstream fil;
                  fil.open("filename.txt");
                  fil.close();
    
                  // UNACCEPTABLE
                  FILE* fil = fopen("filename.txt", "w");
                  fclose(fil);
                
  • All class variables should be initialized to a sane value in the constructor.

  • It is not necessary to check that a pointer value is not NULL before deleting it in a destructor, or elsewhere. C++ guarantees that delete on a NULL value is safe.

    Example?13.?Deleting Pointers

                    // Acceptable, delete NULL is safe
                    Val* ptrValue = 0;
                    delete ptrValue;
                    // UNACCEPTABLE
                    if (ptrValue != NULL)
                        delete ptrValue;
                
  • 0 should be preferred over NULL.

    Example?14.?Prefer 0

                  Val* ptrValue = 0; // Acceptable
                  Val* ptrValue = NULL; // UNACCEPTABLE
                
  • When a member value pointer is deleted, it should be set to 0.

OGRE Specific Guidelines

  • Prefer Ogre::String over std::string or other string types.

posted on 2007-01-29 21:59 楊粼波 閱讀(254) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产日韩欧美在线图片| 亚洲高清视频在线观看| 欧美美女bbbb| 欧美国产精品人人做人人爱| 久久久久久久久久久久久女国产乱 | 亚洲一区二区免费视频| 亚洲美女视频| 一区二区高清在线| 午夜在线不卡| 久久九九国产精品| 久热re这里精品视频在线6| 女人色偷偷aa久久天堂| 欧美日韩国产美女| 国产精品乱子乱xxxx| 国产欧美精品在线| 在线精品视频一区二区| 亚洲精品欧洲| 亚洲欧美日韩精品在线| 久久久亚洲精品一区二区三区| 免费观看成人www动漫视频| 亚洲国产乱码最新视频| 亚洲一区二区三区四区中文| 久久久久久网| 欧美日韩国产色综合一二三四| 国产精品国产自产拍高清av王其| 国产在线乱码一区二区三区| 国产精品视频在线观看| 亚洲第一综合天堂另类专| 亚洲视频在线一区观看| 久热综合在线亚洲精品| 一区二区三区成人精品| 久久久久久网址| 国产精品大全| 亚洲精品国产精品国自产在线 | 欧美电影在线观看完整版| 一区二区三区欧美在线| 91久久精品美女| 国产精品久久婷婷六月丁香| 国产精品一区二区a| 国内精品久久久久影院优| 亚洲国产一区二区视频| 小黄鸭精品密入口导航| 亚洲国产精品美女| 免费成年人欧美视频| 91久久极品少妇xxxxⅹ软件| 亚洲欧美韩国| 欧美性天天影院| 亚洲国产精品999| 午夜天堂精品久久久久| 亚洲欧洲一区二区天堂久久| 久久久人人人| 黄色亚洲大片免费在线观看| 午夜精品久久久久久久白皮肤 | 亚洲尤物视频在线| 欧美激情精品久久久久久蜜臀| 亚洲伊人网站| 国产精品白丝av嫩草影院| av成人黄色| 亚洲欧洲综合| 欧美精品国产一区| 亚洲黄色天堂| 亚洲大胆女人| 免费高清在线一区| 亚洲国产精品成人综合色在线婷婷| 久久久久久穴| 久久久噜久噜久久综合| 伊人成年综合电影网| 久久九九免费| 久久先锋资源| 亚洲黄色影院| 亚洲日本一区二区三区| 欧美日韩ab片| 亚洲一区三区在线观看| 99精品欧美一区| 欧美午夜剧场| 欧美在线播放视频| 久久精品亚洲精品| 亚洲国产婷婷香蕉久久久久久| 欧美v国产在线一区二区三区| 久热re这里精品视频在线6| 日韩视频精品在线| 国产精品99久久久久久宅男| 国产精品一级二级三级| 久久视频在线视频| 男人的天堂成人在线| 一区二区精品在线| 亚洲影视九九影院在线观看| 韩国v欧美v日本v亚洲v| 亚洲黄色在线| 夜色激情一区二区| 一区二区三区四区五区精品视频 | 日韩视频中午一区| 一个色综合导航| 国产亚洲二区| 欧美激情在线狂野欧美精品| 欧美日韩一区三区四区| 久久国产精品一区二区| 久久久久久久久久码影片| 亚洲精品视频在线播放| 午夜激情亚洲| 亚洲精品综合| 欧美在线观看一区| 夜夜夜久久久| 久久久www免费人成黑人精品| 99re这里只有精品6| 久久精品国产v日韩v亚洲| 亚洲视频一区在线观看| 久久色在线播放| 欧美在线观看日本一区| 欧美日韩精品在线播放| 模特精品裸拍一区| 国产女人18毛片水18精品| 亚洲国产精品高清久久久| 国产视频一区在线观看| 99视频精品在线| 亚洲欧洲日本在线| 久久激情五月激情| 欧美一区二区黄| 欧美色欧美亚洲高清在线视频| 蜜桃精品久久久久久久免费影院| 国产精品青草综合久久久久99 | 亚洲人被黑人高潮完整版| 午夜精品久久久| 亚洲视频精品在线| 欧美大秀在线观看| 久久综合久色欧美综合狠狠| 国产麻豆91精品| 亚洲一区二区免费看| 亚洲私人影吧| 欧美国产国产综合| 亚洲成色777777在线观看影院| 一区二区三区在线高清| 欧美在线不卡| 久久精品日韩| 国内成+人亚洲+欧美+综合在线| 在线视频中文亚洲| 亚洲一区欧美激情| 国产精品亚洲一区二区三区在线| 99视频精品| 亚洲欧美日韩国产一区二区| 国产精品www.| 亚洲欧美国产77777| 欧美诱惑福利视频| 黄色成人在线网站| 久久久久高清| 欧美黄污视频| 99国产精品一区| 欧美视频在线看| 亚洲淫性视频| 久久一区二区三区四区| 亚洲国产婷婷| 亚洲免费观看视频| 欧美va亚洲va国产综合| 美女黄毛**国产精品啪啪| 好看的日韩视频| 欧美.www| 一本大道久久a久久精品综合| 亚洲深夜激情| 国产欧美日韩另类一区| 久久99伊人| 亚洲电影免费观看高清| 一区二区三区不卡视频在线观看| 欧美色大人视频| 久久精品国产亚洲a| 亚洲国产精品va在线看黑人| 亚洲免费观看在线观看| 国产精品日韩欧美一区| 久久精品国产亚洲a| 亚洲三级影院| 欧美影院精品一区| 亚洲欧洲久久| 国产欧美91| 欧美精品日韩三级| 午夜激情久久久| 最新中文字幕亚洲| 久久激情视频久久| 99精品国产热久久91蜜凸| 国产九九精品视频| 欧美国产日韩二区| 午夜视频在线观看一区二区三区| 久久精品国产亚洲高清剧情介绍| 亚洲日产国产精品| 国产有码一区二区| 欧美午夜激情视频| 久热精品在线视频| 亚洲在线视频免费观看| 欧美大胆成人| 欧美在线综合| 一卡二卡3卡四卡高清精品视频| 国产日韩精品在线播放| 欧美日本在线观看| 久久综合激情| 欧美一区二区三区四区在线| 日韩视频免费观看| 亚洲大胆av| 欧美高清不卡| 久久久亚洲国产美女国产盗摄| 亚洲欧美高清| 亚洲性感美女99在线| 亚洲精品一区中文|