Certaines choses intéressantes à considérer:
1. Le sélecteur de méthode ne commence pas par une lettre minuscule
Il est une tradition pour les sélecteurs de commencer par une minuscule lettre. En ce sens, genLista
serait plus correct que GenLista
.
2. Le sélecteur de méthode inclut le mot abrégé 'gen'
Par exemple, genLista
pourrait être renommé genereLista
o listaAlAzar
(si vous décidez d'utiliser l'espagnol)
3. Le Array
nommé lista
possède 31 éléments, et non 30
Le résultat de Array new: 31
est un tableau de 31 éléments. Cependant, le code ci-dessous n'en remplit que 30, laissant le dernier non initialisé (c'est-à-dire nil
). Solution possible: lista := Array new: 30
.
4. Un point est manquant provoque une erreur de compilation
Le code
1 to: 30 do: [ :i | lista at: i put: 2 atRandom - 1]
^lista
ne compile pas parce qu'il n'y a pas de point indiquant la séparation entre les deux phrases . Notez que l'erreur se produit au moment de la compilation (c'est-à-dire lorsque vous enregistrez la méthode) car le jeton de retour ^
doit démarrer une instruction (c'est-à-dire qu'il ne peut pas être inséré dans une instruction).
Il existe d'autres cas où un point manquant n'empêche pas la compilation du code. Au lieu de cela, une erreur se produira à l'exécution. Voici un (typique) exemple:
1 to: 10 do: [:i | self somethingWith: i] "<- missing dot here"
self somethingElse
le point manquant génère l'erreur d'exécution self not understood by block
.
5.Il y a une façon plus expressive de générer 0 et de 1 au hasard
Le calcul 2 atRandom - 1
est ok. Cependant, cela oblige le lecteur à faire les calculs mentalement. Une meilleure façon de révéler votre intention aurait été
#(0 1) atRandom
6. Lorsque vous jouez avec des nombres aléatoires ne pas oublier de sauvegarder la graine
Bien qu'il soit autorisé à utiliser atRandom
, une telle pratique devrait seulement être utilisée avec le code "jouet". Si vous développez un système ou une bibliothèque, la pratique recommandée consiste à enregistrer la graine quelque part avant de générer des données aléatoires. Cela vous permettra de reproduire plus tard la génération de quantités aléatoires pour le débogage ou la confirmation. (Notez cependant que cela ne suffira pas à rendre votre programme reproductible de manière déterministe car des collections non ordonnées (par exemple hachées) pourraient se former différemment dans les exécutions successives.)
Il vous manque un point (fin de l'instruction) après la 4ème ligne. –
Il n'y a pas non plus de point dans la construction de tableau ... vous pouvez faire '^ (1 à: 30) collecter: [: i | 2 atRandom - 1] ' –