假设有一个具有3个属性的类。
员工
我有一个网络方法GetInfo
。
通过直接参数与直接课程的表现有什么不同?
GetInfo(Employee emp) // This will internally call emp.age & return the values.
GetInfo(int age)
有什么想法吗?
答案 0 :(得分:1)
衡量自己的表现,以确定一个人的表现是否优于另一个人。创建双重方法,获取秒表实例,并对方法的每个版本执行几千次调用,并查看两者之间是否存在可证明的相关差异。我怀疑是否存在。
与此同时,问问自己Employee
实例是否与方法相关。如果您正在做的是接受员工的年龄,然后传回与特定员工无关的数据,那么为什么还要将方法绑定到实例呢?只需取整数参数即可。例如,假设你的方法调用就是这个
public Employee[] GetEmployeesByAge(ArgumentType argument)
参数是Employee
还是简单整数是否有意义?相关输入是年龄,而不是年龄来源的Employee
。如果您选择使用Employee
作为参数,那么您将此方法限制为已经有Employee
实例待定的调用方,但情况可能并非总是如此。 (毕竟,他们正在努力获得员工。)
选择您的指南:YAGNI,KIS等
答案 1 :(得分:0)
表现可能并不明显。
// Either way the performance is about the same
Employee emp = new Employee();
Info out1 = GetInfo(emp);
// or
Info out2 = GetInfo(emp.Age);
答案 2 :(得分:0)
如果您已经拥有Employee
课程,那么您需要考虑的唯一考虑因素是性能。如果您必须创建一个年龄设置为空的Employee
对象,则只需使用年龄。
然而,从语义上讲,如果您使用int
参数,则应该明确(通过方法名称)您将按年龄检索,否则您发送的内容可能并不明显,除非您查看方法声明,因此请考虑将名称更改为GetInfoByAge
。
答案 3 :(得分:0)
我认为你应该使用完全需要它的方法,而不是更多。 这将改善代码重用和关注点分离。 在这个发展阶段,性能不应该成为一个问题。