你的代码完成了吗?(之二)——可维护性和规范性

二. 可维护性和规范性


对于代码来说,这两个属性其实是紧密相连的。什么样的代码最好维护呢?当然是规范的代码了。再差的规范也要比没有规范强得多。

之前做对日项目的时候,日本人对于“规范”这个东西(他们称之为开发规约)要求的极为严格。一方面会制定严格的规范来供大家遵守,其中不仅仅会包括对命名、代码格式的规定,甚至还包括了每个控件之间的距离,代码的注释的格式,代码中的注释要达到什么样的比例,每种代码结构(循环、选择等等)要怎么写,什么时候应该加空行等等,一般他们的代码规范都至少会有10页左右的内容。另一方面,他们还制定了比较完备的流程来保证规范的执行,代码开发完毕,首先是要进行代码Review,然后是进行单体测试。这两个过程并非是在某些国内项目中,就是走个过场,在对日的项目中甚至还制定了标准,每千行代码中必须Review出多少个问题,必须要测试出多少个Bug,都是有数量限制的,如果达不到标准,除非有充分的理由,否则这个过程是无法通过的。

经过了这么多严格的过程之后,对日项目想要达到的目的就是“所有代码看起来像是一个人写的”。尽管这有些理想化,毕竟每个人处理问题的思路还是会有些不同,但仅就代码来说,的确看起来干干净净,就像是同一个人编写的一样。自然在维护的时候,看起来至少不会有太严重的问题。

相反,在某些国内项目中,对于代码规范的重视程度明显不够,很多代码中连最基本的缩进和命名问题都没有解决好,更别提每个方法的长度,类和接口的设计等问题了。有时,不得不对那样的代码进行修改的时候,我都会先把规范整理一遍,然后再开始修改。但是,就像破窗子理论一样,有时心情不爽的时候,根本就不会做修改,甚至还会加入更多的不符合规范的东西。(那种情况是极少的了,哈哈。而且我不会署名啊,偷偷地闪!)

由此看来,新编写的代码是否遵从了代码规范会给以后的维护和修改工作带来很大的影响。

可维护性体现在什么地方呢?我觉得就在于对现有的程序进行修改的时候,能否快速定位到问题所在,而且在读代码的时候,很容易就能理解代码所要完成的工作,那样才能够更快速有效地对代码进行修改。

在此必然会涉及到注释的问题,关于这个东西的讨论已经有很多了,我的观点是,如果能够用较好的命名和清晰的代码说明的问题,就可以不写注释了。相反,如果仅仅看代码无法理解的东西,尤其是业务上的知识,或者是业务流程上的一些特殊的要求,就非常有必要写上注释,否则以后维护的人就不明白其所以然了。而对于对日项目中规定代码中的注释率要有多少,就有些过分了。

对于自身来说,想要编写规范和可维护的代码,其实也不是很难的事儿,主要在于态度。记得当初我给公司的新人培训的时候,曾经说过:“我们应该编写什么样的代码呢?我觉得有一个原则,那就是别人在以后修改、维护你写的代码的时候,不会一边改,一边骂人,他***,这是谁写的鬼代码,让我有打人的冲动。”呵呵,玩笑而已,但还是能说明一些问题的吧。

 

转载于:https://www.cnblogs.com/houbowei/archive/2010/03/24/1693939.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言feof函数_使用示例的C语言中的feof()函数

c语言feof函数C语言中的feof()函数 (feof() function in C) Prototype: 原型: int feof(FILE* filename);Parameters: 参数: FILE *filenameReturn type: int(0 or 1) 返回类型: int(0或1) Use of function: 使用功能: In C l…

5种经典排序算法,每个程序员都应该知道

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 有没有想过当您应用从低到高、从高到低或按字母顺序等过滤器时,亚马逊或任何其他电子商务网站中的产品如何排序?排序算法对于此类网站起着至…

汇编语言-016(SCASB 、STOSB 、LODSD 、数组中的取值、二维数组操作、冒泡排序和二分查找、CMPSW )

1: SCASB : (字节)将AL的值与EDI寻址的一个字比较。进行在一个字符串检索特定的字符 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data alpha BYTE "ABCDEFGH",0.code main PROCmov edi,OFFSET alpha ;EDI指向字符串mov …

编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。

编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处。 P176 4.10 编程思路:首先DATA段中,定义string存放字符串"Hello World",LEN为字符串string长度…

在Python中使用OpenCV(CV2)对图像进行边缘检测

Modules used: 使用的模块: For this, we will use the opencv-python module which provides us various functions to work on images. 为此,我们将使用opencv-python模块,该模块为我们提供了处理图像的各种功能。 Download opencv-pytho…

需保留小数点两位,但同时不要小数点后多余0的前后台代码实现

