c# - 返回一个新对象与修改作为参数传入的对象

标签 c# java oop design-principles

我在代码审查期间遇到了以下代码。

我的直觉告诉我,这不符合正确的 OOP。

我认为 LoadObject 方法应该返回一个新的 SomeObject 对象,而不是修改传递给它的对象。尽管我真的找不到正确的解释为什么这样更好。

我的解决方案更好吗?如果是,为什么?具体来说,在给定的代码示例(如果有的话)中违反了哪些 OOP 原则或标准?

   public void someMethod()
    {
        ...
        var someObject = new SomeObject();
        LoadSomeObject(reader,someObject);
    }

    private void LoadSomeObject(SqlDataReader reader, SomeObject someObject)
    {
       someObject.Id = reader.GetGuid(0);
    }

最佳答案

代码的编写方式没有任何问题,因为您只是在修改 someObject 的属性。

但是,在 LoadSomeObject 中创建 someObject 并返回它也是正确的。

在这一点上,两种选择都是正确的。

关于c# - 返回一个新对象与修改作为参数传入的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462627/

相关文章:

Java AES : No installed provider supports this key: javax. crypto.spec.SecretKeySpec

java - 在声明时初始化的数组直到调用 super 构造函数之后才实际初始化

java - 工厂模式和依赖关系

c# - 将包含对象作为参数传递给包含对象的方法是不是不好的设计?

c# - 无法在 C# 中使用 SSH.NET 上传文件 SFTP - 权限被拒绝

c# - 如何让datagridview在离开一行时自动保存记录

c# - 如何解决错误无法在 iis 7 中添加具有唯一键属性 'value' 的添加类型的重复集合条目

java - 如何杀死/处理 Android 中的空闲线程(通过调用第 3 方应用程序阻止)

javascript - 为什么在客户端上我看到我传递带逗号的字符串,但在服务器上传递带点的字符串?

c# - 尝试在不同 DIV 中的同一 View 上显示 CK 编辑器的内容