当前位置:  开发笔记 > 数据库 > 正文

在类名中使用"Base"

如何解决《在类名中使用"Base"》经验,为你挑选了4个好方法。

在作为继承树底部的类名中使用"Base"这个词是否可以接受?

我总是发现这有点像一个警察,只是想知道是否有人同意我.

例如,如果我将MyClassA和MyClassB中的某些元素重构为公共基类,我很想创建一个MyBaseClass,两者继承.

但是如果我需要重构MyBaseClass会发生什么?MyBaseBaseClass?现在那真是太傻了.

我知道Rocky Lhotka不介意他的CSLA框架,但我总是对编程中的'definites'感到不安.

思考?

让我澄清为什么我甚至担心这一点.

我有两个名称空间 - MySpecificNamespace和MyCommonNamespace.正如您所料,MyNamespace使用MyCommonNamespace.

现在,我希望尽可能最大限度地使用命名空间来描述问题的上下文,并避免将上下文添加到类名中.因此,例如,考虑我在MyNamespace中有一个类,它来自MyCommonNamespace中的一个类.

选项A.

可以称之为

MySpecificClass: MyClass
{
}

但后来我在名称中添加了"特定"(上下文) - 这是多余的,因为它已经在MySpecificNamespace中.

选项B.

MyClass: MyCommonNamespace.MyClass
{
}

你可以看到我们在这里如何混淆,对吧?

选项C.

我觉得这个很可疑:

MyClass: MyBaseClass
{
}

Grzenio.. 9

我倾向于在基类的名称中添加一个Base后缀,只要它从技术角度来看(共享一些代码),并且它本身并不构成任何可用的类(因此所有这些类都是抽象的).这些是非常罕见的情况,应该像助手类一样避免.



1> Grzenio..:

我倾向于在基类的名称中添加一个Base后缀,只要它从技术角度来看(共享一些代码),并且它本身并不构成任何可用的类(因此所有这些类都是抽象的).这些是非常罕见的情况,应该像助手类一样避免.



2> annakata..:

因为你引用的重构原因,我支持"不".

一个类应该以它逻辑上代表的名称命名,除了Object类之外什么都不是真正的 Base.形而上学ftw :)


re:选项B,没有什么令人困惑的

namespace MySpecificNamespace
{
  MyClass: MyCommonNamespace.MyClass
  {
  }
}



3> JohnFx..:

"你所有的BaseClass都属于我们."

我支持一个明确的否定,只有一个例外.如果您正在编写应用程序来管理军事设施或棒球场,那就去吧.



4> Mr. Shiny an..:

与其父类具有相同名称的类会让我感到不安.在Java中,java.sql.Date扩展了java.util.Date.这非常烦人,因为您必须指定要导入的确切类,或者完全指定类名(包括包/命名空间).

就个人而言,我更喜欢按原样命名; 如果Base或Abstract类仅存在以提供某事物的部分实现,并且不代表该事物的接口,则通常可以在其名称中添加Abstract或Base一词.但是,如果该类也代表接口,那么您应该在它的作用之后命名它.

例如,在Java中,我们有Connection接口(用于DB连接).它叫做Connection,而不是IConnection.你这样使用它:

Connection con = getConnectionFromSomewhere();

如果要创建JDBC驱动程序并需要实现连接,则可以使用ConnectionBase或AbstractConnection,它是特定Connection的实现细节的下层.你可能有

abstract class AbstractConnection implements Connection

class OracleConnection extends AbstractConnection

或类似的东西.但是,代码的客户端从不会看到AbstractConnection,也看不到OracleConnection,他们只看到Connection.

因此,一般来说,通常有用的类应该以它们代表/做的命名,而代码维护/组织的帮助类可以按照它们的名称命名.

*ps我讨厌用I命名接口.人们用C命名所有类吗?这是2009年!你的IDE可以告诉你什么类型的对象,在奇怪的情况下,如果它是一个接口或类,它甚至是重要的.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有