首页 > 业内资讯 > 提高代码质量:如何编写函数

提高代码质量:如何编写函数

时间:2016-02-23 | 来源:developerWorks | 阅读:175

话题: developerWorks

如果没有注释,使用者看到这样的代码:getProduct(true),他肯定搞不清楚true是代表什么意思,还要去查看函数定义才能明白这个函数是如何使用的。这就意味着这个函数不够清晰,就应该考虑去优化它。通常有两种方式去优化它:
(1)将函数一分为二,分成两个函数getFinishedProduct和getUnFinishedProduct
(2)将bool转换成有意义的枚举getProduct(ProductStatus)

不要修改输入参数

如果输入参数在函数内被修改了,很有可能造成潜在的bug,而且使用者不知道调用函数后居然会修改函数参数。
正确使用输入参数的做法应该是只传入参数用于函数调用。
如果不可避免地要修改,一定要在注释中说明。

尽量不要使用输出参数

使用输出参数说明这个函数不只做了一件事情,而且使用者使用的时候可能还会感到困惑。正确的方式应该是分解函数,让函数只做一件事。

编写函数体

函数体就是实现函数功能的整个逻辑,是一个函数最关键的地方。下面我谈谈关于函数代码编写的一些个人想法。

相关操作放在一起

有的时候,我们会在一个函数内进行一系列的操作来完成一个功能,比如:

var calculateTotalPrice = function() { var roomCount = getRoomCount(); var mealCount = getMealCount(); var roomPrice = getRoomPrice(roomCount); var mealPrice = getMealPrice(mealCount); return roomPrice mealPrice; }

这段代码计算了房间价格和早餐价格,然后将两者相加返回总价格。
这段代码乍一看,没有什么问题,但是我们分析代码,我们先是分别获取了房间数量和早餐数量,然后再通过房间数量和早餐数量分别计算两者的价格。这种情况下,房间数量和计算房间价格的代码分散在了两个位置,早餐价格的计算也是分散到了两个位置。也就是两部分相关的代码分散在了各处,这样阅读起代码来逻辑会略显不通,代码组织不够好。我们应该让相关的语句和操作放在一起,也有利于重构代码。我们修改如下:

var calculateTotalPrice = function() { var roomCount = getRoomCount(); var roomPrice = getRoomPrice(roomCount); var mealCount = getMealCount(); var mealPrice = getMealPrice(mealCount); return roomPrice mealPrice; }


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网