Too much legacy code. All you can do is write the best code you can.
The reason I don't like forms is that the parameters are positional rather than named. (Which is also something i don't like about Java, so it's isn't in fact an OO/non-OO issue). I also don't like that they're too easily left untyped. Type safety - why should we use TYPES defining parameters for ABAP forms?