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、变更说明、自测记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具