从代码抽查到大型软件的可维护性

代码审查最佳实践指南 本文介绍了代码审查在软件开发中的重要性及实施方法。代码审查的主要目标是发现缺陷、确保规范、提高可维护性和促进知识共享。文章详细解析了审查时机、内容、流程和工具选择,包括功能性检查、代码质量评估和架构设计验证等方面。同时提供了审查者和开发者的最佳实践指南,如保持客观态度、及时响应反馈等。针对常见问题如审查效率、沟通障碍和技术分歧提出了解决方案,并建议建立质量与效率指标进行度量。文章强调代码审查不仅是质量控制手段,更是团队协作和成长的机会。 阅读详情

        有人跟我说,既然有测试部门进行软件质量测试,有性能保证团队负责产品性能的测试和改进,那么我们的代码抽查还有什么意义呢?我告诉他:代码抽查的意义并不在让你帮助去找bug,而是从一个公正的立场,以一个抽样的观念,来评价目前实际产品的代码质量,从而给管理层提供决策建议,以防微杜渐,保持产品的持续可维护性。

        软件存在一个生命周期维护的问题,越是大型的产品,越要加强产品开发过程中的质量控制意识。应该清楚看到,软件测试只是从外在发现功能性的问题或者用户体验方面的问题。软件的内部质量,还需要从每个开发人员内在的素质提高做起。

        以我的经验,对一个千万行以上代码的软件,如果在这个产品的开发过程中没有很好的一套机制保证,没有很好的贯彻内部质量控制,这样的规模的软件其维护是灾难性的。原因很简单,代码经过多人易手,又没有按照规范处理,其面貌就全非了。这样的软件,其维护的代价就会随着规模的扩大节节攀升,直道无法忍受,便需要结束它的生命周期了。

        有什么机制可以保证软件的内部质量呢?我想我们需要从三个方面来考虑。

        第一个方面是要努力提高开发人员的素质。尽管目前的集成开发环境已经越来越强大,能够很好改善代码的规范性。但是,应该看到,代码的最终可维护性还是需要人工来保证。代码的结构和美学意义上的优雅还需要经验。如何提高开发人员的能力和增进他们的经验呢?这方面其实有很多可以做的,我想一个规范程度高、培训和学习机制健全,以及知识积累丰富的企业无疑会培养更多能写出“优雅代码”的coder.

        第二个方面是要具备机制来持续审核软件的内部质量。像现在逐渐被推崇的“代码审计”就是一个很好的技术。为什么一定强调持续呢?因为软件的内部质量控制本身就是一个伴随软件生命周期的事情。所以,越早建立好这种机制,并逐步完善它,效果就越好。我一般建议在日构建中建立这种审计机制。这样的好处很明显,持续,公正,公开,只要管理层重视,整个代码的内部质量一目了然,很容易产生实际的执行力。另外,建立好同行评审和代码抽查制度也很重要,有些问题可能自动化的审计无力完成,这就需要人的“火眼金睛”来帮助了。

        第三个方面是从体系架构设计出发,采用自己的框架,尽量减少需要人工编写的代码,努力开发工具的抽象层次。比如现在的MDA技术就是很好的发展方向。对于一个软件企业来讲,我的经验会认为:努力把最核心的代码让最核心的人来维护,这样才是长期维持软件“优雅”的根本。而如何让最核心的代码让最核心的人来维护呢?一方面是要注意资源的分配;另一方面是让核心代码尽量固化在工具或者框架中,通过工具发布代码就可以复用那些经过检验的、高质量的代码。

2004-12-23
cloudward 于深圳

代码QC流程与可追溯性保障方案 示例:/* PROGRAM: ae_summary.sas PURPOSE: Generate AE frequency table (Table 14-3.1) INPUT: adae.sas7bdat (derived from SDTM AE) OUTPUT: t_ae_summary.pdf VERSION: 1.2 (Updated per SAP v5.0, 2024-03-15) AUTHOR: John Doe */,通过详细的注释提高代码的可读性和可维护性。 阅读详情

