2009-07-02 16 views
1

Je suis en train d'implémenter quelques choses dans Ruby et je me demandais à quel point la vérification d'erreur est appropriée (ou, plus précisément, combien d'erreurs devraient être vérifiées par convention)? Par exemple, j'implémente une méthode qui permute deux éléments dans un tableau. La méthode est très simple:Ruby combien de vérification d'erreur est approprié?

def swap(a,b) 
    @array[a], @array[b] = @array[b], @array[a] 
end 

Il est très simple, mais est-ce ruby-ish de vérifier si les indices donnés sont valides, ou qu'une surcharge inutile (en gardant à l'esprit que je n'ont pas l'intention de la méthode travailler avec des valeurs enveloppantes comme -1)?

Répondre

3

Je ne peux pas vous aider avec des index négatifs, mais vous pouvez utiliser

@array.fetch(a) 

soulever une exception si a est un index non valide.

Je devrais utiliser fetch quand je considère un index invalide comme un cas "ne peut pas arriver", mais parfois je pense seulement au scénario "heureux chemin".

0

Cela dépend du comportement que vous recherchez. La méthode Array#[] que vous appelez vérifie pour vous et renvoie zéro si vous utilisez un index inexistant, donc je ne vois pas le besoin de dupliquer la vérification d'erreur si vous voulez ce comportement standard. Si vous voulez quelque chose d'autre, vous devrez implémenter le comportement que vous voulez.

Toutefois, cette méthode fonctionnera avec un index de -1, donc si vous voulez interdire cela, vous devrez mettre une vérification pour cela. Fondamentalement, je pense qu'une bonne règle est: Vérifiez les conditions dans lesquelles votre méthode se comportera incorrectement, et implémentez le comportement que vous voulez. La condition d'index hors-limites sera interceptée par le tableau et traitée d'une certaine manière - si cette gestion est correcte, vous n'avez rien à faire. Un index qui ne correspond pas à une attente personnalisée de la méthode ne sera pas intercepté du tout, vous devez donc absolument le vérifier.