I was going to say you have a static sense of what orientation you are in, e.g. you can tell standing up Vs lying on your front/back/side without relying on other senses and that feels different to the sensation of moving…
But thinking about it I guess the orientation sense is just detecting acceleration due to gravity?
Don’t design for having a nice codebase today, design for having a clean codebase after 3 months of Devs copy pasting one bit of code then tweaking it to do what they need or adding more fields to existing concepts.
This generally means it’s best to have one pattern for a given thing, rather than having several patterns you pick based on context, the later runs into problems:
A second consideration for this is that if there are a group of classes/files/whatever that regularly needs to be copied they should live together. If there are different sections of the code that needs to be edited when creating a new resource, they should be kept in one place and kept small-ish.
Most of this comes from accepting the way people tend to work and from the perspective that software is a living evolving process and only regarding a snapshot of it misses vital information.