请求对象,有什么优点和缺点?
假设我有以下方法:
public Stream GetMusic(string songTitle, string albumName) { ... }
我的一位同事确信这是一个糟糕的方法签名。 他希望我使用Request对象,它可以将方法签名转换为:
public Stream GetMusic(SongRequest request) { ... }
我真的不明白这一点。 我看到的唯一好处是将来可以更容易地添加参数。 我们不需要更改方法签名,但Request对象仍然需要更改。
我个人认为这不是一个好主意。 使用参数可以明确该方法运行的要求。 另外,这迫使我们创造另一个不多的对象。
使用Request对象有什么优点和缺点? 你在项目中使用它,为什么?
您使用GetMusic(...)
方法获取数据。 如果是这样的话,那么在没有真正需要的情况下可能会过多地使用额外的实体。
事实上,在某种情况下,只有一个输入参数,您可以使用自定义类。 但是如果这个班级是唯一使用的地方,所以如果SongSignature
作为班级名称,必须专门用于这个班级,这是使用“参数包”的糟糕做法,因为它具有可读性。
另外,如果有人愚蠢地说SongSignature
必须是一个结构体,并且在那个结构体中有一个指向方法内要修改的数据的指针,那么这个指针永远不会真正改变,因为每次GetMusic
被调用时,它都会得到一个物业包。
即使它是一个类,也必须将该类的访问者更改为public
,并且通常这不是将参数传递给函数并从函数获取结果的最佳方法,因为您已获取流从那个方法。
我们假设以下情况:
如果在一个团队中一个程序员用一个类SongRequest
替换参数,第二个程序员没有发现它被用作函数的参数(因为它将信息放在类的名字中),并在下一个时候将其更改为结构迭代,第三个程序员以这种方式使用这种方法,它必须是一个类(例如在SongRequest
使用类引用)...结果没有人确实知道为什么某些东西不能正常工作,因为他们每个人都有圆顶正确的东西...没有任何借口使用类的本地使用,而不是隐式声明的参数。
一般来说,你很有可能在未来遇到这样的情况,因为:
GetMusic
) SongReuest
类可以为你添加一个额外的依赖方法(有人改变这个类,很可能你的功能不会编译) SongRequest
作为一个property bag
锁定它的使用仅仅作为一个类。 SongRequest
类来传递特定函数的参数,会增加内存占用空间,因为如果经常调用这个方法,一方面它会在内存中创建大量不必要的对象,这些对象必须被垃圾收集,另一方面,如果很少使用这种方法,创建一个类将多个变量传递给单个调用将是不现实的 只有一个真正的理由使用类而不是两个字符串参数:程序员喜欢这样的调用,并希望使所有代码“比以前更漂亮”,更单调,尽管事实上这不是很实用和有用。
我绝不会建议你让代码看起来像这样,直到你想让它看起来更好。
通常,我认为使用自定义类为函数传递参数是一种不好的做法。
传递对象有一个主要优点 -
如果您有一个用作参数的对象,例如SongRequest
,则该对象可以负责其自己的验证。 这样可以大大简化每个使用该对象的方法中的验证,因为几乎只需要检查null,而不是检查每个参数。
另外,如果有很多参数,生成单个对象通常会更简单。 如果您发现您需要多重过载来管理不同的参数组合,那么情况尤其如此。
这就是说,每种情况都是独一无二的。 对于每种情况,我都不会推荐一种方法。
链接地址: http://www.djcxy.com/p/55053.html上一篇: Request object, what are the pros and cons?
下一篇: My sub query is adding 20 seconds to the execution time. How can I speed it up?