The biggest problem is that using the interface in a section can lead to circular dependencies and compilation failure. If block A uses block B in the interface section, then block B cannot use block A in its interface section.
So, you often have to make at least some uses in the implementation section.
Otherwise, I personally prefer to use units of use in the interface section, if at all possible. The main reason is scope and hiding. If there is a collision with the definition of names (two blocks define the same name, and the second use hides the first), then the same name was in scope throughout the block.
source share