I'm working on a project and struggling with one of the two hard things - naming things. I have names - but I don't really like them (the most descriptive names I could find for the two main roles only differ in a single letter)
When I picked a name for the project itself, I used an analogy to fantasy adventures. The software itself is not related to the fantasy genre, but I'm starting to think about using the same analogy to name some of the major components and processes in my architecture.
But I'm still not sure about this. It was fine for naming the project itself - projects need unique and memorable names - but the names inside the project should be as descriptive as possible, to aid readers who need to understand what does what. Not that I suggest arbitrary naming - I have a clear and concise analogy and I'm not going to just pick a random fantasy term for every software term that needs to be named - but I still fear it may look unprofessional to have classes named Adventurer or Wizard or GuildHall...
Should I go for it?






My opinion would be nay. I think keeping track of analogies and coming up with new ones will drain mental energy that could be used to improve or understand the code.
If your domain includes guilds or adventurers or wizards then I would include them, otherwise stick to descriptive names and don't overthink them.