I disagree with this. My standard is that the head of the function contains a comment which explains what the function does, so that, in the context of the package as a whole, it is possible for someone to understand the purpose of calling the function. It does not explain how the function works. Auxiliaries do not require much of this because they are called only internally, from functions whose purpose should be documented. It is important not to fall into the trap of commenting uselessly functions that have no great complexity and therefore don't require this, and also of restating in the comments what the code in the block does.
People can see that by reading the code.
The purpose of the comment is to indicate, before they start to read the code block in detail, how this block operates and what it does in terms of carrying out the functionality described in the head comment. However, some orders are a lot better than others for readability. The trick is to minimise the number of outstanding structures within a function that the reader has to recall. For example, many conditional tests involve one or two boundary cases that can be solved trivially. Test for these first and write the code that ticks them off, so that the complex general condition can come afterwards.