Part1--软件规范总纲
开发人员规范
软件代码编写规范
套话
- 目的:统一公司编码风格;提高代码易读性、可靠性和稳定性;减少软件维护成本提高生产力
- 基本原则:维持代码易读、可维护;保持代码清晰;尽可能复用代码
实用规则
缩进
- 新增文件缩进4空格;
- 平台文件中新增函数、结构体、枚举类型4空格缩进;已经有的跟上面保持一致缩进。
- vscode回车自动缩进四字符
括号
- 不需要括号的语句尽量不要括号(if后面的)
- 新建文件有两种风格,已有文件按照本来的风格
window风格
if (xxx)
{
}
else
{
}
Linux风格
if (xxx){
}else{
}
Linux其他示例
// do-while
do {
} while (1);
//switch可以和case对齐,也可以不对齐
//函数体不用把左括号写在一行
int func(void)
{
}
空格
if (xxx); //关键字后面加
sizeof(int)//函数后不加
int c = func(int a, int b) //注意括号里侧不加
int sum = a + b; //二元以上运算符加
~a a++//一元运算符不加
代码长度
- 每行不超过120字符,下面的行与括号对齐
void nwy_client_voice_ind_cb
(
client_handle_type hndl,
uint32 msg_id,
void *ind_struct,
uint32 ind_len
)
nwy_test_func1(hndl,
MCM_VOICE_COMMAND_REQ_V01,
&req_msg,
resp_msg,
NULL,
&token_id);
命名规范
- 所有命名都以由小写和_组成
- 新添文件以nwy开头,名副其实
- 新建结构体以nwy_开头,加了typeof后面再加_t
- 变量不带nwy开头!!
- 全局变量g_开头,加static,跨文件调用封装后使用
- 变量使用前初始化,数组使用前检空
- 注释是英文,源文件是中文的话无所谓
二次开发
(add modify delete)
/*Begin: Add by Author to Reason in Date*/
code
/*End: Add + Author + Reason + Date*/
//倘如已经有如上注释了,后续就把名字日期改一下就行,不要叠加
- 修改、新增、删除宏定义可以不加注释
注释风格、体现信息
//新建源文件
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====
Copyright (c) 2017 Neoway Technologies, Inc.
All rights reserved.
Confidential and Proprietary - Neoway Technologies, Inc.
Author: liuhui
Date: 2018.05
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
/*****************************************************************************
//新建函数
FUNCTION nwy_get_adc
/*****************************************************************************
@Desc: Get adc value of the channel
@Para: fd – file handle
port – the Channel of Adc
@Return: 0 - True, -1 - Error
*****************************************************************************/
宏
必须大写和_起名
有两种,功能宏编译源文件,项目宏打开对应功能模块
加功能必须添加功能宏,功能宏名字不能带项目名
客户定制加客户定制宏
去掉宏不影响编译
调试、参数、函数宏以NWY开头
修改对全部项目都有效或都无效可以不加宏直接改代码
一定要注意,#ifdef后面不用括号,#if defined(xxx)有括号,最后都要加个#endif
//判断单个宏是否有定义 #ifdef = #if defined
#defined PI 3.14
#ifdef PI
code
#endif
//判断多个宏(或、且)用#if defined
#if defined (XXX) || defined (YYY)
code1
#elif defined (KKK)
code2
#endif
//复杂判断用#if
#define XXX 0
#define YYY 4
#if (XXX) || (YYY > 3) || defined (YYY)
code1
#elif defined (KKK)
code2
#endif
宏定义可以顶格写或者缩进到和上一行相同
代码提交及审核自测规范
git提交,gerrit审核
代码静态检查
cppcheck插件
git代码提交规范
临时版本规范
路径
- 192.168.2.12\版本流转\2.临时版本\
结尾
- _Taabbccxxyy 例如_T2308091122 ,2023年8月9日11点22分编译的
归档文件
- ELF、MAP、变更说明、自测记录
TD规范
问题记录规范
Part1--软件规范总纲的更多相关文章
- Python--面向对象的程序设计之组合应用、开发软件规范
组合应用: class Teacher: def __init__(self,name,age,sex,salary,level): self.name=name self.age=age self. ...
- 微软开放技术发布开源的微软云服务器底盘管理器 (Chasis Manager) 软件
发布于 2014-07-14 作者 陈 忠岳 今天,微软公司加入开放计算项目(OCP),贡献出硬件和软件规范,管理 API 和协议,机械 CAD 模型,以及电路板文件和 Gerbers(描述印刷 ...
- AUTOSAR-软件规范文档中的UML
https://mp.weixin.qq.com/s/vm5vWNSpbNIYh25-LjJfYg AUTOSAR软件规范文档中存在两种UML图: Sequence diagrams Config ...
- AUTOSAR-软件规范文档阅读
https://mp.weixin.qq.com/s/Jzm9oco-MA-U7Mn_6vOzvA 基于AUTOSAR_SWS_CANDriver.pdf,Specification of CAN ...
- Spring AOP 实现原理与 CGLIB 应用
https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/ AOP(Aspect Orient Programming),也就是面向 ...
- QC缺陷管理操作-细说(转)
一.缺陷常用字段说明 二.缺陷管理流程图 三.开发人员修改缺陷填写规范 四.项目经理决定延期修改缺陷 一.缺陷常用字段说明 1.摘要 对缺陷的简单描述.摘要包括该缺陷所属的模块名称-子模块名称,以及简 ...
- Spring核心框架 - AOP的起源及介绍
一.AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析.他们研究出了一 ...
- Spring AOP 实现原理与 CGLIB 应用--转
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 ...
- 采访 Lua 发明人的一篇文章
采访 Lua 发明人的一篇文章 来源 https://blog.codingnow.com/2010/06/masterminds_of_programming_7_lua.html <Mast ...
- 20160210.CCPP体系详解(0020天)
程序片段(01):01.二级指针.c 内容概要:二级指针 #include <stdio.h> #include <stdlib.h> //01.二级指针: // 1.使用场景 ...
随机推荐
- hibernate4升级5带来的一些参数变化
public String hqlToHibernate5(String hql) { String[] tmp = hql.split(" "); String hqlTmp = ...
- 对象数组(java)
如果程序需要某个类的若干个对象,例如Student类的10个对象,显然如下声明10个Student对象是不可取的: Student stul, stu2, stu3, stu4, stu5, stu6 ...
- 牛客网-SQL专项训练13
①某软件公司正在升级一套水务管理系统.该系统用于县市级供排水企业.供水厂.排水厂中水务数据的管理工作.系统经重新整合后,开发人员决定不再使用一张备份数据表waterinfo001表,需永久删除.选出符 ...
- 中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结
简介: 中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现.Kubernetes 原生服务部署.服务治理等核心能力.来自中仑网络的技术负 ...
- 面对DNS劫持,只能坐以待毙吗?
简介: 借助 ARMS-云拨测,我们可实时对网站进行监控,实现分钟级别的监控,及时发现 DNS 劫持以及页面篡改. 作者:白玙 DNS 劫持作为最常见的网络攻击方式,是每个站长或者运维团队最为头疼的 ...
- dotnet 如何将 Microsoft.Maui.Graphics 对接到 UNO 框架
本文将和大家介绍如何将 Microsoft.Maui.Graphics 对接到 UNO 框架里面.一旦完成 Microsoft.Maui.Graphics 对接,即可让 UNO 框架复用现有的许多绘制 ...
- WPF 不安装 WindowsAppSDK 使用 WinRT 功能的方法
安装 Microsoft.WindowsAppSDK 库会限制应用程序只能分发 windows 10 应用,如果自己的应用程序依然需要兼容 Win7 等旧系统,那直接采用安装 WindowsAppSD ...
- 2018-11-23-国内好用的-DNS-列表
title author date CreateTime categories 国内好用的 DNS 列表 lindexi 2018-11-23 12:45:57 +0800 2018-11-23 12 ...
- 2019-9-2-C#-设计模式-责任链
title author date CreateTime categories C# 设计模式 责任链 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 17:2 ...
- vue+element设置选择日期最大范围(优秀版)
element的选择日期组件里没有像移动端vant直接设置max-date的api,因此在不能动态设置选择的第二个时间(需要分别选择起止时间和结束时间,但可以加上关联), 看了很多博客有的效果直接出不 ...