gpt4 book ai didi

c# - 我应该为此创建一个单独的类吗?

转载 作者:行者123 更新时间:2023-11-30 22:48:10 24 4
gpt4 key购买 nike

我的项目包含很多类,其中有一堆可以用 XML 文件来描述。别担心,这不是 XML 中的逻辑或实现。这是一个游戏,一个例子是游戏图 block 可以用 XML、图像文件、动画帧等定义。

我最终会得到一堆看起来像这样的函数:


public static Foo FromXml(ref XmlTextReader reader) { ... }

问题是:这些函数是否应该包含在它们自己的匹配类中,例如上面的那个是 Foo.FromXml。或者,我应该创建一个单独的类来从文件中读取内容吗?似乎有两个通用准则在这里竞争:

  1. 一个类应该了解一件事的一切——它本身。
  2. 一个类(class)应该只有一个改变的理由。

首先,第二个我不是很懂,因为“理由”比较模糊。第一条准则建议将每个读者放在相关的类中。第二个是让一个类专门用于读取 xml 文件。但优缺点值得商榷。一方面,每个类都可以包含自己的阅读器,因此不会引用十几个类。另一方面,每个类都必须包含 System.Xml,如果我更改 xml 格式,多个文件中的内容可能会发生变化(但我认为这不是太糟糕)。

我知道最重要的规则是“动动脑筋”,没有所谓“正确”的解决方案,只有好的和有效的解决方案。那么,您认为什么会更具可读性或更好的可维护性?

编辑:澄清一下,类可以完全不相关。既然是游戏,一个可能是 Sprite 动画类,一个可能定义敌人行为,一个可能定义 map 布局或属性。所以继承与此无关。

最佳答案

FromXml(...) 函数是否相同?假设它们是我会把它放在一个公共(public)库区域,因为这将使维护它们变得容易得多,因为不会有代码重复。代码应该还是很整洁的

SomeObject o = (SomeObject)Foo.FromXml(reader);

编辑: 或者,可能创建一些只有 FromXml/ToXml 函数的抽象基类,然后让所有想要使用这些函数的类继承自抽象类。

关于c# - 我应该为此创建一个单独的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1837325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com