Naming has a social convention

Few months ago, I have joined GDCR, ending the day with a software teaming in F#, with one letter identifiers as a constraint.

The goal was to work on the Mars Rover Kata.

The resulting code was cryptic and the main entry point was:

let p i c o =
  ...
  • p is the predicate making the position evolve
  • i is the initial/current position
  • c is the command (move, rotate left, rotate right)
  • o is the list of obstacle

It was not great but all the participants agreed on it, and we all knew what each identifier was representing.

Even if the example is extreme, when we try to implement the Ubiquitous Language we need some flexibility when choosing the names, so everyone has a common understanding.

The main point is, naming decision are always taken inside a group, not on your own.