5

作为一个非英语母语的人,我经常想知道在命名类或对象时在名词短语的开头部分使用复数形式。

例如:

  • 如果我有一个连接多个 [streaming] 播放器的接口,那么命名它是好的英文PlayersInterface,而不是PlayerInterface一个播放器的接口?

  • 如果有处理事件的服务,可以命名EventsService吗?或者EventService听起来明显更好?

谢谢您的帮助!

编辑:

  1. 显然,在 .NET 中,接口名称将以 .NET 开头I。因此,让我们稍微改变一下示例并调用它PlayersGateway

  2. 我真的没有另一个名为PlayerInterface(或PlayerGateway)的类。如果我只需要一个玩家的界面,这只是我使用的替代名称的一个示例。我认为在同一个项目中同时使用两者PlayerGateway很难PlayersGateway维护,更不用说对未来的团队成员说坏话了。所以请假设没有PlayerGateway,只是PlayersGateway

4

4 回答 4

8

我的理解是,您通常应该使用单词的单数措辞。例如,如果您有一个 Car 类,并且您有一个包含多个 Car 类实例的类,您可以将其称为 CarCollection 而不是 Cars

于 2011-02-17T14:56:54.403 回答
6

在英语中,当你把一个名词放在另一个名词旁边来修饰它时,你通常使用单数:

 Coat Room
 Guard Tower

即使房间里可能有几件外套或塔楼里有警卫。恕我直言,变量命名应遵循语言的一般规则。

于 2011-02-17T15:03:36.337 回答
1

我倾向于使用单数。EventHandler 或 EventService 的含义是它将处理一个又一个事件。对于视频播放器,如果您说您连接到多个播放器并几乎同时控制它们,我可能会被说服。

对于单数情况,您会有第二种类型/变量吗?

PlayersInterface AllPlayers = new PlayersInterface();
PlayerInterface MyPlayer0 = AllPlayers.getPlayer(0);
PlayerInterface MyPlayer2 = AllPlayers.getPlayer(1);

即使这样,我认为这两种类型的名称也太相似了。

但是,这是个人喜好。

于 2011-02-17T14:59:43.640 回答
1

单数形式通常对数据库中的类名和表名更具语义意义,因为每个实例(或数据库中的行)都是一个奇点。

您也可以对数组应用相同的推理。您可以选择将 parcel[4] 视为包裹 #4,而不是一堆包裹中的第 4 号。

恕我直言,EventService 和 PlayerInterface 是更好听的英文名字。

于 2011-02-17T15:11:30.117 回答