一、文件排版方面
- 包含头文件
1.1 先系统头文件,后用户头文件。
1.2 系统头文件,稳定的目录结构,应采用包含子路径方式。
1.3 自定义头文件,不稳定目录结构,应在dsp中指定包含路径。
1.4 系统头文件应用:#include <xxx.h>
1.5 自定义同文件应用:#include "xxx.h"
1.6 只引用需要的头文件。 - h和cpp文件
2.1 头文件命名为*.h
,内联文件命名为*.inl
;C++文件命名为*.cpp
2.2 文件名用大小写混合,或者小写混合。例如DiyMainView.cpp
,infoview.cpp
。不要用无意义的名称:例如XImage.cpp
;SView.cpp
;xlog.cpp
;
2.3 头文件除了特殊情况,应使用#ifdef
控制块。
2.4 头文件#endif
应采用行尾注释。
2.5 头文件,首先是包含代码块,其次是宏定义代码块,然后是全局变量,全局常量,类型定义,类定义,内联部分。
2.6 CPP文件,包含指令,宏定义,全局变量,函数定义。
二、注释方面
- 文件头注释
1.1 作者,文件名称,文件说明,生成日期(可选) - 函数注释
2.1 关键函数必须写上注释,说明函数的用途。
2.2 特别函数参数,需要说明参数的目的,由谁负责释放等等。
2.3 除了特别情况,注释写在代码之前,不要放到代码行之后。
2.4 对每个#else
或#endif
给出行末注释。
2.5 关键代码注释,包括但不限于:赋值,函数调用,表达式,分支等等。
2.6 善未实现完整的代码,或者需要进一步优化的代码,应加上// TODO ...
2.7 调试的代码,加上注释// only for DEBUG
2.8 需要引起关注的代码,加上注释// NOTE ...
2.9 对于较大的代码块结尾,如for,while,do
等,可加上// end for|while|do
三、命名方面
- 原则
1.1 同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。
1.2 标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。
1.3 最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。
1.4 避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i"
与"I"
,"function"
与"Function"
等等。
1.5 避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。
1.6 正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue"
和"nMaxValue"
,"GetName()"
和"SetName()"
….
1.7 避免名字中出现数字编号:尽量避免名字中出现数字编号,如Value1,Value2
等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。 - T,C,M,R类
2.1 T类表示简单数据类型,不对资源拥有控制权,在析构过程中没有释放资源动作。
2.2 C表示从CBase继承的类。该类不能从栈上定义变量,只能从堆上创建。
2.3 M表示接口类。
2.4 R是资源类,通常是系统固有类型。除了特殊情况,不应在开发代码中出现R类型。 - 函数名
3.1 M类的函数名称应采用HandleXXX
命名,例如:HandleTimerEvent
;不推荐采用java风格,例如handleTimerEvent
;除了标准c风格代码,不推荐用下划线,例如,handle_event
。
3.2 Leave函数,用后缀L。
3.3 Leave函数,且进清除栈,用后缀LC。
3.4 Leave函数,且删除对象,用后缀LD。 - 函数参数
4.1 函数参数用a作为前缀。
4.2 避免出现和匈牙利混合的命名规则如apBuffer
名称。用aBuffer
即可。
《数学之美》读后感
数学之美这本书的主要内容留给我最深的印象就是概率,所有的事情不管是机器翻译、股票走势、自然语言处理,还是精准搜索、密码学、基因预测、城市的犯罪预测,一切一切,都可以用概率来找到准确的规律,从而未卜先知。看完这本书,你会由衷感慨“数学是上帝描写自然的语言”。
我印象最深的一章是第一章,第一章里作者吴军讲述了数字、文明、文字这三者的发展历程中的有趣案例,例如,他将文字的发展归纳为从象形文字变为意形文字。
书中作者给了许多简单却很有实用的例子,比如简单的“布尔代数”就是搜索引擎的数学基础,地图导航就是简单的路线规划......
我从这本书里得到的最大收获就是,要时刻准备把复杂问题简单化,用很小代价解决很大问题,剩下再分步解决。