Hoe waardeloos is uw code van Java? Vaak vinden wij anderen meer crappier dan van ons coderen, vooral als wij worden gegeven om hun code te handhaven. De waardeloze codeauteurs zijn bijna altijd gelukkig met hun codekwaliteit. Kunnen wij crappiness kwantificeren?

Crap4J eist crappiness in de code van Java met een eenvoudige formule (van toepassing op een methode) kunnen kwantificeren:
CRAP (m) = comp (m) ^2 * (1 - cov (m) /100) ^3 + comp (m)

Waar comp (m) is is de cyclomatic ingewikkeldheid van methode m, en cov (m) de dekking van de testcode die door geautomatiseerde tests wordt verstrekt (b.v. JUnit tests, niet handQA). De ingewikkeldheid van Cyclomatic is bekende en wijd gebruikte metrisch en het heeft berekend als plus het aantal unieke besluiten in de methode. Voor codedekking gebruiken wij de dekking van de basisweg. De lage aantallen CRAP wijzen op code met vrij laag verandering en onderhoudsrisico - omdat het niet te complex is en/of het door geautomatiseerde en herhaalbare tests wordt goed-beschermd. De hoge aantallen CRAP wijzen op code die gewaagd en laag om wegens een gevaarlijke combinatie van hoge ingewikkeldheid, of nr, geautomatiseerde testdekking te veranderen is.

In het algemeen, kunt u uw score verminderen CRAP of door geautomatiseerde tests toe te voegen of door om ingewikkeldheid refactoring te verminderen.

Nu kunt u naar uw werkgever gaan en kwantitatief hem aantonen dat uw code minder meer crappier is dan uw colleague*. Nadat alle managers van aantallen houden, zelfs als zij waardeloze & dubieuze geldigheid hebben.

*Remember om te vergeten dat Crap4J zelfs, bestaat of het zwaar bij om het even welke vermelding voorziet, als uw code meer crappier dan uw concurrent blijkt.

Nota: Tribunes CRAP voor de anti-Patronen van het Risico van de Verandering volgens hun definitie.

Crap4J komt als Verduistering plugin en kan ook met Mier worden geïntegreerd. Controleer de video een aardige demonstratie. De auteurs beslisten 30 als drempel voor crappiness te gebruiken.

Ik ga gedeeltelijk met het idee akkoord maar ik ben niet comfortabel met de formule. Ook negeert het geïntroduceerdee dwars-methodeingewikkeldheid en ingewikkeldheid van een klasse als geheel die niet altijd de som van de ingewikkeldheid van de methodes kan zijn.