第一次做c++项目的一些总结

第一次接触c++项目,使用的是Qt平台开发,算法很复杂,功能却很简单但是很繁琐。前前后后忙了一个月准备交付。基本实现了客户的要求。但是却被领导骂的狗血喷头,被公司技术专家讽刺的几乎不敢抬头。在此做一个总结,希望下一个项目能有所改进。


公司主要都是做对日java 项目的,所以对命名以及设计模式非常讲究,而我一直都是野路子出身,一直都是完全靠自学以及google/baidu,说实话对设计模式以及开发流程不是很熟悉。哎,被骂也只能听着。


一些常用命名方法,记录下,留着下次能够少被骂。

一、类

除了异常类等个别情况(不希望用户把该类看作一个普通的、正常的类之情况)外,C++类/结构的命名应该遵循以下准则:

C++类的命名    类的名称都要以大写字母“C”开头,后跟一个或多个单词。为便于界定,每个单词的首字母要大写。 类的命名推荐用"名词"或"形容词+名词"的形式,例如:"CAnalyzer", "CMonkeyVector" .... 哎,这个我真被说的很惨。比如说,我对一个规则校验类的命名是“CRuleCheck”,哎,技术专家要求必须使用"CValidation"。说我不专业,哪有类名称带动词的。。花了一个晚上加班,把所有的类名都改了。哎 都是眼泪呀。

传统C结构体的命名    传统的C结构体只是一种将一组数据捆绑在一起的方式,其名称全部由大写字母组成,单词间使用下划线界定,例如:"SERVICE_STATUS", "DRIVER_INFO" ....  结构体的命名 我都是使用"_XXXX_INFO"来命名。结果非要追问我为什么要第一个"_",我也不知道我为什么要,脑子被驴踢了,总该行了吧。


二、函数
普通函数的命名    函数的名称由一个或多个单词组成。为便于界定,每个单词的首字母要大写。函数名应当使用"动词"或者"动词+名词"(动宾词组)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....

保护/私有成员函数    保护成员函数的开头应当加上一个下划线“_”以示区别,例如:"_SetState()" ....

虚函数    虚函数习惯以“Do”开头,如:"DoRefresh()", "_DoEncryption()" ....

回调和事件处理函数    回调和事件处理函数习惯以单词“On”开头。例如:"_OnTimer()", "OnExit()" ....


这个要好好学习下。,说实话,有的地方命名有些随意了。一般我命名是 小写的动词+大写的名称 比如说"doRule","doNarmolRule"。哎,还是要改。


三、变量
变量应该是程序中使用最多的标识符了,变量的命名规范可能是一套C++命名准则中最重要的部分。变量名由作用域前缀+类型前缀+一个或多个单词组成。为便于界定,每个单词的首字母要大写。变量的名字应当使用"名词"或者"形容词+名词",例如:"nCode", "m_nState","nMaxWidth" ,对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, ....

作用域前缀    作用域前缀标明一个变量的可见范围。作用域可以有如下几种:
前缀    说明
无    局部变量
m_    类的成员变量(member)
sm_    类的静态成员变量(static member)
s_    静态变量(static)
g_    外部全局变量(global)
sg_    静态全局变量(static global)
gg_    进程间共享的共享数据段全局变量(global global)

类型前缀    类型前缀标明一个变量的类型,可以有如下几种:
前缀    说明
n    整型和位域变量(number)
e    枚举型变量(enumeration)
c    字符型变量(char)
b    布尔型变量(bool)
f    浮点型变量(float)
p    指针型变量和迭代子(pointer)
pfn    特别针对指向函数的指针变量和函数对象指针(pointer of function)
g    数组(grid)
i    类的实例(instance)


以上是命名规则,希望下次命名的时候要注意,给自己提醒下。。


下面要吐槽下设计模式。

NND ,就给我一个人,我负责设计,框架搭建文档编写,还要主要程序编写,另外个程序员负责编写界面,以及界面上的逻辑。一个月,50W的单子。我能按时交付已经很难得了,技术专家指着我鼻子问,为什么没有设计文档?为什么不在编写程序之前把所有的类图画好?为什么没有测试用例?为什么命名那么随意?槽尼玛,一个月连我就两人有什么那么多的为什么?你java对日的那套东西搬到国内项目全部都是扯淡!两个人还跟我谈什么设计模式?平时遇到技术难题我问你的时候,你一脸不屑。公司领导都直接发话说这个项目的算法逻辑是公司有史以来最复杂最难的逻辑,我问你思路你除了甩头发然后说一堆不知所云的之外,项目交付时尽然和我说设计模式?

就两个人说个毛的设计模式呀。


哎,不过说真的,我也的确需要补充些这方面的知识。当然第一次做c++项目肯定还是有很多考虑不周全的,比如说对指针使用的灵活度,对堆栈的理解,内存的分配都是有着估计上的不足。只能说基础知识太薄弱了。求各位大神的一些指点。。非常感谢。


PS:我之前基本上都是做php项目的,所以对java不感冒,对c++也不熟悉。但是非常希望做c++。尤其是linux方面的,期望各位能给些建议以及经验教训。感谢至极。



©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页