Tag: 反模式

使用断言来validation函数参数是一个不好的做法吗?

我正在寻找validation,我得到的参数是什么是有效的给定的一组情况。 特别是在生成SQL时,我想validation传递给函数的对象与服务器端是同步的还是有效的。 我想要解决这个问题的最自然的方法是使用以下方法 var InvalidIdValue = (actual) => return new Error(`Id: ${actual} is invalid. Expected id >= 1`) var InvalidIdType = (actual, expectedType) => return new Error(`Id: ${typeof actual} is invalid. Expected ${typeof expectedType}`) function sync(query, obj) { if(typeof obj.id != typeof 1) return InvalidIdValue(obj.id) if(obj.id < 1) return InvalidIdValue(obj.id, 1) // Pull the data […]

包含函数反模式的对象中的参数太多?

在我的程序中,用户提供了一个数组,用于定义哪些函数在循环中运行。 我有一堆必须传递给每个函数的variables。 由于参数列表出现在很多地方,名单似乎一直在增长,并且变得难以维护。 这里是一些伪代码: var fn_defs = { test_fn_1: function(test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, cb){ //…do stuff }, test_fn_2: function(test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, cb){ //…do stuff }, etc… }; async.eachSeries(user_defined_list_of_function_names, function(fn, async_cb){ var test_var_1, test_var_2, test_var_3, test_var_4, test_var_5; fn_defs[user_defined_list_of_function_names](test_var_1, test_var_2, test_var_3, test_var_4, test_var_5, function(result){ async_cb(); }, function(err){ //end }); }); 寻找更好的方法来做到这一点。 我想我可以做全局variables,但我想这也是一个反模式。