Language metaphors refer to the application of constructs developed from human languages (i.e. linguistics) into the programming language landscape. Since so many languages depend on non-verbal punctuation of some sort, we can more specifically, talk about applying written-language metaphors.
Firstly: A part of general CodingStyle suggests putting a human-readable name to every conceptual unit. This begins with variable names, and scales upwards to functions -> classes/structs/objects -> modules/files-> programs. There are probably only a few exceptions, like general index variables and lambda functions, where this rule can be broken, unless you're writing code that will never be used again.
Secondly, use the semantic categories to aid in naming objects (which helps every reader of the code):
- Variables should always be noun-named since they are static and act as the building blocks for your ObjectArchitecture,
- After that use verb-names when applying computation -- the forces acting on these data,
- Adverbs for when your modifying such methods (like Python decorators), and
- Adjectives for properties of your noun-objects.
In addition to using these linguistic concepts, I support the use of punctuation for being clearer than having none:
- "?" for query-object methods (isWritable?(file)),
- "!" for (possibly) mutating methods, writing to/within memory (sort!(myList)),
- "#" for changing an otherwise immutable variable or writing to the file system (myDataBase#(all_current_objects)),
- "^" for delegating to super/parent classes.
- "@" for referring to "self" in a method,