Goyave En Option. Comment utiliser le bon
J'ai une classe
private class TouchCommand {
private int action;
private int x;
private int y;
...
Lorsque la commande est exécutée, il est nécessaire de vérifier les valeurs de champ null /not null, et en fonction de produire longitudinale de l'action. Je veux utiliser les Options de Google de Goyave.
La solution qui est la bonne?
ce:
public boolean executeCommand() {
Optional<Integer> optionalAction = Optional.fromNullable(action);
...
ou:
private class TouchCommand {
private Optional<Integer> action;
private Optional<Integer> x;
private Optional<Integer> y;
...
Étant donné que l'appel à parseAction peut également renvoyer une valeur null (ou absent):
TouchCommand touchCommand = new TouchCommand();
touchCommand.mAction = parseAction(xmlParser.getAttributeValue(namespace, "action"));
...
Questions:
- de savoir si ou de ne pas le faire: la méthode parseAction (et similaires) renvoie Facultatif ?
- de savoir si ou de ne pas le faire: le domaine des objets de la classe Facultative ?
- de savoir si ou de ne pas le faire: lors de la vérification des champs de la classe (en supposant qu'ils peuvent être null) pour les convertir en objets en Option ?
Thx.
OriginalL'auteur Aleksandr | 2012-07-19
Vous devez vous connecter pour publier un commentaire.
Goyave contributeur ici...
Tout ou partie de ces choses sont très bien, mais certains d'entre eux peut-être exagéré.
En général, tel que discuté dans cette StackOverflow répondre,
Optional
est principalement utilisé pour deux choses: pour rendre plus clair ce que vous avez signifiait parnull
, et dans les valeurs de retour des méthodes pour s'assurer de l'appelant prend soin de la "absent" (qui il est plus facile de l'oublier avecnull
). Nous certainement ne défends pas le remplacement de tous les nullable valeur avec uneOptional
partout dans votre code, nous n'avons certainement pas le faire au sein de Goyave lui-même!Un grand nombre de ce qui devra être votre décision -- il n'y a pas de règle universelle, elle est relativement jugement subjectif, et je n'ai pas assez de contexte pour déterminer ce que je ferais à votre place, -- mais, sur la base de ce contexte, vous avez fournies, je voudrais envisager de faire les méthodes de retour
Optional
, mais ne serait probablement pas modifier les autres champs ou quoi que ce soit.J'ai juste pensé à faire un champ de classe "Option" n'est pas correct. Si c'est aussi bon, puis (je crois) pour stocker des valeurs que peut avoir la valeur null, il est plus facile que de convertir chaque fois la valeur de l'Option, si nécessaire à la vérification.
Je veux dire, c'est pas comme si ça ne fonctionnerait pas. Mais
Optional
porte généraux de son propre qui pourrait ne pas être souhaitable. Il est vraiment beaucoup mieux pour optimiser pour la maintenabilité et la lisibilité du code ici.OriginalL'auteur Louis Wasserman