拥有轻巧的物体是一种好习惯吗?

时间:2020-07-16 14:57:19

标签: c# asp.net performance

我是网站的开发人员,并且有很多带有列表或CRUD的页面

这是为仅具有所需属性的页面列表创建轻型对象,并为创建/更新页面创建具有从该轻型对象继承的更多属性的较重对象的好习惯吗?

即使大多数属性为null,也会影响始终使用重对象的性能吗?

例如:

    class CustomerLight
    {
        int Id { get; set; }
        string FirstName { get; set; }
        string FullName { get; set; }

    }

    class Customer : CustomerLight
    {
        string Adress { get; set; }
        string City { get; set; }
        string ZipCode { get; set; }
    }

    class CustomerFull
    {
        int Id { get; set; }
        string FirstName { get; set; }
        string FullName { get; set; }
        string Adress { get; set; }
        string City { get; set; }
        string ZipCode { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

这个问题有很多角度,您可以从中解决。首先,尽管我没有看到CustomerFullCustomer之间的任何区别。它们是相同的属性。我怀疑这只是为了比较?

首先,是的,与较小的对象相比,较大的对象将始终对性能产生影响。但是,我冒昧地猜测您的数据大小几乎不会使您注意到它。为了易于使用,我将继续使用较大的对象。如果您要从数据库中提取该对象,那么在代码中使用完整对象将更加简单。

第二点是,如果您遇到了性能问题,那么您可以始终在功能更强大的计算机上运行您的网站(向上扩展)或使用较小的查询大小(重构代码)来工作。

第三点是,您可以将这些组件分解为关系结构,以简化使用的对象并在以后进行更好的扩展。我倾向于尝试考虑我的对象,因为将来向该客户添加第二个地址之类的东西会有多痛苦?因此,您可能会让客户包含一个地址列表。为此,如果您打算链接到数据库或仅在代码中使用以下内容,则可以看一下Entity Framework。

public class Customer {
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public List<Address> addresses { get; set; }
}

public class Address {
    public string Street { get; set; }
    public string Zip { get; set; }

} 
// Or if 1 to 1 relationship
public class Customer {
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public Address address { get; set; }
}

public class Address {
    public string Street { get; set; }
    public string Zip { get; set; }

}

希望这有助于回答您的问题。

相关问题