创建接收参数的方法的最佳方法

时间:2013-05-29 11:57:46

标签: c# asp.net

我想知道最好的方法是创建接收{1}的低parameters的方法,如1或2.

第一个:将实体类对象作为参数传递。

MyClass entity = new MyClass();
BDClass bd = new BDClass();
entity.Name = "Alan";
bd.InsertName(entity);

public void InsertName(MyClass entity)
{
     ///A simple Insert/Select
}

第二个:即使在OO上编程,也要使用变量作为参数,而不是实体类。

BDClass bd = new BDClass();
string name = "Alan";
bd.InsertName(name);  

public void InsertName(string name)
{
  ///A simple Insert/Select
}

我想知道哪一个是最好的考虑性能和编程的良好实践。还是取决于具体情况?我的意思是,我认为最好只使用实体类作为参数,当它是一个很大的类时,以及参数数量较少的变量。

我知道它与代码本身无关,但我只是想知道一个是正确的编程方式

4 个答案:

答案 0 :(得分:2)

没有太大的差异和正确的答案。既然你可以用第二种形式写它,方法名是InsertName,我更喜欢第二种形式。

为什么呢?首先,它只需要一个名称(字符串),否则只有一个参数是不够的。其次,您可以将任何名称传递给它,无论它来自MyClass还是其他任何地方。

如果你真的需要传递给定类型的MyClass对象,那么你需要的不仅仅是一个名称,只能传递一个名字字符串。在这种情况下,MyClass可能是BDClass的依赖关系。

答案 1 :(得分:1)

取决于您正在处理的情况。如果您要添加实体类的整个对象,并且您的方法是在一些c#Library项目中编写的,并且您希望在其他项目中使用该方法,其中您收集有关实体比第一种方法方法的对象的完整信息适合您...但是最后,完全取决于你想要做什么。

答案 2 :(得分:1)

两者都正确,当在C#中将正确性定义为有效时。

根据用途,可以选择一种模式或另一种模式。没有cookie切割方法,你不会看到任何性能差异。

例如,如果您想验证类型为MyClass的现有对象,那么您会期望整个项目。传递具有 lot 属性的对象,或者所需参数的数量将随着时间的推移而增加。

答案 3 :(得分:1)

取决于。

如果您的方法正在处理(数据/域)实体,则甚至不应该是一个类;而是一个接口 - 您将把它提供给IoC框架的方法。

如果需要经常将其传递给其他代码块,则以另一个类的形式传递给其他代码块;那么也许使用实体类会更容易,实体类将映射到结果类型。

它是一个纯粹的函数,只是计算某些东西(它的算法不会改变,你不会使用类似策略模式的东西),那么你可以只使用命名参数。

这些并非所有可能的情况。这些只是(恕我直言)执行此任务的好方法。

我总是从简单的命名论点开始!避免过早优化!等待代码中的模式出现。