The answer is it usually causes confusions and deteriorate the code readability.
The ambitious programmers sometimes are unawareness of being over-engineering their code. This post proposes a simple way to check if the code is overengineered, and the steps to avoid it.