参与C++项目时的那些事儿

news/2024/11/22 12:02:40/

开发工具
在开发团队内部,使用相同的IDE、编译器等开发工具,工具的版本号和配置保持一致,便于开发团队积累使用经验,避免、消除工具的差异引入的问题。

代码质量
从检查时机看,分为:

  • 开发人员本地检查,便于本地检查、修复问题。
  • 流水线门禁检查,避免存在问题的代码被意外合入到代码仓库中。

检查工具,分为:

  • 静态检查,比如
    • cpplint,侧重于代码排版风格。
    • pclint,侧重于编码规范。
    • infusion,侧重于代码设计。
    • fortify,侧重于代码安全。
  • 动态检查
    • 单元测试,比如基于googletest打造单元测试的运行框架,方便开发团队集成和使用。
    • 内存检查工具,比如
      • valgrind,在Linux平台。
      • umdh,在Windows平台。

流水线
在流水线上,一般会维护如下几类构建任务:

  • 提交门禁构建
  • 开发快照构建
  • 版本发布构建

对于提交门禁的构建任务,在代码合入仓库前自动执行,针对变化的代码,执行如下操作:

  • 代码质量静态检查
  • 增量编译
  • 部分基础单元测试用例
  • 部分基础的集成测试用例

对于开发快照构建,一般在每天的夜间自动运行,执行如下操作:

  • 代码质量静态检查
  • 完整编译
  • 全量的单元测试用例
  • 基础的集成测试用例
  • 部署至开发环境

对于版本发布构建,按照版本转测试节奏,手工触发,执行如下操作:

  • 代码质量静态检查
  • 完整编译
  • 全量的单元测试用例
  • 基础的集成测试用例
  • 部署至测试环境

开发架构
对于开发架构的看护责任人,有一些工作需要作为日常工作内容,按照一定的节奏来推进,比如:

  • 选型构建工具
  • 维护构建脚本
  • 选型编译器
    • 及时升级编译器的版本
    • 增加编译器的类型,比如clang
    • 使用较新的C++标准
    • 消除编译告警
  • 组织学习C++编程规范
  • 提升UT用例覆盖率,督促开发团队,增加、维护UT用例
  • 组织代码重构
    • 识别代码坏味道
    • 梳理改进方案
    • 指导、督促开发团队完成重构任务

业务架构
梳理业务原始需求和实现方案,整理

  • 用例图
  • 架构图,比如:
    • 业务架构
    • 逻辑架构
    • 技术架构
    • 数据架构
  • 业务流程的时序图
  • 模块职责
  • 接口
    • 通信协议
    • 接口清单
    • 编解码
  • 技术选型,比如:
    • 开源软件
    • 免费软件
    • 商业软件
  • 业务特性对硬件的诉求,比如CPU、内存、IO等

识别、收集、梳理当前交付过程中存在的问题,整理改进方案,明确对策、投入和产出,制订可落地的重构计划,排定优先级,获得项目管理团队、设计团队、开发团队、测试团队等关键角色的认同,推进重构工作。

基础技术选型

基本特性的选型,比如:

  • 日志系统
  • 配置文件系统
  • 数据库
  • 进程间通信
    • 通信协议
    • 编解码
  • 开发IDE
  • 构建工具链
  • 单元测试工具

http://www.ppmy.cn/news/52649.html

相关文章

以轻量级服务器niginx为核心的JavaWeb项目:第一章 项目设计

这里写目录标题 一 需求分析与环境搭建1.需求分析2.环境搭建1.2.1首先配置mysql环境1.2.2 配置maven环境 二 打成War包,发到linux上 一 需求分析与环境搭建 1.需求分析 2.环境搭建 1.2.1首先配置mysql环境 先查找一下mysql环境 [roothadoop122 ~]# mysql --vers…

vue---mixin混入

mixins是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。 一个混入对象可以包含任意组件选项(如data、methods、created、mounted等等)。…

Stable Diffusion XL:更快,更强

Stable Diffusion XL:更快,更强 今天,Stability AI 的创始人兼首席执行官 Emad Mostaque 发推宣布,Stable Diffusion XL 进入公测阶段。 核心信息总结起来有2点: “XL”不是新模型的官方名称,Stability …

【cuda】Nsight System 下载,安装与使用

Nsight System 下载 nsys 是 NVIDIA Nsight Systems 的命令行工具,可以用于分析 CUDA 应用程序的性能和行为。以下是在 Linux 上安装 nsys 的步骤: 下载 NVIDIA Nsight Systems 安装程序。您可以在 NVIDIA 的官方网站上下载适用于您的系统的安装程序。…

手推A Unified Solution to Constrained Bidding in Online Display Advertising论文

A Unified Solution to Constrained Bidding in Online Display Advertising:一种对在线展示广告约束出价问题的通用解决方案 未开放但是可以搜到 NeuralAuction: 电商广告中的端到端机制优化方法 https://arxiv.org/abs/2106.03593 一种使用真负样本的在线延迟反…

【LPC55s69】使用FAL分区管理与easyflash变量管理

文章目录 1.FAL组件1.1什么是FAL1.2 使用ENV配置FAL1.3 FAL SFUD 移植1.4 FAL SFUD 测试用例1.5 测试结果 2.DFS文件系统2.1 什么是DFS2.2 DFS架构2.3 使用ENV配置DFS2.4 DFS挂载到FAL分区测试2.5 测试结果 3.Easyflash移植到FAL分区3.1 简述EasyFlash3.2EasyFlash软件包使用3.…

【LeetCode】650. 只有两个键的键盘

650. 只有两个键的键盘(中等) 思路 不同于以往通过加减实现的动态规划,这里需要乘除法计算位置。因为粘贴操作是倍数增加,使一个一维数组 dp,其中位置 i 表示延展到长度 i 的最少操作次数。对于每个位置 j &#xff0c…

WMS是什么?

WMS(Warehouse Management System)中文译作仓库管理系统,是一种专用于物流仓储管理的IT系统。它主要应用于企业物流中心、配送中心、供应商物料储备中心、电子商务配送中心等仓库管理过程中。 WMS系统可以帮助企业管理和控制其物流仓储流程。…