记得有一年,我参加一家软件企业对《编码规范》的确认评审,规范的作者是公司一位资深技术人员,他在介绍完规范的内容后,补充说道:“我们的规范是参考了微软的《编码规范》,并结合公司实际制定的,执行应该问题不大。”。不错,规范里定义了细致的代码编写要求:变量名的命名、重要代码的注释、代码段的开始-结束完整性等等,参与评审的人员也没有提出其他问题或异议。但在开始执行时,项目组却并不认为编码规范能对实际开发工作有多大的指导作用,变量名的命名,以及代码注释只是保证了代码的可读性,对于编码工作质量的提高并不能起到太大的作用;至于代码段的完整性,对于一个程序员来说这是最基本的技术要求,就算应届大学毕业生也明白这个道理,还需要专门用规范来体现吗?……诸如此类。相信刚才我们看到的情况在许多实施过程改进,尤其是实施CMMI的软件企业中都有遇见过,我也见过不少过程改进人员编写的《编码规范》,或是参考,或是直接抄袭了别的企业的相关规范内容,但变量名、代码注释这些都是其中必不可少的,而其执行时,却变成了“鸡肋”!食之无味(项目组不屑),弃之不可(评估时需要的证据)。
这里我们抛开项目组对规范未理解的原因不谈,难道我们的编码规范仅仅只是为了保证代码有很高的可读性吗?!显然不是的,那么如何去建立真正的编码规范呢?我个人认为,真正地编码规范的建立与完善,需要三个步骤来完成:
第一步,建立企业级公共代码库。由于今天的软件产品开发项目已不大可能是从零编码了,大量的第三方组件、以及成功项目的可复用代码节约了项目组大量地开发时间,也是软件企业宝贵的技术财富,因此,我们需要将应用到了企业产品中的这些组件、复用代码识别出来,并收归组织级进行统一管理,形成公共代码库,提供给企业内所有的项目开发使用。
第二步,建立公共代码的使用规范。有了公共代码库以后,我们需要对库中每一个组件、可复用代码等建立详细的使用规范说明文档,其中应包括:组件或代码的名称、版本、使用场景、优缺点、接口调用方式等,而这就已经形成了初步的编码规范文档了,在这一基础之上,再建立对接口调用代码编写的规范化,保证每一个项目在使用同一控件或复用代码时,其使用方法和编写代码都是统一的,具有可读性等要求,逐步完善规范。
第三步,建立企业级基础框架代码和完善编码规范。企业还需要基于已建立的公共代码库,继续建立起基础框架代码,组织内所有的软件产品开发都应在基础框架代码上实现。这时的编码规范还应根据基础框架的代码编写要求进行适时同步更新,比如:强调代码的可读性、执行效能,以及代码的优化或重构等要求。
经过上述三个步骤,可以看到,要适用于软件企业的编码规范,不仅仅只是一纸文档那么简单,它是与企业生产改进活动密不可分的。由此也可以看出,包括编码规范在内的任何规范性文档,都必须与企业的实际生产经营活动结合起来,才能保证规范具有真正的可执行性,过程改进绝不是仅文档论文档而已。
分享到:
相关推荐
数据来源:中国劳动统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
Smart继电器编程器操作手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国人口与就业统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
基于matlab实现的图像几何校正的程序,根据靶图将tiger图像从鱼眼形变恢复.rar
毕业论文(设计)—旅游资源管理系统设计与实现论文.doc
数据来源:中国劳动统计NJ-2023版
数据来源:中国电力统计NJ-2021版
引入dynamic-datasource-spring-boot-starter。 spring-boot 1.5.x 2.x.x <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency> spring-boot3及以上 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <version>${version}</version> </dependency> 配置数据源。 spring: datasource: dynamic: enabled: true #启用动态数据源,默认true
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于HarmonyOS 4开发的一款新闻类的鸿蒙APP源代码
基于matlab实现遗传算法无功优化,基于掌纹识别的在线身份验证 识别算法本科毕设,是本科毕设的题目。.rar
【毕业设计】基于C和Access的图书管理系统设计与实现.doc
附件是 华为 OD 机考攻略_加强版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!
数据来源:中国人口与就业统计NJ-2023版
基于RFID的资产管理系统设计与实现.doc
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国人口与就业统计NJ-2023版