第一章算法概论心得体会

一、头文件

1.包含头文件

1.1 先系统头文件,后用户头文件。

1.2 系统头文件,稳定的目录结构,应采用包含子路径方式。

1.3 自定义头文件,不稳定目录结构,应在dsp中指定包含路径。

1.4 系统头文件应用:#include <xxx.h>

1.5 自定义同文件应用:#include "xxx.h"

1.6 只引用需要的头文件。

2.h和cpp文件

2.1 头文件命名为*.h,内联文件命名为*.inl;C++文件命名为*.cpp

2.2 文件名用大小写混合,或者小写混合。例如DiyMainview.cppinfoview.cpp。不要用无意义的名称:例如XImage.cppSView.cppxlog.cpp

2.3 头文件除了特殊情况,应使用#ifdef控制块。

2.4 头文件#endif应采用行尾注释。

2.5 头文件,首先是包含代码块,其次是宏定义代码块,然后是全局变量,全局常量,类型定义,类定义,内联部分。

2.6 CPP文件,包含指令,宏定义,全局变量,函数定义。

3.文件结构

3.1 文件应包含文件头注释和内容。

3.2 函数体类体之间原则上用2个空行,特殊情况下可用一个或者不需要空行。

4.空行

4.1 文件头、控制块,#include部分、宏定义部分、class部分、全局常量部分、全局变量部分、函数和函数之间,用两个空行。

二、注释方面

1.文件头注释

1.1 作者,文件名称,文件说明,生成日期(可选)

2.函数注释

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 同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。

1.2 标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。

1.3 最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。

1.4 避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i""I""function""Function"等等。

1.5 避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。

1.6 正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue" 和 "nMaxValue""GetName()" 和"SetName()" ….

1.7 避免名字中出现数字编号:尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

2.T,C,M,R类

2.1 T类表示简单数据类型,不对资源拥有控制权,在析构过程中没有释放资源动作。

2.2 C表示从CBase继承的类。该类不能从栈上定义变量,只能从堆上创建。

2.3 M表示接口类。

2.4 R是资源类,通常是系统固有类型。除了特殊情况,不应在开发代码中出现R类型。

3.函数名

3.1 M类的函数名称应采用HandleXXX命名,例如:HandleTimerEvent;不推荐采用java风格,例如 handleTimerEvent;除了标准c风格代码,不推荐用下划线,例如,handle_event

3.2 Leave函数,用后缀L。

3.3 Leave函数,且进清除栈,用后缀LC。

3.4 Leave函数,且删除对象,用后缀LD。

4.函数参数

4.1 函数参数用a作为前缀。

4.2 避免出现和匈牙利混合的命名规则如apBuffer名称。用aBuffer即可。

4.3 函数参数比较多时,应考虑用结构代替。

4.4 如果不能避免函数参数比较多,应在排版上可考虑每个参数占用一行,参数名竖向对齐。

5.成员变量

5.1 成员变量用m最为前缀。

5.2 避免出现和匈牙利混合的命名规则如mpBuffer名称。用mBuffer即可。

6.局部变量

6.1 循环变量和简单变量采用简单小写字符串即可。例如,int i;

6.2 指针变量用p打头,例如void* pBuffer;

7.全局变量

7.1 全局变量用g_最为前缀。

8.类名

8.1 类和对象名应是名词。

8.2 实现行为的类成员函数名应是动词。

8.3 类的存取和查询成员函数名应是名词或形容词。

9.风格兼容性

9.1 对于移植的或者开源的代码,可以沿用原有风格,不用C++的命名规范。

二、数学之美体会

《数学之美》这本书最大的价值,是告诉我们,数学是以什么方式定义了我们的世界,数学思维的魅力究竟在哪里。你可以不懂那么多复杂的公式,但如果你理解了数学背后的思维方式,有了感知和理解这个世界的能力,就会进入一个新境界。

首先我们要了解数学到底有什么用。

比如让计算机处理自然语言时,人们一开始想让计算机学会人类的语法,但后来发现,要写出来的语法不仅数量特别多,而且实际的识别率特别低。后来科学家们在数学统计学工具的帮助下,让计算机计算出句子的出现概率,通过概率的大小来判断正确与否,从而解决了这个难题。在让计算机进行新闻分类时,科学家们也是另辟蹊径,利用新闻中的特征词来构建向量,再使用余弦定理完成了对新闻的分类。数学让我们抓住做事的规律也就是“道”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值