slogan3

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

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.