Portage de code
Cette compétence est utilisée pour porter du code d'un langage de programmation vers un autre langage.
Entrée
- Langage cible
- Fichiers source ou code à porter
Processus
Commencez par créer un plan des fonctionnalités clés présentes dans le code actuel. Notez tout :
- Cas limites que le code ou les tests unitaires couvrent
- Bibliothèques utilisées et équivalents recommandés dans le langage cible.
Utilisez l'entrée utilisateur structurée ou l'outil de questionnement pour passer en revue chaque bibliothèque utilisée et vérifier avec l'utilisateur quel équivalent utiliser.
Options supplémentaires à présenter :
- Fonctionnalité de bibliothèque simulée (stub)
- Implémenter à partir de zéro
Porter ensuite les tests unitaires. Utilisez-les comme base pour vérifier le code porté.
Enfin, portez le code en utilisant le plan préparé auparavant. Itérez sur ce portage en utilisant les tests unitaires pour identifier les corrections nécessaires.
Directives générales
- Utilisez les motifs courants pour le langage cible.
- Respectez les conventions de nommage courantes pour le langage cible.
- Le code porté doit refléter le code original afin qu'il soit facile pour l'utilisateur de retrouver les fonctionnalités équivalentes.
- Conservez les logs et commentaires présents dans le code original.
- Signalez tout nouveau cas limite.
- Notez tout changement dans la structure du code pour aider l'utilisateur à s'orienter.
Critères de succès
- Les tests unitaires passent, s'ils sont présents.
- Le linting passe, s'il est présent.
- Toutes les fonctionnalités clés sont implémentées.
- Tous les cas limites identifiés sont pris en compte.
- Toutes les bibliothèques nécessaires sont installées et prêtes à l'emploi.
Exemples
Exemple de code original
/**
* Calcule le prix final du produit incluant les réductions et la taxe.
*
* Lève une erreur en cas de réduction invalide.
*/
export function calculatePrice(basePrice: number, discount: number | null, taxRate: number): number {
let discountAmount = 0;
if (discount) {
if (discount >= 1) {
// Si les réductions sont mal configurées, elles peuvent aboutir à un
// prix négatif. S'arrêter avant d'afficher un prix invalide à l'utilisateur.
throw new Error('Réduction invalide');
}
discountAmount = basePrice * discount;
}
const taxAmount = (basePrice - discountAmount) * taxRate;
return (basePrice - discountAmount) + taxAmount;
}
Exemple de plan
Fonctionnalités clés :
- La fonction
calculatePriceaccepte un prix de base, un pourcentage de réduction et un taux de taxe et calcule le prix final du produit.- Cas limites :
- La réduction peut être nulle
- Si la réduction est supérieure ou égale à 1, lever une exception pour éviter des prix invalides.
- Cas limites :
Exemple de code porté
def calculate_price(base_price: float, discount: Optional[float], tax_rate: float) -> float:
"""
Calcule le prix final du produit incluant les réductions et la taxe.
Lève une exception en cas de réduction invalide.
"""
discount_amount = 0
if discount is not None:
if discount >= 1:
# Si les réductions sont mal configurées, elles peuvent aboutir à un
# prix négatif. S'arrêter avant d'afficher un prix invalide à l'utilisateur.
raise Exception('Réduction invalide')
discount_amount = base_price * discount
tax_amount = (base_price - discount_amount) * tax_rate
return (base_price - discount_amount) + tax_amount
Exemple de réponse
J'ai porté le code en Python.
calculatePriceest maintenantcalculate_price