c# – 请求对象,有什么优缺点?

前端之家收集整理的这篇文章主要介绍了c# – 请求对象,有什么优缺点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有以下方法
public Stream GetMusic(string songTitle,string albumName) { ... }

我的一位同事确信这是一种糟糕的方法签名.他希望我使用一个Request对象,它会将方法签名转换为:

public Stream GetMusic(SongRequest request) { ... }

我真的没有看到这样做的意义.我看到的唯一好处是将来添加参数会更容易.我们不必更改方法签名,但Request对象仍然需要更改.

就个人而言,我认为这不是一个好主意.使用参数可以明确表示方法运行所需的内容.另外,这迫使我们创建另一个对象并不多.

使用Request对象的优缺点是什么?你在你的项目中使用它,为什么?

解决方法

您正在使用GetMusic(…)方法获取数据.如果是这样,那么在没有真正需要的情况下使用其他实体可能需要付出太多努力.

实际上,在只有一个输入参数的情况下,您可以使用自定义类.但是如果那个类是唯一可以使用的地方,那么如果SongSignature作为类名称,必须专门用于这个类,这是使用“参数包”的一个不好的做法,因为它运气可读.

另外,如果有人愚蠢地说SongSignature必须是一个结构,并且在该结构中有一个指针指向要在方法内部更改的某些数据,那么指针永远不会真正改变,因为每次调用GetMusic时,它都需要一个副本财产袋.

即使它是一个类,你也必须将该类的访问器更改为public,并且通常这不是将参数传递给函数并从函数获取结果的最佳方法,因为您已经获得了一个流从那个方法.

我们假设以下情况:

如果在团队中,一个程序员用SongRequest类替换参数,则第二个程序员没有发现它被用作函数的参数(因为它在类的名称中运气信息),并将其更改为下一个结构迭代,第三个程序员以这种方式使用这个方法,它必须是一个类(例如在SongRequest中使用了类引用)…结果没有人真正知道为什么某些东西不起作用,因为它们每个都有圆顶正确的东西……没有理由使用类来进行本地使用而不是隐式声明参数.

一般来说,你很有可能在将来遇到这种情况,因为:

>您不是更改代码的人(即GetMusic)
>有人可以查看代码并找到类’SongReqest’有用(因此情况更糟 – 从本地使用到全局使用类)
>添加SongReuest类可以为你的方法添加一个额外的依赖项(有人改变这个类,很可能你的功能不会编译)
>使用SongRequest作为属性包仅将其用作锁定类,如前所述.
>使用这个类,你的方法可能永远不会与其他函数调用共享它的参数(出于什么原因?)
>最后,使用SongRequest类只为特定函数传递参数,给出额外的内存开销足迹,因为如果经常调用这个方法,一方面,它会在内存中创建很多不必要的对象,必须进行垃圾回收,另一方面,如果很少使用这样的方法,那么创建一个将几个变量传递给单个调用的类是不切实际的.

使用类而不是两个字符串参数只有一个真正的原因:程序员喜欢这样的调用,并希望使所有代码“比以前更漂亮”,更多monadic,尽管事实上这不是很实用和有用.

我永远不会建议你让代码看起来像这样,直到你想让它看起来更好.

通常,我认为使用自定义类传递函数的参数是一种不好的做法.

猜你在找的C#相关文章