Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 interface to multiple [streaming] players, it is good English to name it PlayersInterface, as opposed to PlayerInterface which is an interface to one player?

  • If there is a service that handles events, is it ok to name it EventsService? Or does EventService sound significantly better?

Thank you for your help!

EDIT:

  1. Obviously in .NET an interface name would start with an I. So let's change the example a bit and call it PlayersGateway.

  2. I don't really have another class named PlayerInterface (or PlayerGateway). 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 both PlayerGateway and PlayersGateway in the same project is hard to maintain, not to say evil to future team members. So please assume there is no PlayerGateway, just PlayersGateway.

like image 783
Ilya Kogan Avatar asked Feb 17 '11 14:02

Ilya Kogan


3 Answers

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

like image 146
Brent Avatar answered Sep 22 '22 15:09

Brent


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.

like image 26
dandan78 Avatar answered Sep 21 '22 15:09

dandan78


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.

like image 26
Tom Cerul Avatar answered Sep 21 '22 15:09

Tom Cerul