gpt4 book ai didi

c# - 在构造函数中进行冗长的操作是否被认为是糟糕的设计?

转载 作者:太空狗 更新时间:2023-10-29 18:01:15 24 4
gpt4 key购买 nike

我正在实现一个类来比较目录树(在 C# 中)。起初我在类的构造函数中实现了实际的比较。像这样:

DirectoryComparer c = new DirectoryComparer("C:\\Dir1", "C:\\Dir2");

但在构造函数中执行可能冗长的操作感觉并不“正确”。另一种方法是将构造函数设为私有(private)并添加一个静态方法,如下所示:

DirectoryComparer c = DirectoryComparer.Compare("C:\\Dir1", "C:\\Dir2");

你怎么看?您期望构造函数“快速”吗?第二个示例更好还是只是使类的使用复杂化?

顺便说一句:

我不会将任何答案标记为已接受,因为我认为没有正确答案,只有偏好和品味。

编辑:

只是为了澄清一下我的例子。如果目录不同,我不仅感兴趣,我还对它们的不同之处(哪些文件)感兴趣。所以一个简单的 int 返回值是不够的。 cdragon76.myopenid.com 的答案实际上非常接近我想要的(给你+1)。

最佳答案

我认为两者的结合是“正确”的选择,因为我希望 Compare 方法返回比较结果,而不是比较器本身。

DirectoryComparer c = new DirectoryComparer();

int equality = c.Compare("C:\\Dir1", "C:\\Dir2");

...正如 Dana 提到的,有一个 IComparer反射(reflect)这种模式的 .Net 中的界面。

IComparer.Compare方法返回一个 int,因为 IComparer 类的使用主要用于排序。一般模式虽然符合问题的问题:

  1. 构造函数使用(可选的)“配置”参数初始化一个实例
  2. Compare 方法接受两个“数据”参数,比较它们并返回一个“结果”

现在,结果可以是一个 int、一个 bool、一个 diff 的集合。任何满足需求的东西。

关于c# - 在构造函数中进行冗长的操作是否被认为是糟糕的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/270029/

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