Maak een Tabnine AI-gestuurde Code Refactoring Assistent
description
Met deze prompt kunnen gebruikers de AI-mogelijkheden van Tabnine benutten om hun code systematisch te refactoren en te verbeteren. Het lost het probleem op van het onderhouden en optimaliseren van bestaande of legacy code door uitvoerbare suggesties te bieden die zijn afgestemd op de programmeertaal en specifieke behoeften van de gebruiker. In tegenstelling tot algemene codeverbeteringsprompts richt deze prompt zich op gestructureerde refactoring voor betere codekwaliteit en onderhoudbaarheid.
prompt
Analyseer mijn bestaande code en geef Tabnine-gestuurde refactoringsuggesties om de code-structuur, leesbaarheid en efficiëntie te verbeteren. Codefragment: <plak je codefr ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Je bestaande code is al vrij compact en functioneel. Hier zijn enkele suggesties voor verbetering op het gebied van leesbaarheid en mogelijk prestaties, afhankelijk van de context:
1. **Gebruik van destructurering voor meer leesbaarheid:**
Door de `artikel` parameter te destructureren, wordt de code duidelijker en explicieter.
2. **Typecontrole of filtering (optioneel):**
Als je zeker wilt zijn dat alleen geldige artikelen worden meegeteld, kun je filtering toevoegen.
3. **Gebruik van arrow functies en const:**
Dit is al gedaan, dus dat is goed.
Hier is een mogelijke refactor:
```javascript
function berekenTotaal(artikelen) {
return artikelen.reduce((totaal, { prijs }) => totaal + prijs, 0);
}
```
**Extra tip:**
Als je verwacht dat de lijst zeer groot is en je performance wilt optimaliseren, kun je overwegen om een `for`-loop te gebruiken in plaats van `reduce`. Maar voor de meeste situaties is `reduce` efficiënt genoeg.
**Voorbeeld met een `for`-loop:**
```javascript
function berekenTotaal(artikelen) {
let totaal = 0;
for (const { prijs } of artikelen) {
totaal += prijs;
}
return totaal;
}
```
**Samenvatting:**
- Gebruik destructurering voor meer leesbaarheid.
- Overweeg een `for`-loop voor maximale prestaties bij grote datasets.
- Het huidige gebruik van `reduce` is al erg idiomatisch en efficiënt voor de meeste toepassingen.
provider: deepseek
model: deepseek-chat
Beste gebruiker, hier zijn Tabnine-gestuurde refactoringsuggesties voor uw JavaScript code:
## 1. **Type Safety en Validatie**
```javascript
function berekenTotaal(artikelen) {
if (!Array.isArray(artikelen)) {
throw new Error('Artikelen moet een array zijn');
}
return artikelen.reduce((totaal, artikel) => {
if (typeof artikel?.prijs !== 'number' || isNaN(artikel.prijs)) {
console.warn('Ongeldige prijs gevonden voor artikel:', artikel);
return totaal;
}
return totaal + artikel.prijs;
}, 0);
}
```
## 2. **Prestatie-optimalisatie met for-loop**
```javascript
function berekenTotaal(artikelen) {
if (!Array.isArray(artikelen) || artikelen.length === 0) {
return 0;
}
let totaal = 0;
for (let i = 0; i < artikelen.length; i++) {
const prijs = artikelen[i]?.prijs;
if (typeof prijs === 'number' && !isNaN(prijs)) {
totaal += prijs;
}
}
return totaal;
}
```
## 3. **Geavanceerde versie met caching**
```javascript
class ArtikelenBerekenaar {
constructor() {
this.cache = new Map();
}
berekenTotaal(artikelen) {
if (!Array.isArray(artikelen)) return 0;
const cacheKey = JSON.stringify(artikelen.map(a => a.prijs));
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
const totaal = artikelen.reduce((acc, artikel) => {
const prijs = Number(artikelen?.prijs) || 0;
return acc + (isNaN(prijs) ? 0 : prijs);
}, 0);
this.cache.set(cacheKey, totaal);
return totaal;
}
}
```
## 4. **ES6+ versie met destructurering**
```javascript
const berekenTotaal = (artikelen = []) => {
return artikelen
.map(({ prijs = 0 }) => Number(prijs) || 0)
.filter(prijs => !isNaN(prijs) && prijs >= 0)
.reduce((totaal, prijs) => totaal + prijs, 0);
};
```
## **Verbeterpunten samengevat:**
- ✅ **Type checking** voorkomt runtime errors
- ✅ **For-loop** is sneller bij grote arrays
- ✅ **Foutafhandeling** voor ongeldige prijzen
- ✅ **Optionele chaining** (`?.`) voor veilige property access
- ✅ **Caching** voor herhaalde berekeningen
- ✅ **Default parameters** voor betere API
**Aanbeveling:** Gebruik suggestie #2 voor optimale prestaties bij grote datasets, of #1 voor betere leesbaarheid en onderhoudbaarheid.