Kind of a question about the English language: Using plural in the first part of an identifier name
As a non-native English speaker, I often wonder about using the plural form in the initial part(s) of noun phrases when naming classes or objects.
For example:
If I have an inter开发者_运维知识库face to multiple [streaming] players, it is good English to name it
PlayersInterface
, as opposed toPlayerInterface
which is an interface to one player?If there is a service that handles events, is it ok to name it
EventsService
? Or doesEventService
sound significantly better?
Thank you for your help!
EDIT:
Obviously in .NET an interface name would start with an
I
. So let's change the example a bit and call itPlayersGateway
.I don't really have another class named
PlayerInterface
(orPlayerGateway
). It was just an example of an alternative name I would use if I only needed an interface to one player. I think that using bothPlayerGateway
andPlayersGateway
in the same project is hard to maintain, not to say evil to future team members. So please assume there is noPlayerGateway
, justPlayersGateway
.
It is my understanding that you should generally use the singular phrasing of a word. For instance if you had a class Car, and you had a class that contained many instances of class Car you would call it CarCollection instead of Cars
In English, when you stick a noun next to another noun to modify it, you usually use the singular:
Coat Room
Guard Tower
even though there may be several coats in the room or guards in the tower. IMHO, variable naming should follow the general rules of the language.
I'd tend to use the singular. EventHandler or EventService would have the connotation that it would handle one event after another. For the video players, I might be convinced if you said that you were connecting to multiple players and controlling them all at pretty much the same time.
Would you have a second type/variable for the singular case?
PlayersInterface AllPlayers = new PlayersInterface();
PlayerInterface MyPlayer0 = AllPlayers.getPlayer(0);
PlayerInterface MyPlayer2 = AllPlayers.getPlayer(1);
Even then, I think the two type names are too similiar.
But, it's personal preference.
Singular form often makes more semantical sense for class names and table names in databases, because each instance (or row in a database) is a singularity.
You can apply the same reasoning on arrays as well. You can chose to think of parcel[4] as parcel #4 and not number 4 of a bunch of parcels.
IMHO, EventService and PlayerInterface are better names that sound better to an english ear.
精彩评论