Send/Receive Naming Conventions
Using $0+ & Spaces & Hierarchies
It is often useful to create a hierarchy of names when patching. The most common example of this is the use of $0 when creating localized send/receives: one writes [send $0-frequency]?, with "$0" as the "parent" and "frequency" as the "child". We separate hierarchical levels with a "-". For example, a "cutoff" parameter of a filter in the local namespace might be written [receive $0-filter-cutoff]?. This also applies if one is using a different argument than $0, such as passing in "foobar" for $1: one would write [receive $1-baz]? to get the full name of "foobar-baz".
Sometimes a parameter is made up of more than one word. For clarity, use "_" to separate words, like [receive $0-resonance_peak]?.
Global Variables
Due to the confusing bugs that can result from widespread usage of global variables, they are written in all caps, like [send SSSAD_ADMIN]?. Use "_" as above to separate words.
Argument passing
If passing the arguments of a parent abstraction to a child, place them such that they reside in the same $# slots as they do in the parent (when possible). E.g., if the parent was called like [parent a b c]?, and [child]? also needs "a b c" plus "x y z", design and call [child]? so it can be called as [child a b c x y z]?.
Channel naming
For the special case of [send~/receive~]? or [throw~/catch~]? pairs with multiple parallel channels, name your channels with numbers rather than "left" or "right". E.g., [throw~ $0-wavetable_osc-ch1]? and [throw~ $0-wavetable_osc-ch2]?. This makes it easier to later expand your patch for higher-than-2-channel audio.