繁体   English   中英

适当班级的提示

[英]Tips on proper classes

我正在使用C#。 我有一个产品类,其中包含sku,名称,描述...等字段,以及setSku,setDescription,setImages之类的方法(产品附带有图像)。 我将这些方法保留在Product类中,但是由于客户端可以使用大量设置来设置sku以及描述和图像,因此该类变得非常大。 类中有很多代码。 因此,我打算将大型Product类分解为ProductSku类,ProductDescription类等。 这里的问题是所有类都需要访问某些相同的字段。 我开始在那些单独的类上调用方法,并一遍又一遍地传递相同的对象,但这似乎并不正确。 因此,现在我决定制作一个全局(使用Singleton模式)CurrentProduct类,该类具有我创建的所有其他Product类所需的字段。 我的问题是,这听起来正确吗,您会怎么做?

我正在研究的程序在一个基本级别上,是从database1的一个表中获取产品并将产品保存到database2的一个表中。 但是,用户有很多设置可供他们使用,以便他们输入数据库2时希望来自数据库1的字段显示。

澄清一下:上面引用的set和get方法不是getter和setter方法。 我使用属性,但是我称它们为set,因为在更新之前,有很多代码会格式化某些字段的格式。 我理解这种混淆,对于无法澄清的情况,我深表歉意。

当前产品的单例听起来确实很糟糕。 您只是通过不同的名称调用全局变量。

我不知道什么是Sku,但是对于其余的(描述和图像),如果它们是产品的属性(我认为它们是),则它们属于Product类。

如果您将“课堂作品”一起传递了很多,则表明它们属于同一类。

如果愿意,可以使用partial关键字将代码(不是类)分成几个文件。 像这样:

// This file is Product.CodeAboutThingA.cs

public partial class Product
{
    // Some stuff related to A here...
}

并在另一个文件中:

// This file is Product.CodeAboutThingB.cs

public partial class Product
{
    // Some stuff related to B here...
}

为了给我.5美分,一个只能通过将其拆分为部分进行管理的类具有相当的代码味道。 将整个事情分成几个类听起来不错,尤其是当您已经将SKU等东西标识为自己的类时。

你应该问自己的事情是...

  • 如果我只能通过有效的产品实例访问SKU,可以吗? 即使只是标识符,这种标识符本身也可能非常复杂。
  • SKU必须以哪种方式使用Product类中的内容? 如果产品是唯一一个实例化SKU的产品,则可以将产品传递到SKU中。 现在,这两个类的耦合相当紧密,但仍比没有语义的单个Product混乱要好。
  • 您能确定哪些地方需要共享吗? 也许您缺少“公共部分”的实体或价值对象?
  • 也许您会更喜欢Product Builder,而不是让客户在Product实例的内部四处逛逛?

从我的角度来看,当您的类中包含1k +行代码时,仍然有很多理解会遗漏“产品”的真正含义以及它在应用程序范围内的行为方式...

也许您应该考虑将其合并回一个类,但是为了使它可读,请使用partial修饰符?

另一个答案是创建抽象类Product并从中继承专门的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM