总结编写高质量软件的要点

总结编写高质量软件的要点

作为一个初入“码农”行业的菜鸟,花费了近一周的时间阅读了两本有关代码编程技巧的书籍:《重构:改善既有代码的设计》、《代码简洁之道》,并且参加了一个代码规范的培训,这里有些心得,分享给大家。

1、命名规范

为什么先写命名规范呢?因为在代码中存在了大量的标识符、函数名、类名,另外还有一些宏定义的存在,那么一个有意义的命名能够帮助我们快速理解代码。

首先,对命名的几个要点进行总结:
1、名副其实:无论是标识符、函数名、还是类名的命名,都要告诉我们一件事,那就是你想要做什么。
2、避免使用有歧义的单词。
3、做有意义的区分,也就是说尽量避免使用数字0,1,2…等区分两个或多个名字。
4、避免自己创造单词(除非是错写),尽量减少缩写(除非是约定成俗的缩写)。

其次,再来看看有关标识符、函数名、类名等的具体区分:
(1) 标识符
关于标识符最简单的命名规则这里再废话一下:

a、第一个字符必须是字母 a 到 z、A 到 Z 或下画线字符(_)中的一个。
b、第一个字符后,可以使用字母 a 到 z 或 A 到 Z、数字 0 到 9 或下画线。
c、大小写字符是不同的。这意味着 ItemsOrdered 与 itemsordered 不一样。

那么,我们开始介绍一下如何来命名一个标识符:
1、使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
2、标识符的单词应该是名词或名词短语。
2、对于标识符的书写规则:一套代码中,书写规则要统一,可以使用大驼峰法的方式或者使用下划线混排的方式,避免两者混合。比如:

// 大驼峰命名法(又称为帕斯卡命名法):相比小驼峰法,大驼峰法把第一个单词的首字母也大写了
int StudentName; 
// 下划线命名法,名称中的每一个逻辑断点都用一个下划线来标记
int student_name; 

(2) 方法名
1、方法名使用大驼峰法进行命名;
2、方法名应是动词或动词短语,来表达这个函数是在做什么,比如:

// 只从方法名我们就能理解这个函数是要做什么
void PrintMassage(string msg); 

(3) 类名
1、类名使用大驼峰法命名;
2、类,本质上是定义一个数据类型的蓝图,从而,类名同样使用名词或名称短语命名。

2、函数

函数,请记住一句话:函数应该做一件事做好这件事只做这一件事

函数的关注点在于:

1、每一个函数一个抽象层级,遵循向下规则;
2、函数中的switch语句提炼出多态书写;
3、函数的参数1~2最佳,避免3个参数;
4、减少临时变量,提炼出内联函数;
5、避免语句的重复。

3、类

关于提炼类,短小应该是它的第一要义。

1、类的提炼遵循单一权责原则,类和模块有且只有一条加以修改的理由。
2、保持类的内聚性,也就是说所有的成员变量都能被方法使用。
3、类的依赖性,类应该依赖其抽象,而不应该过分依赖其具体实现。

4、测试

一个好的类,因应该包含它们自己的测试代码。确保所有的测试都完全自动化,让它们检查自己的测试结果。
所以,一套测试就是一个强大的Bug侦测器,能够大大缩短解决Bug所需要的时间。
测试代码应该包含以下几条规则:

1、在编写不能通过单元测试前,不可编写生产代码;
2、只编写刚好无法通过的单元测试,不能编译也算不通过;
3、只可编写刚好足以通过当前失败测试的生产代码。
4、每个测试一个断言,也就是测试一个功能。
5、遵循FIRST原则,也就是快速、独立、可重复、自足验证,及时。

5、注释

注释一般是用来解释代码的作用,好的注释能够帮助我们快速阅读、理解代码。
关于注释的书写我们应该注意以下几点:

1、注释应该提供有用的信息;
2、TODO注释,主要是用来解释当前代码为什么无所作为,将要去完成什么
3、放大不合理的之物的重要性。

关于的注释,为了使代码整洁、美观,在格式上有所要求:

1、源文件头包含版权说明、日期、作者等注释;
2、函数注释:写出函数的功能,参数列表的意义和返回值;
3、注释中更不能有缩写;
4、注释与所描述内容进行同样的缩排;
5、将注释与其上面的代码用空行隔开;
6、避免在一行代码或表达式的中间插入注释;
7、对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值