When enabling SONAR on an in-house Java project, there are a large number of violations being reported due to the rule DesignForExtensionCheck
. Whilst I agree with the theory that all classes/methods should be marked up as being either Abstract, Final, etc. But is it strictly necessary for an in-house application where the developers have full contorl over the code base and unit tests etc?
An example is a Value Object who's every getter/setter is required to be final to pass this check. When you have 500+ such issues being reported its a big ask to retrofit the code.
Some people have stated that Java has some flaws, and one of those is that classes/methods are not final by default. Bearing in mind that we don't have final as the default behaviour how much effort do we realy have to go to declar everything as final?
Note: I realise that API's being used by third parties must have tighter controls. This question is levelled at in-house applications.