主任说到学校新网站的建设工作,济南市莱芜区网站,网页版微信官方免费,制作图片用什么软件文章目录前言命名规范说明版式风格内存管理与智能指针关于UML前言
这是一个基于lightdm、glibc、gobject、gtk、qt、glibc、x11、wayland等多个高质量开源项目总结而来的规范。
glibc处于内核态与用户态的边界#xff0c;承上启下#xff0c;对用户的体验影响非常大。其在系…
文章目录前言命名规范说明版式风格内存管理与智能指针关于UML前言
这是一个基于lightdm、glibc、gobject、gtk、qt、glibc、x11、wayland等多个高质量开源项目总结而来的规范。
glibc处于内核态与用户态的边界承上启下对用户的体验影响非常大。其在系统中的层次相当于windows系统中的vc绝大部分Linux发行版本都依赖它。
这套程序设计规范是吸收qt的长处与gtk/boost的长处整合的程序设计规范。systemd以及其系列组件诸如d-bus、lightdm、gobject、gtk都使用的这套规范。
function不在类中叫函数在类中叫方法。
命名规范
项目关键字大写下划线前缀宏define全大写单词之间无常量const全 大写单词之间无局部变量local variable全小写词组之间基本数据类型指针无枚举enum首字母大写词组之间无枚举成员enum member全大写单词之间枚举名单词首字母拼接命名空间namespace全小写词组之间无类class首字母大写词组之间无成员方法class method全小写构造、析构除外词组之间无成员变量class method全小写词组之间m_非指针再加基本数据类型结构体struct首字母大写词组之间无结构体成员sturct member全小写词组之间无函数function全小写词组之间无C属性函数C property全小写词组之间get_/set_C属性函数C property全小写词组之间无
说明
C属性方法不加前缀利用方法重载get属性方法原则上加inline修饰符代码写在H文件。基本数据类型前缀 字符串z包括char指针、字符串对象。字符串对象的指针不是基本数据类型整型i包括无符号包括长整型、短整型和超长整型。浮点型f包括单精度、双精度包括无符号包括长浮点型。 方法或函数名、非局部变量名严禁全名就是缩写缩写部分必须是行业公认的名词严禁自行创造。缩写对应的注释中必须注明缩写全称。拼音可代替英文词组严禁拼音缩写。局部变量允许缩写前提是局部变量所在上下文环境代码小于30行同时须在注释中写明全称。最好补充写明含义。指针是复合数据类型。不允许用一句话的全部英语单词串联起来命名一个变量。命名要直击一句话的核心善于利用含义相似或相近的变量之间差别部分来命名变量。关键还是见多识广知识范围不狭獈。要了解软件要实现的业务功能中的行业知识用行业术语或关联性很强的名词命名。
版式风格
总体上采用astyle支持的--stylekr或-A3格式总结如下
缩进用4空格不用制表符方法花括号独占一行其它花括号左缩进右独占一行运算符左右各空一格逗号右边空一格左圆括号仅最外层左边空一格右圆括号仅最外层右边空一格一行代码最长120个字符超长换行 首先参数换行对齐到方法名其次返回值类型换行方法名与返回值类型都对齐到最左侧 流程控制语句只有一行的情况不用花括号
以上处理仅处理字符对代码语义起作用的情况注释、字符串值除外。
内存管理与智能指针 C内存管理模式不再适用谁使用谁申请谁释放原则。传统的内存管理模式适合C语言它忽视了智能指针的作用极大的阻碍程序设计造成诸多不便。传统模式不支持智能指针一句代码的逻辑要拆成三句完成还得小心程序逻辑造臧的内存泄露问题比如C语言中提前return造存的指针没释放的问题C可利用智能指针对象的生命周期在析构函数中释放。C需要gotoC一般不使用goto。 C很多场景下不能区分管理者与使用者的逻辑边界比如循环体中使用了继承同一个父类型的不同类型的对象的指针。构造函数增加const标记给指针类型的成员变量造成麻烦。一个类的对象对另一个类的对象的引用如果不能明确两者的生命周期的长短那么使用裸指针就会造成野指针的问题。这个问题延伸到多线程的场景下无解。智能指针对象造成的额外的存储和计算资源的开销对程序的整体性能的影响是有限的可以忽略不计的。因此没有特殊情况一律禁止使用祼指针做好第三方接口中祼指针的存储管理。 智能指针本身就是为了程序设计有别于C语言它变革的目标就是内存管理。内存池设计更是如此。因此C接口不要像C一样设计用于输出对象数据的入口参数。输入参数、返回值都可用的智能指针。在参数传递、返回值的接收过程中智能指针以引用的方式传递是重要的避免不必要的指针引用计数、重复的的智能指针对象。智能指针不是指针是包装指针的对象。对象指针不是对象是指向对象的指针。 不涉及对象本身成员变量的修改的成员方法一律增加const标记所有复杂数据类型的输入参数含指针和智能指针一律增加只读引用标记所有输出参数增加引用标记不增加只读标记。
关于UML
不管什么UML图不管什么UML标准画图重点要表达的是自己要表达的意思。表达的范围要有边界一般不把对第三方的引用画到图里面。图不能比代码更复杂细节张弛有度。对于流程图描述重点算法为边界其它的由一个过程框一笔带过。不管别人说它标准不标准自己能把它的意思讲清楚就是好图。有一种陷阱是被各种UML标准搞得晕头转向画图的人自己都说不清图表达的是要干什么。 作者岬淢箫声邮箱zhtqs8163.com来源https://caowei.blog.csdn.net/article/details/129211858