我想知道最好的方法是创建接收{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
}
我想知道哪一个是最好的考虑性能和编程的良好实践。还是取决于具体情况?我的意思是,我认为最好只使用实体类作为参数,当它是一个很大的类时,以及参数数量较少的变量。
我知道它与代码本身无关,但我只是想知道一个是正确的编程方式
答案 0 :(得分:2)
没有太大的差异和正确的答案。既然你可以用第二种形式写它,方法名是InsertName
,我更喜欢第二种形式。
为什么呢?首先,它只需要一个名称(字符串),否则只有一个参数是不够的。其次,您可以将任何名称传递给它,无论它来自MyClass
还是其他任何地方。
如果你真的需要传递给定类型的MyClass
对象,那么你需要的不仅仅是一个名称,只能传递一个名字字符串。在这种情况下,MyClass
可能是BDClass
的依赖关系。
答案 1 :(得分:1)
取决于您正在处理的情况。如果您要添加实体类的整个对象,并且您的方法是在一些c#Library项目中编写的,并且您希望在其他项目中使用该方法,其中您收集有关实体比第一种方法方法的对象的完整信息适合您...但是最后,完全取决于你想要做什么。
答案 2 :(得分:1)
两者都正确,当在C#中将正确性定义为有效时。
根据用途,可以选择一种模式或另一种模式。没有cookie切割方法,你不会看到任何性能差异。
例如,如果您想验证类型为MyClass
的现有对象,那么您会期望整个项目。传递具有 lot 属性的对象,或者所需参数的数量将随着时间的推移而增加。
答案 3 :(得分:1)
取决于。
如果您的方法正在处理(数据/域)实体,则甚至不应该是一个类;而是一个接口 - 您将把它提供给IoC框架的方法。
如果需要经常将其传递给其他代码块,则以另一个类的形式传递给其他代码块;那么也许使用实体类会更容易,实体类将映射到结果类型。
它是一个纯粹的函数,只是计算某些东西(它的算法不会改变,你不会使用类似策略模式的东西),那么你可以只使用命名参数。
这些并非所有可能的情况。这些只是(恕我直言)执行此任务的好方法。
我总是从简单的命名论点开始!避免过早优化!等待代码中的模式出现。