如何将我的代码重组为C#中的类?

时间:2010-10-07 06:28:24

标签: c# class xna

我正在使用C#w / XNA开发一个项目,我想重组它并将其中的一部分分成几类。

目前,它只是一个game.cs文件,但我想稍微清理一下。不幸的是,我对课程不太熟悉。也许有人可以帮我弄清楚如何做到这一点,或者指导我做某种教程?

3 个答案:

答案 0 :(得分:5)

好吧,首先要考虑哪些数据位自然地结合在一起。例如,如果你有一个球员的名字,得分,位置,生命数量等,那么这表明你应该有一个Player课程。因此,请查看所有状态,将其拆分为不同的组,然后检查哪些现有方法仅适用于一组状态或另一组...并将方法置于他们感兴趣的状态。< / p>

当一个方法需要处理来自多个对象的状态时,当然会变得更加棘手:通常这意味着您将代码置于一种类型中并将另一种类型作为参数传递。

很多这是直觉,说实话 - 以上只是起点。随着时间的推移,它会变得更容易一些,你可能会开始更多地考虑责任而不仅仅是数据 - 但它是一个很好的起点,因为你可能已经拥有了你需要的数据,只是没有以正确的方式组织......而决定系统内的责任可能会困难得多。

答案 1 :(得分:3)

软件设计中有一个有用的原则,称为“零,一,多”。

  • 要么你有的东西 - 所以你不要在第一时间实施它
  • 或者你有一个的东西 - 你可能不需要把它变成一个类。
  • 或者你可以很多某些东西 - 你可能应该使它成为一个类。

(重要的是,没有任何东西有两个,三个或四个东西。)

查看您的网站,我发现您正在制作Pong克隆。你有两个桨 - 所以这属于“很多”的情况 - 所以让自己成为一个桨类。这样你就可以创建两个类的实例,每个实例对应一个。

这样每个拨片共享相同的功能,但使用不同的数据。减少代码重复(这是一件好事)。

你还有一个球。无论你是否成为一个班级,都可能是一个品味问题(以及你可能有什么样的抱负来增加“多球”模式)。我建议不要把它作为一个班级,直到你发现你需要这样做。

答案 2 :(得分:2)

类是可以创建的对象的模式,是实体的抽象描述。当实例化并填充类时,它将包含描述该实体的数据。

对象通常应该封装一个文字“东西”,或者负责管理一组特定的函数。

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

一个很好的例子是一个代表一个游戏领域的类,或一个为特定类型的数学运算提供辅助函数的类。