- keep data serializable
- cluster transformations accordingly (Keep things that belong to each other as close as possible to each other, in a literal meaning, same file/module/etc. A new coworker should have the feeling of entering a public library - she'll know where to look for.)
- it will probably never be the case that you have to invent a new data structure or algorithm
Developers understand such terms like 'function' in very different ways (see top comment in this thread). Some have a more abstract approach and understand it as 'pure', where others have a more instruction-bundeling approach and understand it as 'procedure'. Either is valid, but are completely orthogonal to each other when it comes to its usage. I understand Gary Bernhards approach to 'functional core, imperative shell'[1] as a mean to talk about this - instructions demand for composable building blocks, and those building blocks come either from:
- built-in functions (with an already universally understood API)
- or your own (clustered) utils (and demand an easily understandable API).
[0]: https://mitpress.mit.edu/sites/default/files/sicp/index.html
[1]: https://www.destroyallsoftware.com/screencasts/catalog/funct...