高质量c/c++代码编程笔记

编程
文件结构
程序板式
命名规范
常量
表达式
函数设计
内存管理
重载覆盖隐藏
构造析构拷贝构造赋值
继承与组合

学习目标:

编程规范


学习内容:

1. 文件的结构 2. 程序板式 3. 命名规范 4. 常量 5. 表达式 6. 函数设计 7. 内存管理 8. C++的特性 封装继承多态 9. 类的基础函数 10.类与类之间的关系 集成与组合

学习时间:

碎片化时间


学习产出:

1、 基本项 a. 大的工程项目代码来说,有着相似的文件结构格式,首先是目录结构,有配置文件、头文件、源文件、版权说明文件、说明文档文件、生成的动态链接库静态链接库文件可以直接使用的文件;头文件中 所涉及的有版权声明、作者、时间等信息 , 引入的头文件,预处理宏的使用,常量的声明,变量的声明,函数的声明;源文件中的格式:版权信息的书写,引入的头文件,预处理宏,常量的声明,变量的声明,函数的声明,外部引入变量、函数的声明, 函数的实现; b. 代码的板式,现在的编辑器基本都有代码对齐的功能,基本按照基本的代码对齐方式即可,目标是使代码让人更容易阅读,更容易理解,毕竟这个代码是给人看的,机器运行的时候只是01而已;关键字突出,逻辑清晰,格式看起来美观; c. 命名的格式,基本上函数和类采用大驼峰的方式,变量使用小驼峰的方式,命名的时候核心目标是让别人看名字就能明白函数类的作用是什么,变量名的作用是什么,那么常见的专业属于关键词从哪里来呢?(据说是有一个网址,可以查到行业内的专业术语); d. 表达式,重点关注符号的优先级,表达式的最好加上括号; e. 常量,常量的使用是必然探讨的问题,C++中的const使用的地方是比较多的,相比较与c语言,C++的const特性相当优秀;建议使用常量的时候define使用const进行替代,const可以进行编译时类型检查; f.函数设计:函数的参数不大于5,函数的深度不大于30;函数的入口处对指针进行判空,使用assert校验入参;函数的返回值注意返回的类型; 2、技能项 a. 内存管理: static 内存的分配;栈内存 动态分配的内存;static在编译的时候就进行了内存的分配;栈内存运行是分配,动态内存是在对上分配,分配函数与释放函数需要程序员自己去管理; 使用上,首先判断内存是否分配成功;用完之后是否进行了释放;异常退出的时候是否进行了内存的释放;new/delete是运算符;而不是函数;尽可能的使用一个线程,不要在不同的线程中进行堆内存的申请和释放;极有可能导致内存泄露;栈内存的使用上,注意内存的大小管理,sizeof(对象)而不是sizeof(类型),小心对象与类型的不匹配,导致内存越界;栈内存的越界不好排查; b.C++的重载overload 重写override 隐藏(关键字virtual的检查) c. 参数的默认值从右往左开始默认;运算符的重载,可以重载为成员函数也可以重载为全局函数; d.函数的内联,inline 起作用看编译器,编译器说了算;不应该出现在函数的声明中,应该出现在函数的实现中;目的是提高代码的执行效率,在写的时候,应该看一下,是否达到了提高效率的目的;不能为了内联而内联;

3、 类的big three: 构造函数 析构函数 赋值函数
默认的拷贝构造函数,属于浅拷贝,有时候使用可能造成了内存泄露;对于有指针的类,自己编写深拷贝构造函数;如果不使用深拷贝构造函数,也建议自己写拷贝构造函数,但是是空实现,这样有助于出错;不采用默认的编译器自己生成的拷贝构造函数;
4、面向对象的设计思想
重点是对类的设计,不是对对象的设计;
类之间的关系 继承与组合 面向对象重要的就是设计类与类之间的关系;后期有时间需要对面向对象的设计模式进行学习梳理;设计模式的使用场景,有哪些?

编程是一门艺术,需要不断的投入有价值的时间,让自己的内功技术得到提升;在嵌入式的编程中,要重点理解效率的重要性;在应用程序的编程中,要重点研究逻辑,设计模式,代码的简洁,面向对象的设计方法,类的设计,行为的表达;

追求卓越,积极向上

你可能感兴趣的:(c++,c语言)