Before HDL was invented control and data flow were separate in computers. The most concise way to describe a design is with Boolean Algebra because controls are implemented in and/or/not blocks and data flow is add/sub/mpy/dvd/and/or/xor. So the separation is desirable.
The part that is not not so obvious is the advantage of focusing on the function block and connecting the function to the register.
It is another way to do pipe-lining so the gating selects the operands rather than moving the data into the next register.
There must be enough registers to hold all the operands and each function combines 2 operands into 1 result which is then used in the next function so the data is still moved.
As usual this focuses on an operation that can be pipe-lined, not the decision logic where the most cycles are consumed.