CodeWhisperer aanpassen voor AI-ondersteunde pair programming
description
Maakt het mogelijk om CodeWhisperer te gebruiken als een virtuele pair programmer die samenwerkende feedback, alternatieve code-aanpakken en reviewvoorstellen biedt om de codekwaliteit te verbeteren en de ontwikkeling te versnellen. Deze prompt stimuleert interactief en doordacht programmeren naast eenvoudige code-aanvulling.
prompt
Handel als mijn AI pair programming partner met Amazon CodeWhisperer. Projectbeschrijving: <beschrijf je project of functie>. Programmeertaal: <voer je programmeertaal in>. Voorkeuren voor programmeerstijl: <beschrijf je voorkeuren voor ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn enkele suggesties om je functie te verbeteren op het gebied van codekwaliteit, onderhoudbaarheid en PEP8-conformiteit:
1. Gebruik van een generatorexpressie met `sum()` voor meer beknoptheid en efficiëntie.
2. Voeg typeannotaties toe voor duidelijkheid.
3. Documenteer de functie met een docstring.
4. Zorg dat de code conform PEP8 is.
Hier is de verbeterde versie:
```python
from typing import List
def process_orders(orders: List['Order']) -> float:
"""
Berekent de totale som van de bedragen van alle orders.
Args:
orders (List[Order]): Lijst van orderobjecten.
Returns:
float: De som van alle orderbedragen.
"""
total = sum(order.amount for order in orders)
return total
```
**Review en alternatieven:**
- **Typeannotaties**: door `List['Order']` te gebruiken geef je duidelijkheid over de verwachte input. Als `Order` een eigen klasse is, zorg dan dat deze correct geïmporteerd of gedefinieerd is.
- **Gebruik van `sum()`**: dit is efficiënter en eleganter dan een for-lus.
- **Docstring**: verbetert de leesbaarheid en onderhoudbaarheid.
**Optioneel**: Als je `Order`-objecten meer complexiteit bevatten of als je bijvoorbeeld een foutafhandeling wilt toevoegen, kun je de functie verder uitbreiden.
Wil je dat ik een volledige voorbeeldklasse `Order` toevoeg of verdere uitbreidingen voorstel?
provider: deepseek
model: deepseek-chat
Hier zijn mijn suggesties als je CodeWhisperer partner:
## Code Review Commentaar
**Problemen in huidige implementatie:**
- Geen type hints voor betere documentatie en IDE-ondersteuning
- Geen foutafhandeling voor ongeldige orders
- Geen validatie van input (bijv. lege orders lijst)
- Mogelijkheden voor numerieke precisie problemen
## Verbeterde Implementatie
```python
from typing import List, Union
from decimal import Decimal
class Order:
def __init__(self, amount: Union[int, float, Decimal]):
self.amount = amount
def process_orders(orders: List[Order]) -> Decimal:
"""
Bereken het totaalbedrag van alle orders.
Args:
orders: Lijst van Order objecten
Returns:
Decimal: Totaalbedrag van alle orders
Raises:
ValueError: Als orders lijst leeg is of ongeldige bedragen bevat
"""
if not orders:
raise ValueError("Orders lijst mag niet leeg zijn")
totaal = Decimal('0')
for order in orders:
try:
bedrag = Decimal(str(order.amount))
totaal += bedrag
except (TypeError, ValueError) as e:
raise ValueError(f"Ongeldig orderbedrag: {order.amount}") from e
return totaal
```
## Alternatieve Implementaties
**1. Functionele benadering:**
```python
from functools import reduce
def process_orders_functioneel(orders: List[Order]) -> Decimal:
if not orders:
return Decimal('0')
return reduce(
lambda totaal, order: totaal + Decimal(str(order.amount)),
orders,
Decimal('0')
)
```
**2. Met comprehensions:**
```python
def process_orders_comprehension(orders: List[Order]) -> Decimal:
if not orders:
return Decimal('0')
bedragen = (Decimal(str(order.amount)) for order in orders)
return sum(bedragen, Decimal('0'))
```
## Aanvullende Verbeteringen
**Unit Tests toevoegen:**
```python
import pytest
def test_process_orders():
# Test normale werking
orders = [Order(100), Order(50.5), Order(25.25)]
assert process_orders(orders) == Decimal('175.75')
# Test lege lijst
with pytest.raises(ValueError):
process_orders([])
```
**CodeWhisperer Tips:**
- Gebruik `# type: ignore` waar nodig voor complexe types
- Maak gebruik van docstring templates voor consistentie
- Implementeer logging voor debugging in productie
Deze verbeteringen zorgen voor robuustere, beter onderhoudbare code die PEP8-conform is en foutscenario's goed afhandelt.