3

我想继承 DevExpress ComboBoxEdit 控件,并且想知道将我的类命名为与 DevExpress 类相同的做法是不好的做法。

这是派生类声明:

using System;
using System.Collections.Generic;
using System.Text;

namespace MyApplication.Components
{
    public class ComboBoxEdit : DevExpress.XtraEditors.ComboBoxEdit
    {
    }
}

我应该将 MyApplication.Components.ComboBoxEdit 重命名为 MyComboBoxEdit 之类的其他名称吗?

4

8 回答 8

11

您创建自己的 ComboBoxEdit 一定是有原因的。我会以班级的名义使用这个原因。

于 2009-09-08T15:59:38.010 回答
3

仅当您希望维护人员以一千个太阳的强度讨厌您时,这才是一个好主意。

于 2009-09-08T16:00:24.513 回答
1

使用常识。

1)如果在整个应用程序中同时使用了您的组合框和 DevExpress 组合框,则将其命名为不同的名称(但仍然可以显示其身份)。

2)如果您有一个明确定义的约定,您将从某个名称空间继承所有组件并仅使用您自己的,那么我认为这样做没有问题。

于 2009-09-08T16:01:49.283 回答
0

好吧,这样做是合法的,但我建议不要这样做,因为它只会引起混乱......为什么不将它命名为“MyComboBoxEdit”或“SuperComboBoxEdit”或任何你喜欢的名字?

于 2009-09-08T15:58:59.070 回答
0

从技术上讲,您的班级已经有了不同的名称。您的类名为“MyApplication.Components.ComboBoxEdit”,DevExpress 类名为“DevExpress.XtraEditors.ComboBoxEdit”。

也就是说,您的课程可能与 DevExpress 课程有不同的行为。出于这个原因,您可能应该给您的新类起一个更具描述性的名称。

于 2009-09-08T16:01:33.700 回答
0

如果它不会让您(以及您的同事/其他将在应用程序上工作的人)感到困惑,那么使用相同的名称是完全合法的——毕竟这就是命名空间存在的原因。
否则,您可能希望以扩展基类的原因命名您的类,例如 ComboBoxEditThatAlsoDoesThisAndThat,而不是使用通用的 My前缀...

于 2009-09-08T16:01:35.523 回答
0

我也建议不要命名冲突。关于名称,如果您有理由创建继承控件,那么您应该能够给出一个有用的名称。

My前缀受到严格限制,对于阅读代码的新手来说几乎没有价值。当您需要一个新的时,您也可能会遇到 MyComboBox2。

于 2009-09-08T16:02:50.217 回答
0

这并没有什么不合法的地方,但是如果你最终在不同的文件中使用这样的 using 语句,你就会遇到问题。

using DevExpress.XtraEditors;

然后你最终将类名埋在智能感知中(因为两个类具有相同的名称);所以你必须明确指定你正在使用哪个类。

我假设...我从未使用过 Dev Express。我不知道 XtraEditors 是否是一个命名空间。

于 2009-09-08T16:05:52.257 回答