相关推荐

团队成员中途离职引发代码交接混乱的快速补救策略

NDA项目启动后,项目执行团队成员共7人,项目负责人1人,另外上游部门负责人带2人下共3人(其中一位有时差),下游负责人带2人共3人(其中两位有时差),项目协调负责人带1人共2人(都有时差)负责推进A和B两大任务。客户对交付时间要求极为苛刻,如让任务B仅给予1周开发时间,项目进度压力巨大。

qq_34062333的博客 1214

代码质量检测-Sonar

一。 Sonar简介  sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+and+Integration)    1》一个sonarqube服务器 包含三个子进程(web服务(界面管理),搜索服务 计算引擎服务(写入数据库))    2》一个sonarqube数据库 配

liaomin416100569的专栏 2万+

Python 爬虫实战:产品质量监督抽查公告归档,从公开公告到结构化数据

我长期专注 Python 爬虫工程化实战,主理专栏👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 118

如何让你的代码好维护

先说说我们不喜欢的代码长什么样子, 大函数,超过500行,甚至超过1000行; 大量的hard coding; if和else if中有明显的条件关联性; 注释和代码逻辑不符合,函数名与功能不符合; 命名英文拼音混杂,不少英文拼写错误; 。。。 说实话,这些问题很常见,无论是大厂,还是小团队。问题出现了,想出怎么解决才是关键。 每个团队都可以制定一套适合代码规范,不过光有代码规...

CSDnjava001的博客 714

Codesys电子凸轮从入门到应用:手把手教你用MC_CamIn/MC_CamOut实现主从轴同步

本文详细介绍了如何在Codesys平台上使用MC_CamIn和MC_CamOut功能块实现电子凸轮的主从轴同步控制。从环境配置、轴使能到凸轮表创建与动态切换,提供了完整的程序编写指南和调试技巧,帮助工程师快速掌握工业自动化中的高精度运动控制技术。

weixin_26878995的博客 277

Labview数据存储与读取——TDMS文件的创建与写入

Labview数据存储与读取——TDMS文件的创建与写入 你好,这是我在自学Labview编写软件过程中使用的一些功能。我在存储采集卡数据时,通过阅读大量他人的程序,发现TDM及TDMS文件十分适合波形数据的记录,TDMS文件比TDM文件在存储动态类型数据时读写速度更快,而且TDMS 文件没有容量限制,适合存储数据量庞大的测试数据。 前言少叙,书归正传 这一篇博客,说明一下如何使用基本的TDMS功能实现数据文件的存储。 所需要的控件如上图所示,在程序框图——编程——文件I\O——TDMS 中,写入TDMS

滑板小帅程序开发 2万+

代码复查的形式及优缺点

我们可以发现代码复查的优点显而易见。首先,通过对代码风格与规范的审查,可以大大提高代码的可读性与可维护性。现在的软件,往往需要持续的维护与升级,人员变动也在所难免,因此代码的可读性与可维护性尤为重要。代码复查是一种鞭策,因为它的存在,督促着开发人员自觉地规范编码,养成好的编码习惯,提高代码质量。一个值得注意的问题是,如果你不去读别人的代码,永远不能深刻理解什么是可读的代码,而自己的代码不让别人去读

bbzz100的专栏 2215

STC15W204S最小系统开发指南:从串口通讯到自动热加载全流程

本文详细介绍了STC15W204S最小系统的完整开发流程。从芯片资源解析、最小系统搭建、串口通讯驱动编写(使用Timer2生成波特率),到实现基于魔术值触发的自动热加载功能,并最终集成Keil与STC-ISP软件,构建高效的自动化开发工作流,显著提升嵌入式调试效率。

a1b2c的博客 391

【实战派×学院派】98|代码 Review 总是口水仗,不知该看什么?

