Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.
Object/garbage oriented programming is not considered a professional technique. Ironically the more obsessed a programmer is with OOP, less he knows about it.
It is primarily about
encapsulation (a genius idea) rather than
inheritance, the most naive modelling technique ever. Such programmers have the tendency you mentioned here and always fall into useless abstractions, it is done in the name of re-usability and they do it like a teenager who is excessively addicted to masterbation.
Thanks god, bitcoin code is not poisoned by such garbages and navigating through it you are not lost in abstract ridiculous classes. Very limited and smart use of inheritance and more emphasis on encapsulation. I think it is due to Satoshi's neat approach to the first implementation, his legacy.
Guess it's also worth to mention loose coupling here, as an integral principle of encapsulation. Although, an initial bitcoin's source code release seems to look way tightly coupled from this standpoint.
As Satoshi is believed to be Mr. Szabo IRL, nothing here *in terms of coding style* seem to be contradicting.