slogan3

Ontwikkel een Praktische Checklist voor Clean Code Tijdens Code Reviews

description

Met deze prompt kan de gebruiker een praktische checklist maken die gericht is op clean code-principes en toepasbaar is tijdens code reviews. Dit leidt tot een beter gestructureerde en makkelijker onderhoudbare codebasis, vermindert technische schuld, en bevordert consistente coderingsnormen binnen teams. Het is effectiever dan algemene richtlijnen omdat het op maat is gemaakt voor de projectcontext en programmeertaal van de gebruiker.

prompt

Help me een checklist te ontwikkelen met concrete criteria en best practices voor clean code die ik kan gebruiken tijdens code reviews om de kwaliteit, leesbaarheid en onderhoudbaarheid van m ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een uitgebreide checklist met concrete criteria en best practices voor clean code in JavaScript webapplicaties, gericht op leesbaarheid en modulariteit, die je kunt gebruiken tijdens code reviews: **Checklist voor Clean Code in JavaScript Webapplicaties** **1. Leesbaarheid** - **Naming Conventies** - Variabelen, functies en componenten hebben duidelijke, beschrijvende namen. - Gebruik camelCase voor variabelen en functies (bv. `fetchData`, `userName`). - Gebruik PascalCase voor componenten en classes (bv. `UserProfile`). - Vermijd afkortingen tenzij ze algemeen bekend zijn. - **Functies en Methodes** - Eén functie doet één ding (Single Responsibility Principle). - Functies hebben een duidelijke naam die hun doel beschrijft. - Functies zijn niet te lang (bijvoorbeeld niet langer dan 20 regels). - **Commentaar en Documentatie** - Gebruik commentaar spaarzaam en alleen voor complexe logica. - Documenteer de intentie van functies en belangrijke codeblokken. - Gebruik JSDoc-stijl voor functies (parameters, returnwaarden). - **Indentatie en Formatting** - Consistente indentatie (bijvoorbeeld 2 of 4 spaties). - Gebruik lege regels om code logisch te scheiden. - Vermijd lange regels (max. 80-120 tekens per regel). **2. Modulariteit** - **Structuur en Organisatie** - Verdeel de code in kleine, herbruikbare modules (ES6 modules of CommonJS). - Groepeer gerelateerde functies en data samen. - Houd het aantal afhankelijkheden beperkt en duidelijk. - **Imports en Exports** - Gebruik expliciete imports en exports. - Minimaliseer het gebruik van globale variabelen. - Vermijd circular dependencies. - **Component Structuur (voor frameworks zoals React)** - Maak kleine, herbruikbare componenten. - Scheid presentatielogica van business logica. - Gebruik props en state op een consistente en duidelijke manier. - **Code Dupliceer Niet** - Vermijd duplicatie door herbruikbare functies en componenten te maken. - Maak gebruik van utility modules voor veelgebruikte code. **3. Best Practices** - **Error Handling** - Gebruik try-catch blocks waar nodig. - Geef duidelijke, bruikbare foutmeldingen. - Valideer input en data. - **Asynchrone Code** - Gebruik async/await in plaats van callback hell. - Behandel errors in async functies. - Wijs duidelijke verantwoordelijkheid toe voor elke async operatie. - **Performance en Efficiëntie** - Vermijd onnodige herberekeningen en herhaald ophalen van data. - Gebruik memoization of caching waar passend. - **Testing** - Schrijf tests voor kritieke functies. - Zorg dat code makkelijk testbaar is (bijvoorbeeld door losse functies en dependency injection). **4. Overige Tips** - **Code Review Discipline** - Controleer op consistent gebruik van naming en formatting. - Zorg dat code geen onnodige complexiteit bevat. - Check dat functies en modules duidelijk hun doel hebben. - **Gebruik Linters en Formatter** - Implementeer tools zoals ESLint en Prettier om stijl en kwaliteit te waarborgen. - **Documenteer API’s en Interfaces** - Gebruik duidelijke documentatie voor API endpoints en data structuren. --- **Kort samengevat:** - **Leesbaarheid:** duidelijke namen, korte functies, juiste commentaar, consistente formatting. - **Modulariteit:** gestructureerde modules, kleine herbruikbare componenten, minimale afhankelijkheden. - **Best Practices:** goede error handling, async/await, testing, code review discipline. Deze checklist helpt je om tijdens code reviews gestructureerd te beoordelen en te waarborgen dat de code kwalitatief hoogstaand, leesbaar en onderhoudbaar is.
provider: deepseek
model: deepseek-chat
Absoluut. Hier is een uitgebreide checklist voor clean code in JavaScript-webapplicaties, specifiek gericht op leesbaarheid en modulariteit. Je kunt deze direct gebruiken tijdens je code reviews. --- ### **Checklist: Clean Code voor JavaScript Webapplicaties** **Doel:** Waarborgen van leesbaarheid, onderhoudbaarheid en modulariteit. #### **A. Algemene Principes & Naamgeving (De basis van leesbaarheid)** - [ ] **Beschrijvende namen:** Zijn variabele-, functie- en klassennamen duidelijk en intention-revealing? (Bijv. `getUserOrderHistory` in plaats van `getData`). - [ ] **Consistente naamgeving:** Wordt dezelfde naamgevingsconventie gebruikt (camelCase voor variabelen/functies, PascalCase voor klassen/componenten)? - [ ] **Vermijd afkortingen:** Zijn namen voluit geschreven en niet cryptisch afgekort? (Bijv. `productIndex` in plaats van `pIdx`, tenzij het een veelgebruikte afkorting is zoals `id` of `URL`). - [ ] **Searchable names:** Zijn magische numbers/strings vervangen door named constants? (Bijv. `const MAX_RETRY_ATTEMPTS = 5;` in plaats van `if (attempts < 5)`). #### **B. Functies (Het hart van modulariteit)** - [ ] **Kleine omvang:** Doet elke functie precies één ding (Single Responsibility Principle)? - [ ] **Korte lengte:** Is de functie kort en overzichtelijk (maximaal 20-30 regels is een goede richtlijn)? - [ ] **Duidelijke parameters:** Heeft de functie maximaal 2 of 3 parameters? Bij meer parameters wordt een options object gebruikt. - *Goed:* `createUser({ name, email, password })` - *Minder goed:* `createUser(name, email, password, isAdmin, ...)` - [ ] **Geen side effects:** Heeft de functie geen verrassende neveneffecten? (Bijv. een `calculateTotal` functie die ook de DOM aanpast). Pure functies zijn de voorkeur. - [ ] **Duidelijke return:** Heeft de functie een duidelijke, consistente return value (of geen, bij void functies)? #### **C. Leesbaarheid & Structuur (De flow begrijpen)** - [ ] **DRY (Don't Repeat Yourself):** Is identieke of vergelijkbare code gedupliceerd? Kan dit worden geëxtraheerd naar een shared functie of utility module? - [ ] **Vermijd diepe nesting:** Zijn conditionals (`if/else`, `try/catch`) en loops vlak? (Maximaal 2-3 niveaus diep). Guard clauses en vroege returns worden gebruikt. - *Goed:* `if (!user) return null; // Guard clause` ...rest van de functie - [ ] **Codegroepering:** Zijn gerelateerde regels code bij elkaar gegroepeerd met witregels ertussen? - [ ] **Consistente stijl:** Wordt een consistente code-stijl aangehouden (bijv. gebruik van accolades, puntkomma's)? (Gebruik een tool zoals **Prettier** om dit automatisch af te dwingen). #### **D. Modulariteit & Bestandsstructuur (Schalen en hergebruiken)** - [ ] **Cohesie:** Bevat elk bestand (module, component, service) code die een enkele, logische verantwoordelijkheid heeft? - [ ] **Loose coupling:** Zijn modules zwak aan elkaar gekoppeld? Vertrouwen ze op abstracties (interfaces/functiecontracten) in plaats van concrete implementaties? - [ ] **Expliciete imports:** Worden dependencies duidelijk geïmporteerd boven aan het bestand? (Gebruik `import`/`export`, vermijd globale variabelen). - [ ] **Dependency injection:** Waar mogelijk, worden dependencies (zoals API clients, logger) van buitenaf aangeleverd in plaats van hardcoded geïmporteerd? Dit verbetert testbaarheid. - [ ] **Public API:** Heeft elke module een duidelijk en minimaal "public API"? Zijn interne hulpfuncties niet geëxporteerd (`export`) als ze niet nodig zijn buiten de module? #### **E. JavaScript-Specifieke Best Practices** - [ ] **Const & Let:** Wordt `const` standaard gebruikt en alleen `let` wanneer hertoewijzing nodig is? Wordt `var` vermeden? - [ ] **Moderne syntax:** Worden moderne, expressieve syntaxen gebruikt waar mogelijk? (Bijv. arrow functions, template literals `` `Hallo ${naam}` ``, destructuring `const { name, email } = user;`, optional chaining `user?.profile?.name`). - [ ] **Immutability:** Worden bestaande objecten/arrays niet gemuteerd waar mogelijk? Worden spread operator `[...array]`, `{...object}` of `Array.map()` gebruikt om nieuwe versies te maken? - [ ] **Asynchrone code:** Worden Promises netjes afgehandeld met `async/await`? Worden errors in async code opgevangen met `try/catch`? #### **F. Componenten (Voor Frontend Frameworks zoals React/Vue)** - [ ] **Presentatie vs. Logica:** Zijn presentatiecomponenten (dumb components) gescheiden van componenten met state en logica (smart components)? - [ ] **Herbruikbare componenten:** Zijn componenten generiek en herbruikbaar gemaakt via props/slots? - [ ] **Beheersbare props:** Heeft een component niet een excessief aantal props? (> 5-7 is een signaal om te herzien). --- ### **Hoe deze checklist te gebruiken tijdens een review:** 1. **Focus per review:** Beoordeel niet alles in één keer. Kies voor een eerste review bijvoorbeeld alleen **A. Algemene Principes** en **B. Functies**. 2. **Wees constructief:** Geef niet alleen aan wat fout is, maar suggereer ook *hoe* het beter kan. Bijv.: "De naam `procData` is niet helemaal duidelijk. Zou `calculateOrderSummary` een betere beschrijving zijn?" 3. **Automatiseer wat mogelijk is:** Veel stijl- en formatregels (punt C) kunnen worden afgedwongen met tools zoals **ESLint** en **Prettier**. Focus je menselijke review op de zaken die *context* en *begrip* vereisen: namen, functie-indeling en modulariteit. 4. **Link naar principes:** Verwijs naar het onderliggende principe (bijv. "Dit is een goed voorbeeld van het DRY-principe, mooi!" of "Laten we hier een guard clause toepassen om de nesting te verminderen."). Veel succes met het verbeteren van je codekwaliteit