云网络智慧课堂-Qt程序代码开发规范
序言:
编程规范可以提升代码可读性,提高可维护性。
目录:
一、命名规范
二、内存管理规范
三、函数方法规范
四、控制语句规范
五、注释规范
六、排版规范
七、版本管理规范
八、界面编程
词义解释:强制,推荐,参考分别表示规范的三个等级。
一、命名规范:
【强制】1.类、函数、变量及参数采用[谷歌式命名约定](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming)。
【强制】2.常量(包含对话框ID)命名所有字母大写。
【强制】3.接口类在前+字符(纯虚类)I。基类则在前+Base。
【强制】4.函数命名规范:获取,查询用Get,设置用Set,增加用Add,插入用Insert,删除用Delete。保存用Save。
【强制】5.槽函数的命名:每个函数前缀是slot_,如:slot_SendData();
【强制】6.信号的命名:每个函数前缀是sig_,如:sig_SendData();
【强制】7.如果是全局变量,请在前面加上this->以示区分。
二、内存管理规范
【强制】1.内存谁申请,谁释放
【强制】2.不允许使用CPP自带智能指针shared_ptr,share_ptr和qobject搭配使用会出现一些意料之外的问题。
【强制】3.使用指针请一定要使用Qt自带的智能指针QPointer和QSharedPointer,不允许出现裸露在外的普通指针。
【强制】4.new申请内存之后。使用try catch捕获申请内存是否成功。原因:new申请内存可能失败
【强制】5.变量(普通变量和指针)必须初始化。
【强制】6.使用指针前必须检查指针是否为空。
【强制】7.指针new后必须delete且将指针赋值为nullptr。
【强制】8.函数中分配的内存,函数退出之前要释放。
【强制】9.多线程读写共用变量要加锁。
【推荐】10.对可能的跨线程信号槽函数需要在connect函数中加入Qt::QueuedConnection参数
【强制】11.程序内部的所有数据流动,除了自定义的类型,系统类型比如String,int等全部使用Qt内部类型QString,qint32等。
【推荐】12.在编写类的时候最好保留调用方参数,以方便使用Qt自带GC
三、函数方法规范
【强制】1.函数参数必须在使用前校验(建议放在函数第一行)。包括数据范围校验,数据越界校验,异常指针校验。
【推荐】2.增加函数错误处理流程,try catch,asset
【参考】3.函数参数比较多时,应考虑用结构体代替
【推荐】4.函数体长度应在80行内,且保证函数功能的单一性。
【推荐】5.函数内代码层次应保持一致。
四、控制语句
【强制】1.尽量上的使用if else 语句,多采用卫语句。
【强制】2.不要在条件推断中运行其他复杂的语句。将复 杂逻辑推断的结果赋值给一个有意义的布尔变量名。以提高可读性。
五、注释规范
【强制】1.模块注释包含信息:作者,日期,功能,依赖模块,调用流程
【强制】2.类注释包含信息:作者,日期,功能,依赖类,调用流程
【强制】3.函数注释包含信息:作者,日期,功能,参数含义,返回值,其他。
【强制】4.变量注释:注解内容要清楚准确不能有歧义。
六、排版规范
【推荐】1.左大括号前不换行,左大括号后换行;右大括号前换行,右大括号后还有 else 等代码则不换行;表示终止右大括号后必须换行。
【推荐】 2.左括号和后一个字符之间不出现空格。相同,右括号和前一个字符之间也不出现空格。
【推荐】 3.if/for/while/switch/do 等保留字与左右括号之间都必须加空格
【推荐】4.不论什么运算符左右必须加一个空格。
【强制】 5.单行字符数限制不超过 120 个,超出须要换行,换行时遵循例如以下原则:
运算符与下文一起换行,方法调用的点符号与下文一起换行,在括号前不要换行。
【强制】6.使用空格进行对齐,禁止使用tab对齐。
七、版本管理规范
1.VXX.XX.XX.XXXXXX.XXXXXX使用四位数进行版本管理,1-2位为主版本号,3-4位为分支版本号,5-6为次版本号,7-10为修订号1,11-15。
【强制】主版本号:从1开始,产品更新换代时+1。之后版本号清零。
【强制】分支版本号:从0开始,新建分支时+1,之后版本号清零。
【强制】次版本号:从0开始,新增功能时+1,之后版本号清零
【推荐】修订号1:年月日
【推荐】修订号2: 小时分
云网络智慧课堂-Qt程序代码开发规范的更多相关文章
- 填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决
云网络智慧课堂的双网卡问题记录及解决方案 教师端 其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端.症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的 ...
- C#代码开发规范
Wrod下载 C#代码开发规范 文件状态: [√] 草稿 [ ] 正式 [ ] 修改 文件标识: 当前版本: 1.1 作 者: Empty 联系电话: 最后更新: ...
- iOS 代码开发规范
最近公司因为业务增多,又招了一个iOS小伙伴,内心无比开心呀.但是多了一个人,日常代码开发就要统一规范起来,方便日后维护和查找.下边列一下我日常用到一些代码规范. (一).SVN规范 1.代码一定要先 ...
- JAVA 代码开发规范
一.开发工具规范: 1. 开发工具经项目负责人调试后统一确定. 2. 开发工具一经确定不允许集成任何非统一插件,若有需要,经项目负责人同意后统一为 项目组成员添加. 3. 开发工具的编码格式不允许修改 ...
- php与数据库代码开发规范
php与数据库代码开发规范 1/25/2016 6:00:31 PM php对各类变量命名规范 目录名 文件命名 局部变量命名 使用英文动词名词,用下划线作为单词的分割,所有字母均使用小写 目录 up ...
- IDEAL葵花宝典:java代码开发规范插件 p3c
前言: P3C插件 是阿里巴巴p3c项目组进行研发.这个项目组是阿里巴巴开发爱好者自发组织形成的虚拟项目组,根据<阿里巴巴Java开发规范>转化而成的自动化插件,并且实现了部分自动编程. ...
- python代码开发规范
https://github.com/libo-sober/LearnPython/tree/master/day18 为什么要有模块? 拿来主义,提高开发效率. 便于管理维护. 什么是脚本呢? 脚本 ...
- React代码开发规范
前言 一般在团队开发中每个人的代码习惯都不太一样,这样就会导致代码风格不一致,以致于维护和修改bug的时候看别人的代码成为一种痛苦...这种情况尤其在前端开发中尤为明显.因为关于前端的开发规范貌似也没 ...
- Eclipse的tab键为4个空格完整方法 附:阿里代码开发规范书
开发规范书:http://pan.baidu.com/s/1dESdyox 1.点击 window->preference-,依次选择 General->Editors->Text ...
- IDEAL葵花宝典:java代码开发规范插件 checkstyle、visualVM、PMD 插件
前言: visualVM: 运行java程序的时候启动visualvm,方便查看jvm的情况 比如堆内存大小的分配:某个对象占用了多大的内存,jvm调优必备工具. checkstyle: CheckS ...
随机推荐
- JOISC2020题解
\(\text{By DaiRuiChen007}\) Contest Link A. Building 4 Problem Link 题目大意 给 \(2n\) 个数对 \((a_i,b_i)\), ...
- storeToRefs()的作用和使用
store 是一个用 reactive 包装的对象,这意味着不需要在 getters 后面写 .value,就像 setup 中的 props 一样,如果你写了,我们也不能解构它: <scrip ...
- 玩转Python:处理音频文件,两个非常重要的库,很实用,附代码
pyaudio和sounddevice都是用于Python中音频处理和流的库,允许用户通过他们的API录制.播放和处理音频数据.下面是对这两个库的简要介绍: PyAudio PyAudio 提供了 P ...
- 小姐姐用动画图解Git命令,一看就懂!
无论是开发.运维,还是测试,大家都知道Git在日常工作中的地位.所以,也是大家的必学.必备技能之一.之前公众号也发过很多git相关的文章: Git这些高级用法,喜欢就拿去用!一文速查Git常用命令,搞 ...
- 未能加载文件或程序集“*****.dll”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。(异常来自HRESULT:0x80131040)
问题描述: 未能加载文件或程序集"*****.dll"或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配.(异常来自HRESULT:0x80131040) 解决方法: 1. ...
- curl使用小记(一)
目录 1. 概述 2. 实例 2.1. 访问网页 2.2. 显示头信息 2.3. 保存网页 2.4. 下载图片 2.5. 用户代理设置 2.6. 代理设置 3. 参考 1. 概述 curl也就是com ...
- LiteOS内核源码分析:任务栈信息
摘要:LiteOS任务栈是高地址向低地址生长的递减栈,栈指针指向即将入栈的元素位置. 我们介绍下LiteOS任务栈的基础概念.LiteOS任务栈是高地址向低地址生长的递减栈,栈指针指向即将入栈的元素位 ...
- 朋友们,就在今天,JDK 21,它终于带着重磅新特性正式发布了!
你好呀,我是歪歪. 朋友们,好消息,好消息,重磅好消息. 从今年年初就一直在喊的具有革命性.未来性.开创新纪元的 JDK 21 按照官方的时间计划表,今天终于是要正式 GA 了: https://op ...
- PPT 模仿力,看到好的设计随意为我所用
PPT 模仿力,看到好的设计随意为我所用 网上搜索一些作品 Q1: 这一页的设计亮点在哪? Q2: 我能不能用在PPT里面? Q3: 我能不能用PPT模仿出来? 举例 思源黑体
- 从阿里云全球实时传输网络GRTN出发,浅谈QOE优化实践
直播已深入每家每户,以淘宝的直播为例,在粉丝与主播的连麦互动中如何实现无感合屏或切屏?阿里云GRTN核心网技术负责人肖凯,在LVS2022上海站为我们分享了GRTN核心网的运作机制.运用方面以及QOE ...