代码Review不是“找茬”,而是团队共同守护产品质量的重要机制。只有当标准统一、评估客观、责任共担,Review才能真正提升质量、沉淀经验,而不再只是“拍脑袋的口水仗”。

郭菁菁的博客 218

解决[WARN] : Controller Spawner couldn‘t find the expected controller_manager ROS interface.思路

rrbot例程ros_control配置问题的解决思路 本人刚入门ROS机器人开发,在学习rrbot例程出现了control_manager无法启动的bug。 在启动rrbot_control.launch的时候,出现下列warning: [WARN] [1594362016.372059]: Controller Spawner couldn't find the expected controller_manager ROS interface. 之后再按教程的步骤 rosservice call /

qq_40299650的博客 1万+

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

本文介绍了Halcon中为XLD轮廓模板添加极性信息的实用技巧。通过先以"ignore_local_polarity"模式创建模板,首次匹配获得位置后,使用set_shape_model_metric运算符结合真实图像为模板注入极性信息(边缘明暗方向)。这种方法弥补了XLD模板初始不支持极性的缺陷,可显著提升后续匹配的精度和抗干扰能力。实验显示,添加极性信息后的模板匹配效果明显优于无极性的匹配结果。该技术特别适用于基于手动绘制或处理后的XLD轮廓创建模板的场景。

songhuangong123的博客 750

前后端代码review技术方案

code review 的一些管理方案

tkq597284700的博客 919

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4617

IT 企业如何通过 OpenClaw 进行智能代码审查

摘要:OpenClaw作为开源AI Agent平台,为企业提供本地化智能代码审查解决方案。文章分析了传统人工审查的三大痛点(高成本、标准不一、周期长),介绍了OpenClaw的本地模型推理、MCP协议扩展等核心能力,并详细阐述了四种实施方式:CLI对话、专用审查Agent、MCP工具集成和CI/CD流水线接入。通过五步实战指南,指导企业从零搭建审查流水线,同时提供分级审查、增量审查等最佳实践建议。该方案以低成本、可私有化部署的特点,助力企业提升代码质量审查效率。

chenbo980的专栏 1388

计算机视觉教程1-1:透视空间与透视变换

在生活中,透视现象很常见,其物理本质是光的直线传播。由于人眼与相机在捕获图像时均存在透视现象,因此计算机几何基于透视空间进行研究。本节介绍透视变换原理

FRIGIDWINTER的博客 3091

智能车图像处理11-进阶篇3--中线累积差值的统计

中线累积差值的统计在后面判断小S,以及长直道的时候都有用到,关键点在于中线的跳变 第12 - 13 行:comulants1 和comlants2代表的是两种不同的累差,取的行数不同 第14-17 行:comulants2取6到25行,其实就是My_Abs(LCenter[i], LCenter[i - 1])的累加 第18-21 行:comulants1去第1到40行 第27- 行: 计算了一下右线的开始于最终结束行,这里判断R_black是否为0,是和中线的提取中g

taiyuezyh的博客 3826

团队协作的艺术:提升代码质量的代码评审实践

在快速迭代的软件开发世界中,代码不仅是逻辑和功能的体现,更是团队智慧和协作精神的结晶。随着项目的不断扩展和团队的日益壮大,如何确保每一段代码都符合团队标准,同时又能激发创新和优化,成为了每个开发者和团队领导者必须面对的挑战。代码评审(Code Review)作为一种有效的质量控制手段,早已被广泛应用于软件开发的各个阶段。它不仅是提升代码质量的保障,更是促进团队成员间知识共享和技能提升的重要途径。然而,代码评审并非一蹴而就,它需要团队成员的共同参与、明确的目标和恰当的方法。

码途探索 1320

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何让代码好维护

先说说我们不喜欢的代码长什么样子,大函数,超过500行,甚至超过1000行;大量的hard coding;if和else if中有明显的条件关联性;注释和代码逻辑不符合,函数名与功能不符合;命名英文拼音混杂,不少英文拼写错误;。。。说实话,这些问题很常见,无论是大厂,还是小团队。问题出现了,想出怎么解决才是关键。每个团队都可以制定一套适合代码规范,不过光有代码规范是不够的。比如说写代码文档,最重要

