slogan3

Maak een uitgebreide richtlijn voor codestijl met Tabnine voor mijn project

description

Door een richtlijn voor codestijl te maken, kan ik ervoor zorgen dat mijn team consistente coderingsnormen volgt, wat de leesbaarheid en onderhoudbaarheid van de code verbetert. Dit zal ook de samenwerking verbeteren en fouten verminderen door inconsistent gebruik.

prompt

try_prompt

Help me een gedetailleerde richtlijn voor codestijl op te stellen met Tabnine om consistentie in mijn project te waarborgen. Mijn projecttype is: {{project_type}} en mijn pr ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een gedetailleerde richtlijn voor codestijl voor jouw webapplicatieproject in JavaScript, ontworpen om consistentie en kwaliteit te waarborgen met behulp van Tabnine: --- # Richtlijn voor Codestijl voor JavaScript Webapplicatie ## Inleiding Deze richtlijn beschrijft de coderingsconventies, best practices en workflow-voorkeuren voor het ontwikkelteam. Het doel is een consistente codebasis te behouden, leesbaarheid te bevorderen en het onderhoud te vergemakkelijken. --- ## 1. Algemene Coderingsconventies ### 1.1 Indentatie - Gebruik twee spaties voor inspringingen. - Bijvoorbeeld: ```javascript function voorbeeld() { if (true) { console.log('Correct ingesprongen'); } } ``` ### 1.2 Laatste regel - Voeg altijd een lege regel toe aan het einde van elk bestand. ### 1.3 Variabelen en functies - Gebruik `camelCase` voor variabelen, functies en methoden. - Voor constante waarden die niet veranderen, gebruik `UPPER_SNAKE_CASE`. ### 1.4 Semicolons - Gebruik altijd puntkomma’s aan het einde van instructies. ### 1.5 Aanhalingstekens - Gebruik enkelvoudige aanhalingstekens (' ') voor strings. - Voorbeeld: ```javascript const naam = 'John'; ``` ## 2. Bestandsstructuur en Naming - Bestandsnamen: gebruik `kebab-case` (bijvoorbeeld `user-authentication.js`). - Plaats gerelateerde modules in mappen met duidelijke namen, bijvoorbeeld `/components`, `/services`. --- ## 3. Codekwaliteit en Best Practices ### 3.1 Gebruik van Tabnine - Configureer Tabnine om te leren van de codebase voor contextuele suggesties. - Verifieer suggesties op correctheid en consistentie voordat je ze accepteert. ### 3.2 Commentaar - Schrijf duidelijke en beknopte commentaren boven complexe functies of logica. - Gebruik JSDoc voor functiedefinities: ```javascript /** * Bereken de som van twee getallen. * @param {number} a - Het eerste getal. * @param {number} b - Het tweede getal. * @returns {number} De som van a en b. */ function som(a, b) { return a + b; } ``` ### 3.3 Functionele code - Schrijf kleine, herbruikbare functies. - Vermijd lange functies (> 20 regels). ### 3.4 Asynchroon werken - Gebruik `async/await` in plaats van `.then()` waar mogelijk. - Bijvoorbeeld: ```javascript async function fetchData() { const response = await fetch('/api/data'); const data = await response.json(); return data; } ``` ### 3.5 Error handling - Implementeer try-catch blokken bij asynchrone operaties. - Voorbeeld: ```javascript try { const data = await fetchData(); } catch (error) { console.error('Fout bij het ophalen van data:', error); } ``` --- ## 4. Linting en Formatteren - Gebruik ESLint met de Airbnb-configuratie als basis. - Gebruik Prettier voor automatische codeformattering. - Automatiseer linting en formattering via pre-commit hooks (bijvoorbeeld met Husky). --- ## 5. Workflow en Samenwerking ### 5.1 Branching - Werk op feature branches afgekort met `feature/`, `bugfix/` of `hotfix/`. - Bijvoorbeeld: `feature/login-screen`. ### 5.2 Commit-berichten - Gebruik duidelijke, beknopte berichten. - Voorbeeld: ``` feat: voeg login functionaliteit toe fix: herstel fout in gebruikersauthenticatie ``` ### 5.3 Code reviews - Voer peer reviews uit voor elke pull request. - Controleer op consistentie met deze richtlijn en codekwaliteit. --- ## 6. Voorbeeldprojectstructuur ``` /src /components login-form.js /services api.js /utils helpers.js index.js ``` --- ## 7. Voorbeelden ### Goede functie: ```javascript /** * Controleert of een gebruiker is ingelogd. * @param {Object} user - Gebruikersobject. * @returns {boolean} - True als ingelogd, anders false. */ function isLoggedIn(user) { return !!user && user.loggedIn === true; } ``` ### Slechte praktijk: ```javascript function checkUser(u){return u!=null&&u.loggedIn===true;} ``` --- ## 8. Samenvatting - Consistente indeling en naamgeving. - Gebruik moderne JavaScript (ES6+). - Goede commentaar en documentatie. - Automatische tools inzetten voor linting en formattering. - Regelmatige code reviews en teamafstemming. --- Voor verdere afstemming en implementatie, stel ik voor om deze richtlijnen te documenteren in een `CONTRIBUTING.md`-bestand en automatische checks in te stellen via CI/CD-pijplijnen. Heeft u nog specifieke wensen of vragen?
provider: deepseek
model: deepseek-chat
Zeker! Hier is een gedetailleerde codestijlrichtlijn voor je JavaScript webapplicatie project met Tabnine: # Codestijlrichtlijn JavaScript Webapplicatie ## 1. Algemene Conventies ### Bestandsstructuur ``` src/ ├── components/ # Herbruikbare UI componenten ├── pages/ # Pagina-specifieke componenten ├── hooks/ # Custom React hooks ├── utils/ Hulpfunctions ├── services/ # API calls en externe services ├── styles/ # Styling bestanden └── constants/ # Constante waarden ``` ### Basisregels - Gebruik **2 spaties** voor indentatie - **UTF-8** bestandsencoding - **LF** (Unix) line endings - Maximale regelbreedte: **80 karakters** ## 2. JavaScript/ES6+ Conventies ### Variabelen en Functies ```javascript // ✅ Goed const userName = 'Jan'; let counter = 0; const MAX_USERS = 10; function calculateTotalPrice(items) { return items.reduce((total, item) => total + item.price, 0); } // ❌ Vermijden var username = 'Jan'; function CalculateTotalPrice(items) { ... } ``` ### Arrow Functions ```javascript // ✅ Goed const handleSubmit = (event) => { event.preventDefault(); submitForm(); }; const double = (x) => x * 2; // ❌ Vermijden const handleSubmit = function(event) { ... }; ``` ## 3. React-specifieke Conventies ### Componenten ```javascript // ✅ Functionele componenten met destructuring const UserProfile = ({ user, onUpdate, isEditing }) => { const [localUser, setLocalUser] = useState(user); const handleSave = useCallback(() => { onUpdate(localUser); }, [localUser, onUpdate]); return ( <div className="user-profile"> <h2>{user.name}</h2> {isEditing && <EditForm user={localUser} onSave={handleSave} />} </div> ); }; // Props destructuring in function body als er veel props zijn const ComplexComponent = (props) => { const { user, permissions, settings, onSave, onCancel, ...restProps } = props; }; ``` ### Hooks ```javascript // ✅ Custom hooks beginnen met 'use' const useUserData = (userId) => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const fetchUser = async () => { try { const userData = await userService.getById(userId); setUser(userData); } catch (error) { console.error('Fout bij ophalen gebruiker:', error); } finally { setLoading(false); } }; fetchUser(); }, [userId]); return { user, loading }; }; ``` ## 4. Naamgevingsconventies ### Componenten en Bestanden ```javascript // ✅ PascalCase voor componenten en bestanden UserProfile.jsx LoginForm.jsx AddressForm.jsx // ✅ camelCase voor utilities en hooks formatCurrency.js useLocalStorage.js apiHelpers.js ``` ### CSS Classes ```javascript // ✅ kebab-case voor CSS classes <div className="user-profile-card"> <div className="form-input--error"> ``` ## 5. Imports en Exports ```javascript // ✅ Geordende imports // 1. Externe dependencies import React, { useState, useEffect } from 'react'; import { useRouter } from 'next/router'; // 2. Interne components import UserProfile from '../components/UserProfile'; import LoadingSpinner from '../components/LoadingSpinner'; // 3. Utilities en helpers import { formatDate, validateEmail } from '../../utils/helpers'; import { API_ENDPOINTS } from '../../constants/api'; // 4. Styling import './UserPage.scss'; // ✅ Named exports voor utilities export { formatCurrency, validateForm }; export default UserProfile; ``` ## 6. Error Handling ```javascript // ✅ Async/await met try-catch const fetchData = async (url) => { try { const response = await fetch(url); if (!response.ok) { throw new Error(`HTTP fout: ${response.status}`); } return await response.json(); } catch (error) { console.error('Data ophalen mislukt:', error); throw error; // Opnieuw throwen voor error boundaries } }; // ✅ Error boundaries in React class ErrorBoundary extends Component { state = { hasError: false }; static getDerivedStateFromError(error) { return { hasError: true }; } componentDidCatch(error, errorInfo) { logErrorToService(error, errorInfo); } render() { if (this.state.hasError) { return <FallbackUI />; } return this.props.children; } } ``` ## 7. Performance Best Practices ```javascript // ✅ Memoization voor zware berekeningen const ExpensiveComponent = React.memo(({ data }) => { const processedData = useMemo(() => { return data.filter(item => item.active) .sort((a, b) => a.name.localeCompare(b.name)); }, [data]); return <div>{/* render processedData */}</div>; }); // ✅ Lazy loading voor routes const LazyDashboard = React.lazy(() => import('./components/Dashboard')); ``` ## 8. Tabnine Configuratie ### Aanbevolen Tabnine Instellingen ```json { "tabnine.experimentalAutoImports": true, "tabnine.codeLensEnabled": true, "tabnine.acceptCompletionOnEnter": "on" } ``` ### Tabnine Prompts voor je Team ``` // Gebruik deze comments voor consistente Tabnine suggesties: // TODO: Validatie toevoegen voor email formaat // FIXME: Memory leak oplossen in useEffect // OPTIMIZE: Herberekeningen reduceren in deze component // SECURITY: Input sanitization implementeren ``` ## 9. Code Review Checklist ### Vereisten voor Merge Request - [ ] ESLint errors opgelost - [ ] Alle tests slagen - [ ] Code is gedocumenteerd - [ ] Geen console.log statements in productiecode - [ ] Accessibiliteit (a11y) gecontroleerd - [ ] Responsive design getest ## 10. ESLint Configuratie ```json { "extends": [ "eslint:recommended", "plugin:react/recommended", "plugin:react-hooks/recommended" ], "rules": { "react/prop-types": "error", "no-unused-vars": "error", "prefer-const": "error", "no-console": "warn" } } ``` ## 11. Git Workflow ### Commit Conventies ``` feat: nieuwe gebruiker registratie fix: oplossing voor login bug docs: API documentatie bijgewerkt style: code formatting verbeterd refactor: component herstructurering test: unit tests toegevoegd ``` Deze richtlijn zorgt voor consistentie in je webapplicatie project en optimaliseert de samenwerking met Tabnine voor efficiëntere development.