不要使用已经存在于/usr/include下的文件名(yospaly注:即编译器搜索系统头文件的路径),如db.h.
通常应尽量让文件名更加明确.http_server_logs.h就比logs.h要好.定义类时文件名一般成对出现,如foo_bar.h和foo_bar.cc,对应于类FooBar.
内联函数必须放在.h文件中.如果内联函数比较短,就直接放在.h中.如果代码比较长,可以放到以-inl.h结尾的文件中.对于包含大量内联代码的类,可以使用三个文件:
url_table.h // The class declaration. url_table.cc // The class definition. url_table-inl.h // Inline functions that include lots of code.类型命名:类型名称的每个单词首字母均大写,不包含下划线:MyExcitingClass,MyExcitingEnum.
所有类型命名——类,结构体,类型定义(typedef),枚举——均使用相同约定.例如:
// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { ...变量命名:变量名一律小写,单词之间用下划线连接.类的成员变量以下划线结尾,如:
my_exciting_local_variable my_exciting_member_variable_普通变量命名,举例:
string table_name; // OK - uses underscore. string tablename; // OK - all lowercase.Warning:
string tableName; // Bad - mixed case.结构体变量:结构体的数据成员可以和普通变量一样,不用像类那样接下划线:
struct UrlTableProperties {
string name;
int num_entries;
}结构体与类的讨论参考结构体vs.类一节.
全局变量:对全局变量没有特别要求,少用就好,但如果你要用,可以用g_或其它标志作为前缀,以便更好的区分局部变量.
常量命名:在名称前加k:kDaysInAWeek.
所有编译时常量,无论是局部的,全局的还是类中的,和其他变量稍微区别一下.k后接大写字母开头的单词::
const int kDaysInAWeek = 7;
函数命名:常规函数使用大小写混合,取值和设值函数则要求与变量名匹配:MyExcitingFunction(),MyExcitingMethod(),my_exciting_member_variable(),set_my_exciting_member_variable().
常规函数:函数名的每个单词首字母大写,没有下划线:
AddTableEntry() DeleteUrl()取值和设值函数:取值和设值函数要与存取的变量名匹配.这儿摘录一个类,num_entries_是该类的实例变量:
class MyClass {
public:
...
int num_entries() const { return num_entries_; }
void set_num_entries(int num_entries) { num_entries_ = num_entries; }
private:
int num_entries_;
};
其它非常短小的内联函数名也可以用小写字母,例如.如果你在循环中调用这样的函数甚至都不用缓存其返回值,小写命名就可以接受.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35033-18.html
我知道
77个粉丝
向美国佬开火