函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的。写好一个函数是提高程序代码质量最关键的一步。本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高、易维护,易测试的函数。
命名
首先从命名说起,命名是提高可读性的第一步。如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难。下面我来说说如何为函数命名的一些想法和感受:
采用统一的命名规则
在谈及如何为函数取一个准确而优雅的名字之前,首先最重要的是要有统一的命名规则。这是提高代码可读性的最基础的准则。
帕斯卡命名法和驼峰命名法是目前比较流行的两种规则,不同语言采用的规则可能不一样,但是要记住一点:保持团队和个人风格一致。
1、帕斯卡命名法
帕斯卡命名法简单地说就是:多个单词组成一个名称时,每个单词的首字母大写。比如:
public void SendMessage ();
public void CalculatePrice ();
在C#中,这种命名法常用于类、属性,函数等等,在JS中,构造函数也推荐采用这种方式命名。
2、驼峰命名法
驼峰命名法和帕斯卡命名法很类似,多个单词组成一个名称时,第一个单词全部小写,后面单词首字母大写。比如:
var sendMessage = unction () {};
var calculatePrice = function () {};
驼峰命名法一般用于字段、局部变量、函数参数等等。,在JS中,函数也常用此方法命名。
采用哪种命名规则并不绝对,最重要的是要遵守团队约定,语言规范。
尽可能完整地描述函数所做的所有事情
有的开发者可能觉得相较于长函数名来说,短函数名看起来可能更简洁,看起来也更舒服。但是通常来说,函数名称越短其描述的意思越抽象。函数使用者对 函数的第一印象就是函数名称,进而了解函数的功能,我们应该尽可能地描述到函数所做的所有事情,防止使用者不知道或误解造成潜在的错误。
举个例子,假设我们做一个添加评论的功能,添加完毕后并返回评论总数量,如何命名比较合适呢?
// 描述不够完整的函数名
var count = function addComment() {}
// 描述完整的函数名
var count = function addCommentAndReturnCount() {};
这只是简单的一个例子,实际开发中可能会遇到得更多复杂的情况,单一职责原则是我们开发函数要遵守的准则,但是有时候无法做到函数单一职责时,请记 得函数名应该尽可能地描述所有事情。当你无法命名一个函数时,应该分析一下,这个函数的编写是否科学,有什么办法可以去优化它。
采用准确的描述动词
这一点对母语非英语的开发者来说应该是比较难的一点,想要提高这方面的能力,最主要的还是要提高词汇量,多阅读优秀代码积累经验。
这里简单说说我自己的一些感想和看法:
1、不要采用太抽象广泛的单词
很多开发人员会采用一个比较宽泛的动词来为函数命名,最典型的一个例子就是get这个单词。我们平时开发中经常会通过各种不同的方式拿到数据,但是每一种方式都用get就有点太抽象了。具体如何命名,要具体分析:
(1)简单的返回数据
Person.prototype.getFullName = function() {
return this.firstName = this.lastName;
}
(2)从远程获取数据
var fetchPersons = function () {
...
$.ajax({
})
}
(3)从本地存储加载数据
var loadPersons = function () {};
(4)通过计算获取数据
var calculateTotal = function () {};
(5)从数组中查找数据
var findSth = function (arr) {};
(6)从一些数据生成或得到
var createSth = function (data) {};
var buildSth = function (data) {};
var parseSth = function(data) {};
这是一个简单的例子,我们平时开发中遇到的情况肯定会复杂得多,关键还是靠单词的积累,多阅读优秀源码
下面是整理的一些常用的对仗词,大家可以参考使用
add/remove increment/decrement open/close
begin/end insert/delete show/hide
(责任编辑:admin)