架构栈 2637

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ebook2audiobook代码质量保障:静态分析与代码审查流程

在ebook2audiobook这个支持1107+语言的电子书转有声书项目中,代码质量直接关系到跨语言文本处理的准确性、AI模型调用的稳定性以及用户数据的安全性。本文将系统剖析项目现有的质量保障体系,重点讲解静态分析工具链的构建、自动化代码审查流程的设计,以及如何通过多层防御机制预防常见的Python代码缺陷。我们将通过具体案例展示如何将这些实践落地,最终形成"编码-检测-修复-验证"的闭环质量控...

gitblog_00058的博客 768

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

代码规范文档

代码规范文档代码规范文档目录 1 概述 5 1.1 编写目的 5 1.2 文档约定 5 1.3 预期的读者和阅读建议 5 1.4 参考文献 5 2 排版要求 5 2.1 程序块缩进 5 2.2 程序块之间空行 5 2.3 长语句和长表达式 6 2.4 循环、判断等长表达式或语句 7 2.5 长参数 7 2.6 短语句 8 2

晚晴小筑 6842

操蛋的软件工程

最近看到一个说法,说软件工程本质上是“手工作坊”,是知识手工业者的大规模协作。I can‘t agree more, 这玩意就是个手艺活,极大的依赖手艺人的个人能力。是的,你没看错,在这个软件定义一切的时代,在这些光鲜靓丽的App背后,是成千上万个手艺人堆出来的风格不同、形态各异、手法不一、带有强烈个人色彩的代码。截止目前,还没有一个有效的工业化、标准化生产软件的方法。不信你去问问Google的工...

我的新书《代码精进之路:从码农到工匠》 4043

Java代码编程格式规范

目 录 1 前言 5 2 适用范围 5 3 命名规范 5 3.1 PACKAGE 的命名 5 3.2 CLASS 的命名 5 3.3 CLASS 变量的命名 6 3.4 STATIC FINAL 变量的命名 6 3.5 常量 6 3.6 前后台变量名称 6 3.7 参数的命名 6 3.8 数组的命名 6 3.9 方法的参数 6 3.10 缩写 7 3.11 标识符命名中应注意的问题 7 3.11...

HXHone 1566

代码中的坏味道

最近InfoQ上连载了郑烨 写的《代码之丑》系列文章 ,好评不断,其实早在InfoQ开始连载前,我就在他的博客 上看到过了,当时就觉得这个系列写得很实在,应该让大家都知道什么样的代码是有问题的。   说起遗留代码,大家脑子里就会反映出代码质量差、难以理解等不好的印象,其实这些代码也是大家写出来的,它们也有还是新代码的时候,也许这段“遗留代码”就是两个月前你自己写的。 最近负责做新员工转...

DigitalSonic的自留地 235

用c语言编程china编译,C语言编程规范——10 代码编辑、编译、审查

10代码编辑、编译、审查(1)打开编译器的所有告警开关对程序进行编译。(2)在产品软件(项目组)中,要统一编译开关选项。(3)通过代码走读及审查方式对代码进行检查。代码走读主要是对程序的编程风格如注释、命名等以及编程时易出错的内容进行检查,可由开发人员自己或开发人员交叉的方式进行;代码审查主要是对程序实现的功能及程序的稳定性、安全性、可靠性等进行检查及评审,可通过自审、交叉审核或指定部门抽查等方...

weixin_32508515的博客 450

抽检代码段

曾写过的关于抽检的代码

山有顶峰,湖有彼岸,当觉得余味苦涩,相信,一切终有回甘 321
上一篇: 鲍岳桥:一个程序员的成功路线图
下一篇: 几个哲理小故事
cloudward
博客等级 码龄23年 18粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值