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

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

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

话题: developerWorks

这种方式下,函数使用者在使用时,要传入参数进行调用,避免了全局变量可能存在的问题。另外也降低了耦合,提高了可测试性,在测试的时候就不必依赖于全局变量。

当然,在保证函数不依赖于全局变量和测试性的情况下,函数参数还是越少越好。《代码大全》中提出将函数的参数限制在7个以内,这个可以作为我们的参考。
有的时候,我们不可避免地要使用超过10个以上函数,在这中情况下,我们可以考虑将类似的参数构造成一个类,我们来看看一个典型的例子。
我相信大家平时一定做过这样的功能,列表筛选,其中涉及到各种条件的筛选,排序,分页等等功能,如果将参数一个一个地列出来必定会很长,例如:

var filterHotel = function (city, checkIn, checkOut, price, star, position, wifi, meal, sort, pageIndex) {}

这是一个筛选酒店的函数,其中的参数分别是城市,入住和退房时间,价格,星级,位置,是否有wifi,是否有早餐,排序,页码等等,实际的情况可能会更多。在这种参数特别多的情况下,我们可以考虑将一些相似的参数提取成类出来:

function DatePlace (city, checkIn, checkOut){ this.city = city; this.checkIn = checkIn; this.checkOut = checkOut } function HotelFeature (price, star, position, wifi, meal){ this.price = price; this.star = star; this.position = position; this.wifi = wifi; this.meal = meal; } var filterHotel = function (datePlce, hotelFeature, sort, pageIndex) {};

将多个参数提取成对象了,虽然对象数量增多了,但是函数参数更清晰了,调用起来也更方便了。

尽量不要使用bool类型作为参数

有的时候,我们会写出使用bool作为参数的情况,比如:

var getProduct = function(finished) { if(finished){ } else{ } } // 调用 getProduct(true);


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