试图创建一个嵌套对象。它的干净编码实践是啥?

Posted

技术标签:

【中文标题】试图创建一个嵌套对象。它的干净编码实践是啥?【英文标题】:Trying to create a nested object. What is the clean coding practice for it?试图创建一个嵌套对象。它的干净编码实践是什么? 【发布时间】:2022-01-14 03:18:57 【问题描述】:

我有一个 JSON 结构,并试图为它创建一个相关的 c# 对象。

有 4 个嵌套对象。

看起来像这样:

    public class One
    private int a;
    private int b;

    public One(int a, int b)
    
        this.a = a;
        this.b = b;
    
    public int A  get => a; 
    public int B  get => b; 


public class Two 
    private int c;
    private One one;

    public Two(int c, One one)
    
        this.c = c;
        this.d = d;
    
    public int C  get => c; 
    public One one  get => d; 

public class Three 
    private int e;
    private List<Two> twos;

    public Three(int e, List<Two> twos)
    
        this.e = e;
        this.twos = twos;
    
    public int E  get => e; 
    public List<Two> twos  get => twos; 


public class CollectionOfObjects
    private List<Three> collection;
    public CollectionOfObjects(List<Three> collection)
    
        this.collection = collection;
    
    public List<Three> Collection get => this.collection;

为了创建CollectionOfObjects,首先我需要创建类一,然后是二,然后是三。

我希望我的代码看起来干净。哪种方法更好;我应该只调用一个构造函数并传递创建所有 4 个对象所需的所有参数,还是应该手动创建一、二、三和 CollectionOfObjects?

【问题讨论】:

你的问题不是很清楚。 A、B 和 C 具有完全相同的结构。具有 2 个数值的对象。目前没有嵌套。嵌套将是一个对象 A 包括 B,B 包括 C。你想实现什么? @Hazrelle 我的错。相应地编辑代码 这可能有点自以为是。一个编码员的“干净”代码可能是另一个编码员的意大利面条噩梦。 【参考方案1】:

您可以嵌套对象构造,如下所示。但是如果结构像这个一样简单并且固定,我会以json 为例,它可以快速反序列化这种结构。

            var data = new CollectionOfObjects(
                new List<Three>()
                
                    new Three(3, new List<Two>()
                    
                        new Two(2, new One(1, 1)),
                        new Two(3, new One(2, 2))
                    ),
                    new Three(4, new List<Two>()
                    
                        new Two(2, new One(1, 1)),
                        new Two(3, new One(2, 2))
                    )
                
            );

【讨论】:

以上是关于试图创建一个嵌套对象。它的干净编码实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是啥

JavaScript 中嵌套函数的需求和用途是啥

在 for 循环期间访问嵌套对象 VueJS

Swift/JSONEncoder:包含嵌套原始 JSON 对象文字的编码类

kendoui parameterMap 解码 php 对象的正确 json 编码是啥?

在 JSON 中编码嵌套的 python 对象