Kodekvalitetsmønstre


Få mere at vide om veludformet ressourceoptimering → Kodeorganisation

Denne konsoliderede mønsterside dækker kodekvalitets- og vedligeholdelsespraksisser for Ressourceoptimering. Den inkluderer vejledning om standardbeslutninger i forhold til tilpassede kodebeslutninger, teknisk gældsstyring, designstandarder, dokumentationspraksisser og styring. Disse mønstre hjælper med at bevare udviklingshastighed, reducere fejlfrekvenser og aktivere langsigtet løsningsstabilitet.

Mønstre

Hvor skal du seHvordan godt ser ud
Ydeevne på skala✅ Test validerer, at deklarative løsninger opfylder krav til ydeevne ved projekterede datamængder. Indlæsningstest i Full Copy Sandbox med realistiske data bekræfter skalerbarhed før produktionsimplementering.
Vedligeholdelsesanalyser✅ TCO-analyse sammenligner den langsigtede vedligeholdelsesbelastning af deklarative kontra tilpassede tilgange, herunder opgraderingsindsats, testkrav og færdighedskrav for fremtidige teams.
Architektur for blandet tilgang✅ Løsninger kombinerer deklarative og programmeringsmæssige tilgange, hvor det er relevant. Forløb orkestrerer logik på højt niveau, mens Apex håndterer komplekse beregninger. Formelfelter beregner enkle afledninger, mens Apex behandler massehandlinger.
AppExchange✅ Før du opbygger tilpasset kode, skal du evaluere eksisterende AppExchange, der leverer lignende funktionalitet. Dokumentevalueringsresultater, herunder pakker, der er gennemset, funktionsmangler og TCO-sammenligning.

Mønstre

Hvor skal du seHvordan godt ser ud
Tilbagevendelsessynlighed✅ Tekniske gældselementer, der spores i tilbagerulning med tydelige betegnelser, kontekst, der forklarer, hvorfor kode har brug for forbedring, forretningseffekt ved at lade den være utilpasset og estimeret rettelsesindsats. Usynlig gæld kan ikke prioriteres eller administreres.
Trinvis forbedring✅ Boy Scout-regel anvendt under funktionsudvikling: efterlade kode bedre end fundet. Teams afhjælper gæld trinvist under relateret funktionsarbejde i stedet for at kræve store dedikerede omstruktureringsprojekter. Kodeanmeldelser bekræfter trinvise forbedringer.
Forebyggelse over afhjælpning✅ Kvalitetsportaler i CI/CD håndhæver standarder, før kode når produktion. Kodescanner, ApexGuru og kompleksitetsmetrikker integreret i validering af pull-anmodninger. Blokering af problemer forhindrer fletning, indtil de er løst.

Anti-mønstre

Hvor skal du seHvad ser dårligt ud
Tilbagerulningsstyring⚡️ Teknisk gæld bekræftet verbalt, men aldrig sporet i tilbagerulning. Ingen indsigt i gældsakkumulering. Gældsremission udskydes altid til fordel for funktionsarbejde. Hastigheden falder gradvist, og teams kan ikke forklare hvorfor.
Quality gate-tilsidesættelse⚡️ CI/CD-kvalitetsportaler tilsidesættes ofte under tidsplanstryk med hensigt om at rette dem senere. “Senere” sker aldrig. Kode-scannerfejl markeret som kendte problemer og ignoreret. Kompleksitetstærskler hævet for at tage højde for dårlige implementeringer.
Ingen løsningskapacitet⚡️ 100 % af sprintkapacitet allokeret til funktionsarbejde med nul kapacitet til teknisk gældsændring. Gæld akkumuleres uendeligt. Større omstruktureringsprojekter kræves for hver 18-24 måneder, hvilket forbruger hele kvartaler.
Konfigurationsgæld⚡️ Tilpassede metadatatyper og tilpassede indstillinger akkumuleres uden oprydning. Ubrugte konfigurationer bevares uendeligt. Produktion har 50 metadataregistreringer, kun 12 bruges faktisk. Ingen dokumentation, der forklarer formålet med konfigurationsværdier.

Mønstre

Hvor skal du seHvordan godt ser ud
Udløserarkitektur✅ Udløserhåndteringsmønster anvendt ensartet: tynde udløsere uddelegeres til handlerklasser, handlerklasser organiserer logik efter udløserkontekst (før indsættelse, efter opdatering), tydelige metodenavne afslører formål. Ingen forretningslogik i udløserfilerne selv.
Service Layer-implementering✅ Forretningslogik, der er indbygget i serviceklasser, adskilt fra controllere, udløsere og batchindgangspunkter. Serviceklasser, der kan genbruges på tværs af flere indgangspunkter uden duplikering. Ryd navngivningskonvention (AccountService, OrderProcessor).
Vælgermønster✅ SOQL-forespørgsler centraliseret i vælgerklasser pr. objekt (AccountSelector, OpportunitySelector). Vælgermetoder returnerer ensartede feltsæt. LDV-optimeringsændringer anvendes en gang, hvilket påvirker alle forespørgsler.
Lagermønster✅ Dataadgang, der er abstrakt bag grænseflader, der aktiverer test med falske datakilder. Lagringsimplementeringer indkapsler forespørgselsopbygning, cachelagring og optimeringsstrategier. Forretningslogik afhænger af lagergrænseflader, ikke konkrete implementeringer.
Komponentdesignstandarder✅ Lightning Web-komponenter følger princippet om enkelt ansvar, viser egenskaber til konfiguration, udsender begivenheder til overordnet kommunikation, designet til sammensætning og genbrug. Komponentbibliotek dokumenteret med anvendelseseksempler.
Kodeorganisation✅ Logiske pakkestrukturgrupper, relaterede klasser. Ryd adskillelse mellem domænelogik, dataadgang, API-slutpunkter og integrationsadaptere. Pakkeafhængigheder forløber i en retning.

Anti-mønstre

Hvor skal du seHvad ser dårligt ud
Udløsere⚡️Al forretningslogik integreret direkte i udløserfiler med dybt indlejrede betingelser, ingen adskillelse af bekymringer, ingen handlerklasser. Over 300 linjeudløserfiler, der blander validering, forretningslogik og integrationsopkald. Kan ikke testes effektivt.
Forespørg i løkke⚡️ SOQL-forespørgsler, der afvikles i gentagelsesløkker. Fungerer med små datamængder, men overtræder 100 SOQL-forespørgselsgrænsen ved behandling af massehandlinger. Opdages kun, når udløsere aktiveres på massedataindlæsninger i produktion.
DML i løkkeDML-erklæringer (indsæt, opdater, slet), der afvikles i gentagelsesløkker. Overtræder grænsen på 150 DML-erklæringer med massehandlinger. Hver registrering behandles i separat databasetransaktion i stedet for effektiv massebehandling.

Mønstre

Hvor skal du seHvordan godt ser ud
Architekturbeslutningsregistreringer✅ Vigtige arkitektoniske beslutninger, der er dokumenteret i ADR’er, der er lagret i versionskontrol. ADR’er registrerer kontekst (forretningsdrivere, tekniske begrænsninger), beslutning (hvad der blev valgt), overvejede alternativer (hvorfor de blev afvist) og konsekvenser (afhandlinger, betingelser for at se igen).