Jestli je to users, to vidím na první pohled - kolekce objektů User. Ale ti uživatelé jsou většinou něčím typičtí, a to je právě potřeba popsat názvem proměnné. To z žádného typu nevyčtu. Pouhé users je ve většině případů k ničemu.
Delší kód je potřeba rozpadnout do metod a většina metod má tedy jen právě jedno volání. Nerozpadám do metod primárně kvůli reuse of code, ale hlavně kvůli čitelnosti a přehlednosti. Takže v té metodě chci vědět, co přesně je to za uživatele. A pokud ji budu chtít použít později i jinde (IDE mi při vytažení metody samozřejmě rovnou nabídne další místa nahrazení, ale mluvím o pozdější době, až přijde nový požadavek), přejmenuji proměnnou na aktuálně správný název. V dobrém IDE je to jedna klávesová zkratka. A o tom tu celou dobu mluvím, je potřeba mít jasně popisné názvy. Obecné názvy jsou většinou na houby.
Již několik let refaktoruji kód řady vývojářů a velice přesně vím, o čem mluvím. Min. 80% času je refaktoring, zbytek nové featury.
Dám příklad.
Někdo žádá o účast na nějaké akci. Někdo to schvaluje.
Takže user, approver
OK, jeden vývojář použije approver ve významu schvalovatele. Jenže kdo je schvalovatel - ten kdo má schválit nebo ten kdo schválil? Přijde další a použije stejné slovo (samozřejmě field v DTO) ve významu toho, kdo zažádal jménem účastníka a rovnou mu to schválil. A po pár kolech je v tom akorát pěkný bordel, který je peklo rozmotávat. Přitom stačí přesné názvosloví:
participant, requestedBy, toBeDecidedBy, decidedBy (approved ne, protože to významově vylučuje možnost "zamítnul"). Všichni jsou to samozřejmě users.
A o tom mluvím. Na 5 znaků se nevejdeš ani náhodou.