开发人员规范

软件代码编写规范

套话

  • 目的:统一公司编码风格;提高代码易读性、可靠性和稳定性;减少软件维护成本提高生产力
  • 基本原则:维持代码易读、可维护;保持代码清晰;尽可能复用代码

实用规则

缩进

  • 新增文件缩进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代码提交规范

模板

提交模板设置

git入门教程

稍微详细的教程

临时版本规范

路径

  • 192.168.2.12\版本流转\2.临时版本\

结尾

  • _Taabbccxxyy 例如_T2308091122 ,2023年8月9日11点22分编译的

归档文件

  • ELF、MAP、变更说明、自测记录

TD规范

没看懂,上链接

问题记录规范

Part1--软件规范总纲的更多相关文章

  1. Python--面向对象的程序设计之组合应用、开发软件规范

    组合应用: class Teacher: def __init__(self,name,age,sex,salary,level): self.name=name self.age=age self. ...

  2. 微软开放技术发布开源的微软云服务器底盘管理器 (Chasis Manager) 软件

     发布于 2014-07-14 作者 陈 忠岳 今天,微软公司加入开放计算项目(OCP),贡献出硬件和软件规范,管理 API 和协议,机械 CAD 模型,以及电路板文件和 Gerbers(描述印刷 ...

  3. AUTOSAR-软件规范文档中的UML

    https://mp.weixin.qq.com/s/vm5vWNSpbNIYh25-LjJfYg   AUTOSAR软件规范文档中存在两种UML图: Sequence diagrams Config ...

  4. AUTOSAR-软件规范文档阅读

    https://mp.weixin.qq.com/s/Jzm9oco-MA-U7Mn_6vOzvA   基于AUTOSAR_SWS_CANDriver.pdf,Specification of CAN ...

  5. Spring AOP 实现原理与 CGLIB 应用

    https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/ AOP(Aspect Orient Programming),也就是面向 ...

  6. QC缺陷管理操作-细说(转)

    一.缺陷常用字段说明 二.缺陷管理流程图 三.开发人员修改缺陷填写规范 四.项目经理决定延期修改缺陷 一.缺陷常用字段说明 1.摘要 对缺陷的简单描述.摘要包括该缺陷所属的模块名称-子模块名称,以及简 ...

  7. Spring核心框架 - AOP的起源及介绍

    一.AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析.他们研究出了一 ...

  8. Spring AOP 实现原理与 CGLIB 应用--转

    AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 ...

  9. 采访 Lua 发明人的一篇文章

    采访 Lua 发明人的一篇文章 来源 https://blog.codingnow.com/2010/06/masterminds_of_programming_7_lua.html <Mast ...

  10. 20160210.CCPP体系详解(0020天)

    程序片段(01):01.二级指针.c 内容概要:二级指针 #include <stdio.h> #include <stdlib.h> //01.二级指针: // 1.使用场景 ...

随机推荐

  1. c# 框架系列 ———— EFCore 模型篇 [一]

    前言 简单介绍一下EfCore 的模型篇 正文 内容来源: 配置模型 配置模型的方式,一种是fluent api 还一种是属性的方式. public class Blog { public int B ...

  2. c# Barrier 线程回调

    前言 假如现在有一个这样的需求,我一堆小黄人生产小黄丹,而大黄人要一直吃小黄丹. 如果是这样的话,想到就是一堆小黄人作为一个多线程,然后一直制造,然后另外一个大黄人一直检索是否有小黄丹,有就吃掉. 但 ...

  3. mmdetection训练voc数据集

    首先需要准备好数据集,这里有xml标签数据转voc数据集格式的说明以及免费分享的数据集:xml转voc数据集 - 一届书生 - 博客园 (cnblogs.com) 1. 准备工作目录 我们的工作目录, ...

  4. lattice的ipexpress异常,解决办法

    最近ip服务器可能会遇到问题,建议客户把更新检查关掉.我们有对应的IP下载链接. https://www.latticesemi.com/ispupdate/ipexpress/ https://ra ...

  5. easyx的使用

    本操作集根据B站学习,借鉴: 视频链接:[C/C++/EasyX]学编程,做游戏,小白快速入门图形编程,零基础入门到精通,学习就是这么快乐_哔哩哔哩_bilibili 初始化时要进行的操作: 记得调用 ...

  6. win11右下角快捷面板打不开的处理方法

    win11右下角快捷面板打不开的处理方法 在搜索中查询计算机管理(因为没有将此电脑放出来,所以就用搜索了) 然后找到服务,找到windows推送通知系统服务,右键属性,将自动改为禁用,然后停止此服务, ...

  7. 如何在 ACK 中使用 MSE Ingress

    简介: 本文将为大家分享一下 Ingress 标准 和 实现的趋势,介绍一下 MSE Ingress 在这个趋势下的优势和实践,为大家做关键入口选择多一些参考. 作者:彦林 随着云原生架构的普及,K8 ...

  8. IDC报告:阿里云领跑中国数据库市场年度份额首超传统厂商

    ​ 简介: IDC报告显示,2020年中国关系型数据库软件市场规模达到121.8亿元,同比增长36.5%.其中,以公有云模式部署的关系型数据库市场占比达到51.5%,首次超过传统线下部署模式市场规模, ...

  9. Windows 官方提供的触屏硬件延迟测量方法

    本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法 Overview of measuring Touch Down Hardware ...

  10. 将Go开发的代码部署到k8s集群

    一.在服务器上编译go程序 1.1 编译go语言程序 # 安装go yum install go -y mkdir /root/test && cd /root/test # 设置代理 ...