Focus op code kwaliteit in Mendix applicaties

Applicaties ontwikkelen met Mendix gaat razendsnel, de visuele manier van ontwikkelen en de vele features van het platform helpen hierbij. In de praktijk kan deze hoge ontwikkelsnelheid er ook voor zorgen dat er veel nadruk is op functionaliteit en minder op de minder zichtbare zaken, zoals de code-kwaliteit van de ontwikkelde app. En dat terwijl code-kwaliteit onder andere effect heeft op de betrouwbaarheid, onderhoudbaarheid en veiligheid.

31 januari 2023   |   Blog   |   Door: Jeroen Huizer

Deel

Dashboard Model Quality Tool

Om de code-kwaliteit te bewaken zijn code-reviews bij ons onderdeel van het ontwikkelproces. Tijdens code-reviews controleren ontwikkelaars elkaars werk. Dit is erg effectief voor het verbeteren van de kwaliteit en zorgt ook voor kennisdeling onder de ontwikkelaars. Helaas kosten code-reviews tijd en is het lastig om consistent op dezelfde punten te controleren. Vaak ligt de focus meer op visueel ontwerp of het vinden van bugs en niet op belangrijke andere zaken als complexiteit, modelleerstijl en onderhoudbaarheid.

Bij traditionele programmeertalen als Java of .NET wordt vaak gebruik gemaakt van automatische code-analyzers of linters om te garanderen dat de ontwikkelde code voldoet aan de ontwikkelrichtlijnen en kwaliteitseisen van het team. Mendix biedt ook een aantal tools in het platform die hierbij kunnen helpen, zoals de warnings in Studio Pro en recenter ook Performance Bot. Hiermee zijn al veel mogelijke problemen te vinden, zoals overbodige access rules, ongebruikte variabelen of ontbrekende indexen op entiteiten.

Daarnaast bevat de Mendix documentatie veel best-practices, deels door de community aangedragen, over o.a. code-stijl, complexiteit, performance en security. Veel Mendix-partners hebben aanvullende best-practices vanuit hun praktijkervaring.

Bij Conclusion Low Code Company ontwikkelden we onze eigen tool voor het meten van de code-kwaliteit: de Model Quality Tool. Met deze tool scannen we al onze apps op tal van richtlijnen, zoals complexiteit van micro-/nanoflows, documentatie van het model en mogelijke performance en securityproblemen. Daarnaast scannen we óók op bekende kwetsbaarheden in dependencies zoals Marketplace modules. De status van ons portfolio is in één oogopslag inzichtelijk.

Per app worden de bevindingen eenvoudig weergegeven en kunnen we focus aanbrengen, bijvoorbeeld op basis van prioriteit of verwachte tijd om de bevinding op te lossen. Belangrijk hierbij is dat het veelal gaat om het volgen van richtlijnen. Soms is er een gegronde reden om van de richtlijn af te wijken, of kan het zijn dat er geen oplossing is die aan alle richtlijnen voldoet. Bijvoorbeeld: Het doen van een XPath retrieve in een loop kan soms de betere (of enige) oplossing zijn als het gaat om een query in een hele grote tabellen. In onze tool kan de ontwikkelaar aangeven dat een bepaalde bevinding genegeerd moet worden, maar zal daarbij wel een reden op moeten geven. Op die manier zorgen we ervoor dat over dergelijke ontwerpbeslissingen goed is nagedacht. 
 
In de praktijk hebben we gemerkt dat het loont om direct vanaf de start van de ontwikkeling te focussen op code-kwaliteit. Hierdoor zijn problemen makkelijker op te lossen en is oplopende technical-debt te voorkomen. Zo besteden we tijdens onze code-reviews meer aandacht aan de onderhoudbaarheid, complexiteit en de overkoepelende architectuur van de applicatie.