Kodkvalitetsmönster


Få reda på mer om välstrukturerad resurs- och kostnadsoptimering → Kodorganisation

Denna konsoliderade mönstersida täcker kodkvalitet och underhållsrutiner för resursoptimering. Den innehåller råd om standardbeslut vs egna kodbeslut, teknisk skuldhantering, designstandarder, dokumentationsrutiner och styrning. Dessa mönster hjälper till att upprätthålla utvecklingshastigheten, minska felfrekvenser och möjliggöra långsiktig hållbarhet för lösningar.

Mönster

Var man ska letaHur bra ser ut
Prestanda i skala✅ Tester validerar att deklarativa lösningar uppfyller prestandakraven vid beräknade datavolymer. Belastningstest i Full Copy Sandbox med realistiska data bekräftar skalbarheten innan produktionsdistribuering.
Underhållsanalys✅ TCO-analys jämför långsiktig underhållsbörda av deklarativa vs egna metoder, inklusive uppgradering, testkrav och kompetenskrav för framtida team.
Arkitektur med blandade metoder✅ Lösningar kombinerar deklarativa och programmatiska metoder där så är lämpligt. Flödet orkestrerar logik på hög nivå medan Apex hanterar komplexa beräkningar. Formelfält beräknar enkla deriveringar medan Apex bearbetar massoperationer.
AppExchange utvärdering✅ Innan du bygger egen kod, utvärdera befintliga AppExchange paket som ger liknande funktionalitet. Dokumentutvärderingsresultat, inklusive granskade paket, kapacitetsluckor och jämförelse av totala ägandekostnader.

Mönster

Var man ska letaHur bra ser ut
Eftersläpsynlighet✅ Tekniska skuldobjekt spåras i eftersläpning med tydliga etiketter, sammanhang som förklarar varför kod behöver förbättras, verksamhetspåverkan av att lämna det oåtgärdat, och uppskattad saneringsinsats. Osynlig skuld kan inte prioriteras eller hanteras.
Inkrementell förbättring✅ Pojkscoutregel tillämpad under funktionsutveckling: lämna kod bättre än den hittades. Team åtgärdar skulder stegvis under relaterat funktionsarbete istället för att kräva stora dedikerade refaktoriseringsprojekt. Kodgranskningar verifierar inkrementella förbättringar.
Förebyggande över avhjälpande✅ Kvalitetsgrindar i CI / CD tillämpar standarder innan kod når produktion. Kodskanner, ApexGuru och komplexitetsmått integrerade i validering av hämtningsbegäran. Blockeringsproblem förhindrar koppling tills det är löst.

Antimönster

Var man ska letaHur dåligt ser ut
Eftersläphantering⚠️ Teknisk skuld bekräftad muntligt men spårad aldrig i eftersläpning. Ingen insyn i skuldackumulering. Skuldsanering skjuts alltid upp till förmån för funktionsarbete. Hastighet minskar gradvis, team kan inte förklara varför.
Förbikoppling av kvalitetsgrind⚠️ CI/CD-kvalitetsgrindar förbigås ofta under schematryck med avsikt att åtgärda senare. “Senare” händer aldrig. Kodskannerfel markerade som kända problem och ignorerade. Komplexitetströsklar höjda för att tillgodose dåliga implementeringar.
Ingen saneringskapacitet⚠️ 100 % av sprintkapaciteten allokerad till funktionsarbete med noll kapacitet för teknisk skuldsanering. Skulder ackumuleras på obestämd tid. Större refaktoriseringsprojekt som krävs var 18:e till 24:e månad konsumerar hela kvartal.
Konfigurationsskuld⚠️ Egna metadatatyper och egna inställningar ackumuleras utan rensning. Oanvänd konfiguration kvarstår tills vidare. Produktion har 50 metadataposter, endast 12 används faktiskt. Ingen dokumentation som förklarar syftet med konfigurationsvärden.

Mönster

Var man ska letaHur bra ser ut
Utlösararkitektur✅ Utlösare hanterare mönster tillämpas konsekvent: tunna utlösare delegeras till hanterarklasser, hanterarklasser organiserar logik efter utlösarsammanhang (före infogning, efter uppdatering), tydliga metodnamn avslöjar syftet. Ingen verksamhetslogik i själva utlösarfilerna.
Implementering av servicelager✅ Affärslogik inkapslad i serviceklasser separat från kontroller, utlösare och batchinmatningspunkter. Serviceklasser kan återanvändas över flera ingångspunkter utan dubbletter. Rensa namnkonvention (AccountService, OrderProcessor).
Väljarmönster✅ SOQL-frågor centraliserade i väljarklasser per objekt (AccountSelector, OpportunitySelector). Väljarmetoder returnerar enhetliga fältuppsättningar. LDV-optimering ändras en gång, vilket påverkar alla sökfrågor.
Arkivmönster✅ Dataåtkomst abstrakt bakom gränssnitt som möjliggör tester med falska datakällor. Arkivimplementeringar sammanfattar sökfrågekonstruktion, cachning och optimeringsstrategier. Affärslogik beror på arkivgränssnitt, inte på konkreta implementeringar.
Standarder för komponentdesign✅ Lightning följer principen om enskilt ansvar, exponerar egenskaper för konfiguration, avger händelser för överordnad kommunikation, utformade för komposition och återanvändning. Komponentbibliotek dokumenterat med användningsexempel.
Kodorganisation✅ Logiska paketstrukturgrupper relaterade klasser. Tydlig separation mellan domänlogik, dataåtkomst, API-slutpunkter och integreringsadapters. Paketberoenden flödar i en riktning.

Antimönster

Var man ska letaHur dåligt ser ut
Utlösare⚠️ All verksamhetslogik inbäddad direkt i utlösarfiler med djupt kapslade villkor, ingen separation av problem, inga hanterarklasser. Över 300 radutlösarfiler blandar validering, verksamhetslogik och integreringsanrop. Omöjligt att testa effektivt.
Sökfråga i loop⚠️ SOQL-frågor som utförs inom iterationsloopar. Fungerar med små datavolymer men bryter mot 100 SOQL-frågegränser vid bearbetning av massåtgärder. Upptäcks endast när utlösare aktiveras vid massinläsning av data i produktion.
DML i loop⚠️ DML-uttryck (infoga, uppdatera, ta bort) utförda inom iterationsloopar. Bryter mot 150 DML-uttrycksgränsen med massoperationer. Varje post bearbetar i separata databastransaktioner istället för effektiv massbearbetning.

Mönster

Var man ska letaHur bra ser ut
Poster för arkitekturbeslut✅ Betydande arkitektoniska beslut dokumenterade i ADR som lagras i versionskontroll. Alternativ tvistlösning samlar in sammanhang (affärsdrivkrafter, tekniska begränsningar), beslut (vad som valts), alternativ som övervägts (varför de avvisades) och konsekvenser (avvägningar, villkor för återbesök).