slogan3

Help me effectieve coderingsnormen vast te stellen voor mijn project met Cursor

description

Het vaststellen van coderingsnormen verbetert de leesbaarheid, onderhoudbaarheid en samenwerking binnen het team, wat leidt tot software van hogere kwaliteit.

prompt

try_prompt

Ik wil een set coderingsnormen creëren voor mijn project in {{programmeer_taal}} die consistentie en kwaliteit bevordert. Geef richtlijnen over best practices op gebieden zo ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn richtlijnen voor het opstellen van coderingsnormen in Python, gericht op consistentie en kwaliteit: **1. Naamgevingsconventies:** - **Variabelen en functies:** gebruik kleine letters met underscores (bijv. `mijn_variabele`, `bereken_totaal`). - **Klassen:** gebruik CamelCase (bijv. `MijnKlasse`). - **Constants:** gebruik hoofdletters met underscores (bijv. `MAX_AANTAL`). - **Modules en packages:** korte, beschrijvende namen in kleine letters (bijv. `gegevens_verwerking`). **2. Code-structuur:** - **Indeling:** gebruik 4 spaties voor inspringing. - **Lijnlengte:** houd regels beperkt tot 79 tekens. - **Imports:** plaats alle imports bovenaan, gescheiden van code, en vermijd wildcard-imports (`from module import *`). - **Functies en methoden:** houd ze kort en doelgericht, met één duidelijke taak. - **Error handling:** gebruik duidelijke except-blokken en specifieke excepties. **3. Documentatie:** - **Docstrings:** schrijf korte, informatieve docstrings voor modules, classes en functies volgens PEP 257. - **Commentaar:** gebruik commentaar om complexe logica uit te leggen, maar vermijd overbodige commentaren. - **Type hints:** voeg type annotaties toe voor functies en methoden voor betere leesbaarheid en foutdetectie. **Implementatie binnen Cursor:** - **Code Review & Linting:** integreer tools zoals `flake8`, `pylint` en `black` in het ontwikkelproces om automatische controle op normen uit te voeren. - **Pre-commit Hooks:** gebruik Git hooks om code te controleren voordat deze wordt gecommit. - **Automatische Documentatie:** zet scripts op die docstrings en documentatie genereren, en controleer op naleving. - **Team Richtlijnen:** documenteer de normen in een `CONTRIBUTING.md`-bestand en organiseer regelmatige sessies om bewustzijn en naleving te bevorderen. Door deze richtlijnen consequent toe te passen en te automatiseren binnen Cursor, zorg je voor een consistente en hoge codekwaliteit binnen je team.
provider: deepseek
model: deepseek-chat
Hier is een uitgebreide set coderingsnormen voor Python-projecten: ## 🐍 Python Coderingsnormen ### **Naamgevingsconventies** **Variabelen & Functies:** ```python # Snake_case voor variabelen en functies gebruikers_naam = "Jan" aantal_pogingen = 3 def bereken_totaal(bedrag, btw_percentage): return bedrag * (1 + btw_percentage/100) ``` **Klassen:** ```python # PascalCase voor klassen class GebruikerManager: class DatabaseConnectie: ``` **Constanten:** ```python # HOOFDLETTERS met underscores MAX_AANTAL_POGINGEN = 5 DATABASE_URL = "postgresql://localhost/mijn_db" ``` ### **Code Structuur** **Imports:** ```python # Gestandaardiseerde import volgorde # 1. Standaard library import os import sys from datetime import datetime # 2. Third-party packages import requests from flask import Flask # 3. Lokale imports from .models import Gebruiker from .utils import validatie_helper ``` **Type Hints:** ```python from typing import List, Optional, Dict def verwerk_gebruikers(gebruikers: List[Gebruiker]) -> Dict[str, int]: """Verwerk een lijst van gebruikers en retourneer statistieken.""" return {"verwerkt": len(gebruikers)} ``` **Foutafhandeling:** ```python try: resultaat = gevaarlijke_operatie() except ValueError as e: logger.error(f"Validatiefout: {e}") raise except ConnectionError: logger.warning("Connectie mislukt, opnieuw proberen") herverbind() ``` ### **Documentatie** **Docstrings (Google Style):** ```python def bereken_prijs(artikel_id: int, korting: float = 0.0) -> float: """Bereken de uiteindelijke prijs voor een artikel. Args: artikel_id: Unieke identifier van het artikel korting: Kortingspercentage (0.0 - 1.0) Returns: De berekende prijs met korting Raises: ValueError: Als artikel_id ongeldig is TypeError: Als korting niet numeriek is """ if not is_geldig_artikel(artikel_id): raise ValueError(f"Ongeldig artikel: {artikel_id}") basis_prijs = haal_prijs_op(artikel_id) return basis_prijs * (1 - korting) ``` **Inline Comments:** ```python # Gebruik comments om 'waarom' uit te leggen, niet 'wat' # Slecht: x = x + 1 # Verhoog x met 1 # Goed: x = x + 1 # Compenseer voor off-by-one error in indexering ``` ### **Code Kwaliteit** **Functie Lengte:** - Maximaal 20-30 regels per functie - Eén verantwoordelijkheid per functie **Complexiteit:** - Vermijd geneste if-statements dieper dan 2 niveaus - Gebruik guard clauses voor vroege returns ## 🔧 Implementatie in Cursor ### **1. Project Configuratie Bestanden** **.cursorrules:** ```yaml code_style: formatter: black line_length: 88 use_type_hints: required docstring_style: google quality: linter: ruff pre_commit_hooks: true test_coverage_min: 80% naming: variables: snake_case classes: PascalCase constants: UPPER_CASE ``` ### **2. Development Dependencies** **requirements-dev.txt:** ```txt black==23.0.0 ruff==0.1.0 mypy==1.5.0 pre-commit==3.3.0 pytest==7.4.0 pytest-cov==4.1.0 ``` ### **3. Pre-commit Configuratie** **.pre-commit-config.yaml:** ```yaml repos: - repo: https://github.com/psf/black rev: 23.0.0 hooks: - id: black language_version: python3.11 - repo: https://github.com/charliermarsh/ruff rev: v0.1.0 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.5.0 hooks: - id: mypy ``` ### **4. Cursor Workspace Settings** **.vscode/settings.json:** ```json { "python.formatting.provider": "black", "python.formatting.blackArgs": ["--line-length=88"], "python.linting.enabled": true, "python.linting.ruffEnabled": true, "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": true }, "[python]": { "editor.defaultFormatter": "ms-python.black-formatter" } } ``` ### **5. Template Bestanden** **template.py:** ```python """ Module: [module_naam] Auteur: [jouw_naam] Datum: [datum] Beschrijving: [korte_beschrijving] """ from typing import List, Optional, Dict class TemplateKlasse: """Template voor nieuwe klassen.""" def __init__(self, parameter: str) -> None: """Initialiseer de klasse. Args: parameter: Beschrijving van de parameter """ self.parameter = parameter def template_method(self, input_data: List[int]) -> Optional[Dict]: """Template voor methodes. Args: input_data: Lijst met invoerwaarden Returns: Dictionary met resultaten of None bij fout """ if not input_data: return None return {"resultaat": sum(input_data)} ``` ## 🚀 Team Implementatie Strategie ### **1. Onboarding Proces** - Nieuwe teamleden krijgen een "Starter Kit" met alle configuraties - Verplichte kennismaking met de normen tijdens onboarding - Pair programming sessies met senior developers ### **2. Code Review Checklist** - [ ] Type hints aanwezig - [ ] Docstrings volgens Google style - [ ] Black formatting toegepast - [ ] Geen Ruff warnings - [ ] Test coverage voldoende - [ ] Logische functie-splitsing ### **3. Automatisering** ```bash # Setup commando voor nieuwe ontwikkelaars make setup-dev # Pre-commit installeren pre-commit install # Code kwaliteit check make quality-check ``` ### **4. Continue Verbetering** - Maandelijkse code review sessies - Feedback mechanisme voor normen - Automatische updates van tools Deze normen zorgen voor consistente, onderhoudbare code en kunnen eenvoudig worden gehandhaafd via de geautomatiseerde tools in Cursor.