适当课程的提示

时间:2009-03-01 02:33:04

标签: c# class

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

我正在处理的程序,在基本级别上,从database1中的一个表中获取产品,并将产品保存到database2上的表中。但是,用户可以使用很多设置来了解他们在进入database2时希望来自database1的字段的外观。

澄清:上面引用的set和get方法不是getter和setter方法。我使用属性但是我将它们称为set,因为在更新之前有很多代码用于格式化某些字段。我理解这种困惑,并为不澄清而道歉。

3 个答案:

答案 0 :(得分:4)

当前产品的单身听起来确实不好。您只是用不同的名称调用全局变量。

我不知道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...
}

答案 1 :(得分:2)

要给我0.5美分,一个只能通过将其分成部分来管理的类有相当多的代码味道。 将整个事物分成几个类听起来不错,特别是当你已经确定SKU等东西成为它自己的类时。

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

  • 如果我只能通过有效的产品实例访问SKU,这样可以吗?即使它只是一个标识符,这样的标识符本身也可能非常复杂。
  • SKU必须以什么方式使用Product类中的东西?如果产品是唯一一个实例化SKU的产品,则可以将产品传递到SKU。这两个类现在耦合得非常紧,但仍然比没有语义的单个产品混乱更好。
  • 您能否确定需要共享的常见部分是什么?也许你错过了一个实体或价值对象,这是“共同的部分”?
  • 也许您会对产品构建器感到满意,而不是让客户端围绕产品实例的内部进行搜索?

从我的角度来看,当你有一个包含1k +代码行的类时,仍然有很多理解错过了你的“产品”究竟是什么以及它在你的应用程序范围内的表现......

答案 2 :(得分:1)

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

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