这个问题来自 javascript 的 Angular ,但它当然可以适用于其他语言。
我最近越来越多地遇到这个问题,想知道是否有关于何时构建方法的最佳实践,或者至少是良好的设计标准。
我看到的明显选项如下,每个选项都有一个简单的例子
多种方法:
this.makeGetRequest = function(controller){...} this.makeSynchronousGetRequest = function(controller){...} this.makePostRequest = function(controller, data){...}
一个方法,多参数:
//data would be an optional parameter // this.makeRequest("friends", "GET", true); // this.makeRequest("friends", "POST", false, newFriend); this.makeRequest = function(controller, type, isSynchronous, data){...}
一个方法,带有一个选项参数:
this.makeRequest = function(controller, type, options); this.makeRequest("friends", "POST", {data:newFriend, isSync:false});
HTTP 请求示例只是激发了这个问题,但这适用于任何具有不同数量的定制/变量的面向公众的功能。
这三者显然都具有同样的功能。但是什么是好的做法呢?是否有通常要遵循的标准或指南?
最佳答案
options
参数的优点是它允许无限的选项而不牺牲清晰度。当有人指定 data:
或 isSync:
时,很明显正在填写哪些设置。记住将函数中的第 13 个参数设置为 false
是混淆的秘诀。
因此,在最后两个选项之间,我只在以下情况下使用多个参数:(1) 总共少于四个参数,(2) 顺序合乎逻辑且易于内存(URL,然后是类型,然后是数据) , (3) 不超过一个(最后一个)是可选的。无论如何,这是一条经验法则。
多个方法与参数化相比怎么样?当您只有少数可能性时(GET 与 POST、UseDefaults 与 DontUseDefaults 或其他),多种方法只是一个选择。考虑一下,我可能仅在以下情况下设置单独的方法:
区别非常重要(同步请求的行为与异步请求根本不同,我希望开发人员有意识地选择应用哪一个。(相比之下,GET 与 POST 只是您的请求的另一个属性 —如果你做错了,这不是一个最终的、破坏交易的决定。)
无论如何您都不想设置其他选项。如果我首先必须记住是调用 foo.get() 还是 foo.post() and 然后记得填写一个
options
对象无论如何,我只是强制你在两个不同的地方做出决定。我宁愿将所有设置集中在一个地方。
关于javascript - 何时使用 which - 多个方法、多个参数或一个选项参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457449/