what the function does should be apparent from the function, variable and struct names. low level functionality should be separated out into functions so that when someone is reading a high level function, they have a choice of diving into details (i got that from clean code. there can be exceptions to this but generally i like this approach).