Skip to content

Commit 3000c24

Browse files
committed
Translation of failfast.md
1 parent be268a5 commit 3000c24

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed
+17-17
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Fail fast, validate arguments using a dedicated library
1+
# Échouez rapidement, valider les arguments à l'aide d'une bibliothèque dédiée
22

3-
### One Paragraph Explainer
3+
### Un paragraphe d'explication
44

5-
We all know how checking arguments and failing fast is important to avoid hidden bugs (see anti-pattern code example below). If not, read about explicit programming and defensive programming. In reality, we tend to avoid it due to the annoyance of coding it (e.g. think of validating hierarchical JSON object with fields like email and dates) – libraries like Joi and Validator turn this tedious task into a breeze.
5+
Nous savons tous combien il est important de vérifier les arguments et d'échouer rapidement pour éviter les bogues cachés (voir le contre exemple de code ci-dessous). Si ce n'est pas le cas, renseignez-vous sur la programmation explicite et la programmation défensive. En réalité, nous avons tendance à l'éviter en raison de la pénibilité de son codage (par exemple, pensez à valider un objet JSON hiérarchique avec des champs comme l'email et les dates) - des bibliothèques comme Joi et Validator transforment cette tâche fastidieuse en un jeu d'enfant.
66

7-
### Wikipedia: Defensive Programming
7+
### Wikipedia : la programmation défensive
88

9-
Defensive programming is an approach to improve software and source code, in terms of General quality – reducing the number of software bugs and problems. Making the source code comprehensible – the source code should be readable and understandable so it is approved in a code audit. Making the software behave in a predictable manner despite unexpected inputs or user actions.
9+
La programmation défensive est une approche pour améliorer les logiciels et le code source, en termes de qualité générale - en réduisant le nombre de bogues et de problèmes logiciels. Rendre le code source compréhensible - le code source doit être lisible et compréhensible afin qu'il soit approuvé lors d'un audit de code. Faire en sorte que le logiciel se comporte de manière prévisible malgré des entrées ou des actions utilisateur inattendues.
1010

11-
### Code example: validating complex JSON input using ‘Joi
11+
### Exemple de code : validation d'une entrée JSON complexe à l'aide de « Joi »
1212

1313
```javascript
1414
var memberSchema = Joi.object().keys({
@@ -18,50 +18,50 @@ var memberSchema = Joi.object().keys({
1818
});
1919

2020
function addNewMember(newMember) {
21-
// assertions come first
22-
Joi.assert(newMember, memberSchema); //throws if validation fails
23-
// other logic here
21+
// les vérifications sont faites en premier
22+
Joi.assert(newMember, memberSchema); // lève une exception si la validation échoue
23+
// d'autres logiques ici
2424
}
2525
```
2626

2727

2828

29-
### Anti-pattern: no validation yields nasty bugs
29+
### Contre exemple de code : aucune validation ne donne de méchants bogues
3030

3131
<details>
3232
<summary><strong>Javascript</strong></summary>
3333

3434
```javascript
35-
// if the discount is positive let's then redirect the user to print his discount coupons
35+
// si discount est positif, redirige l'utilisateur pour imprimer ses coupons de réduction
3636
function redirectToPrintDiscount(httpResponse, member, discount) {
3737
if (discount != 0) {
3838
httpResponse.redirect(`/discountPrintView/${member.id}`);
3939
}
4040
}
4141

4242
redirectToPrintDiscount(httpResponse, someMember);
43-
// forgot to pass the parameter discount, why the heck was the user redirected to the discount screen?
43+
// J'ai oublié de passer le paramètre discount, pourquoi diable l'utilisateur a-t-il été redirigé vers l'écran de remise ?
4444
```
4545
</details>
4646

4747
<details>
4848
<summary><strong>Typescript</strong></summary>
4949

5050
```typescript
51-
// if the discount is positive let's then redirect the user to print his discount coupons
51+
// si discount est positif, redirige l'utilisateur pour imprimer ses coupons de réduction
5252
function redirectToPrintDiscount(httpResponse: Response, member: Member, discount: number) {
5353
if (discount != 0) {
5454
httpResponse.redirect(`/discountPrintView/${member.id}`);
5555
}
5656
}
5757

5858
redirectToPrintDiscount(httpResponse, someMember, -12);
59-
// We passed a negative parameter discount, why the heck was the user redirected to the discount screen?
59+
// Nous avons passé un paramètre discount négatif, pourquoi diable l'utilisateur a-t-il été redirigé vers l'écran de remise ?
6060
```
6161
</details>
6262

63-
### Blog Quote: "You should throw these errors immediately"
63+
### Citation de blog : « Vous devriez rejeter ces erreurs immédiatement »
6464

65-
From the blog: Joyent
65+
Extrait du blog de Joyent
6666

67-
> A degenerate case is where someone calls an asynchronous function but doesn’t pass a callback. You should throw these errors immediately since the program is broken and the best chance of debugging it involves getting at least a stack trace and ideally a core file at the point of the error. To do this, we recommend validating the types of all arguments at the start of the function.
67+
> Un cas de dégénération est celui où quelqu'un appelle une fonction asynchrone mais ne passe pas de fonction de rappel. Vous devriez rejeter ces erreurs immédiatement car le programme est cassé et la meilleure chance de le déboguer implique d'obtenir au moins une trace de pile et idéalement un fichier core au niveau de l'erreur. Pour ce faire, nous vous recommandons de valider les types de tous les arguments au début de la fonction.

0 commit comments

Comments
 (0)