• 18 tot 40 regels (afhankelijk van taal en stijl) uitkomst van onderzoek naar 5.000 software projecten Bron: Function Points as a Universal Software Metric, Capers Jones, 2013
meerdere plaatsen in een programma herhaald wordt. • Kan ontstaan wanneer developers bestaande code niet durven aan te passen. (COPY PASTE) • Onderhoud dient plaats te vinden op elke code clone (Foutgevoelig!)
source codestructuren. (bijvoorbeeld: classes, functions, modules, etc) • Veel inkomende verwijzingen: Een kleine aanpassing kan leiden tot veel aanpassingen in afhankelijke source codestructuren. (Ripple Effect) • Veel uitgaande verwijzingen: Lastig in isolatie te (unit)testen
– Aanzienlijke omvang en complexiteit • Grote classes / methodes (veel regels code) • Complexe methodes (veel beslispunten) – Afhankelijkheid • Verwijzingen naar andere modules/classes Oorzaken van verslechtering van codekwaliteit
code-base is een black box • Verantwoordelijkheden van classes nemen toe over tijd • Functionele druk (geen tijd voor technische verbeteringen) • Developers komen en gaan, kennis over de codebase gaat verloren • Geen unit tests die werking demonstreren en controleren • Onzekerheid over het doen van aanpassingen in complexe code • Sub-optimaal gebruik van geldende principes binnen technologieparadigma (OOP / functioneel)
etc). • Source Code Metrics • Coding Standards • Quality Gates • Static Code Analysis (vindt potentiele defecten) • Stel realistische doelen voor het verbeteren van kwaliteit. • Stel eisen op waar nieuwe code aan moet voldoen (DoD) • Nieuwe code moet voldoen aan de gestelde regels. Zorg voor snelle feedback d.m.v. integratie in delivery pipeline.
tot 15 regels • Limiteer het aantal beslispunten binnen een unit tot 4 • Limiteer het aantal parameters van een unit tot 4 • Limiteer de lengte van modules tot 400 regels Bron: Joost Visser, “Building Maintainable Software”, 2015 Keep it simple (and small)!
• Abstraction / Problem Decomposition • SOLID principles • Polymorphism over control structures • Encapsulation / Information Hiding • Law of Demeter • Design Patterns • Domain-Driven Design Verwacht: voorjaar 2016: Cursus Codekwaliteit
demonstreren de verwachte werking van code • Unit-tests helpen bij snelle verificatie van aanpassingen (op het code level) • Side-effect: Onderhoudbaar design • Klein • Simpel • Onafhankelijk