今天碰到一个需求。关于小数点的处理,看起来非常简单的事情,却花了一定时间做了一些试验。最后简单总结一下,以便备忘。 需求简化一下表达是这样的: 有A、B两列,A/BC。这3列在数据库中都以decimal存放。 在应用中&…

汇编语言-017(SCASW 、STRUCT 、STRUCT_ALLPOINTS 、STRUCT_ALIGN 、SYSTEMTIME、UNION 、 STRUCTTEST )

1:SCASW : 在wordArray中扫描16位数值0100h,将匹配元素的偏移量复制到EAX .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data wordArray WORD 0500h,0400h,0300h,0200h,0100h.code main PROCmov ax,0100hmov edi,OFFSET wordArraymov …

【笔记】正则表达式[1]

元字符 符号 意思 示范 详例 \d 任意一个数字 \d{2}-\d{8} 22-12345678 * *前的符号重复任意次数 次数可以为零 \d* 222222222222... 或 2 \s 任意的空白符 全半角空格,tab,换行符 \bhi\b\s\bLucy\b hi Lucy 和*用法相似 次数>1 \d …

编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元

编写一个汇编语言程序,完成以下要求。从BUF单元处定义有10个带符号字数据:-1,3,24,94,62,72,55,0,-48,99,试找出他们中的最大值和平均值,并以此分别存放至该数据区的后两个单元中(假设这10个数的和值不超过16位范围) P176 4.12 编程思路&am…

prototype 的ajax

原文:http://www.prototypejs.org/learn/introduction-to-ajax]翻 译:www.ruby-china.cn 站长]Prototype框架提供了非常容易和有意思的方法处理Ajax的调用,同时它也是浏 览器安全的 。除了简单的请求外,这个模块(指pro…

汇编语言-018(FLD 、FST、FSTP、FCHS、FABS 、浮点运算符、浮点比较 )

1:FLD : FPU(浮点处理器)的加载浮点数到堆栈指令 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data array REAL8 10 DUP(?) dblOne REAL8 234.56 dblTwo REAL8 10.1.code main PROCfld array …

mcq 队列_MCQ | 基础知识 免费和开源软件| 套装4

mcq 队列Q1. What do you call the technique of storing encrypted user passwords in Linux? Q1。 您如何称呼在Linux中存储加密的用户密码的技术? System Password Management 系统密码管理 Shadow Password 影子密码 Encrypted Password 加密密码 None of the…

将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这4组数作为数当中的低4位分别放在AL,BL,CL,DL中。

将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这4组数作为数当中的低4位分别放在AL,BL,CL,DL中。 P176 4.14 编程思路:首先用BX、DX存放AX,即原AX原BX原DX&…

一个很不错的wp企业站模板

http://zjuhpp.com/chinese-localization-of-business-wordpress-theme-devster.html转载于:https://www.cnblogs.com/i-kyle/archive/2012/09/13/2683817.html

著名的自由软件圣战- “KDE/QT .VS. Gnome/Gtk”

在 Unix 的图形界面一向是以 MIT 的 X Window 系统为标准, 可是在商业应用上有两大流派,一派是以 Sun 公司领导的 Openlook 阵营,一派是 IBM/HP 领导的OSF (Open Software Foundation) 的 Motif, 双方经过多年竞争之后&#xff0c…

汇编语言-019(汇编程序与c\c++相互调用)

1:在C程序中使用__asm块插入汇编代码程序(不能用LENGTHOF与SIZEOF运算符,而是LENGTH和SIZE) struct Package {long originZip; //4long destinationzip;//4float shippingPrice; //4 };int main(int argcount,char* args[]) {c…

kotlin 判断数字_Kotlin程序检查数字是偶数还是奇数

kotlin 判断数字Given a number N, we have to check whether it is EVEN or ODD. 给定数字N ,我们必须检查它是偶数还是奇数 。 Example: 例: Input:N 13Output:"ODD"Input:N 24Output:"EVEN"程序在Kotlin检查偶数或奇数 (Prog…

微机原理与接口技术(第2版)考点

第一章 1,微型计算机的特点: 功能强、可靠性高价格低廉系统设计灵活,适应性强体积小,重量轻,维护方便 2,微型计算机的硬件组成 微处理器内存储器I/O接口电路I/O设备系统总线 3,微机的工作过…

搜狗面试笔试一面二面全经历

09.25 华科西十二教,搜狗招聘笔试: C搜索引擎研发。同时有威盛、烽火两家笔试,就没有去。 09.26 华科校内某酒店,搜狗一面: 笔试做的不错,客观题错了3.5(20个),后两个算法…

UltraEdit语法高亮

语法加亮分支位于配置-编辑器显示之下,允许用户配置语法加亮选项:语法加亮可以识别预定词语,并用不同颜色显示它们。该功能对于程序员来说尤其有用,并且对那些想用不同颜色显示文档中词语的用户也非常有用。提供二十种…