Dois-je utiliser des majuscules ou des chameaux dans les énumérations d'étiquettes ?

StackOverflow https://stackoverflow.com//questions/23058275

  •  26-12-2019
  •  | 
  •  

Question

Le titre dit tout.

Dans zéro, camelcase est utilisé pour les étiquettes.Par exemple :Car et :Bike.La documentation de l'API pour Label utilise des majuscules lors de la définition de chaque étiquette dans l'énumération, alors Label.CAR.name() sera toujours CAR, pas Car.

L'utilisation de camelcase s'adapte mieux aux requêtes de chiffrement, mais cela entre en conflit avec le standard Java pour nommer les membres d'énumération.Cela m'oblige à utiliser des étiquettes comme Label.BIKE_SEAT au lieu de Label.BikeSeat dans ma base de données de graphiques.Lequel dois-je utiliser ?

Même si utiliser des majuscules pour les membres d'une énumération est la bonne façon de le faire en Java, je suis toujours un peu curieux de savoir pourquoi les gens de Neo4j ont ensuite décidé de représenter les étiquettes sous forme d'énumérations ?

Était-ce utile?

La solution 2

Première approche d'une solution

Pour respecter la convention Java, je peux remplacer Enum#toString() et utilisez-le à la place de Enum#name() qui ne peut être contourné.Ensuite, chaque membre aura un constructeur avec son véritable label Neo4j tel que représenté dans la base de données graphique :

public enum Label implements org.neo4j.graphdb.Label {
  CAR("Car"),
  BIKE("Bike"),
  BUS("Bus");

  private String name;

  private Label(name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return name;
  }
}      

Cela ne fonctionne pas bien avec des méthodes telles que GraphDatabaseService#findNodesByLabelAndProperty(Label, String, String) parce qu'il semble utiliser Label#name() pour faire correspondre au lieu de Label#toString() il ne correspondra donc pas aux nœuds ayant des étiquettes de cas de chameau dans la base de données.

Ma solution de travail

Depuis le remplacement Enum#toString() ne fonctionne pas et puisque Neo4j utilise Label#name() pour tout en interne, je devrai de toute façon le remplacer.J'ai donc fini par définir une classe implémentant Label qui est capable de remplacer Label#name():

public class Label implements org.neo4j.graphdb.Label {
  public static final Label CAR = new Label("Car");
  public static final Label BIKE = new Label("Bike");
  public static final Label BUS = new Label("Bus");

  private String name;

  private Label(String name) {
    this.name = name;
  }

  @Override
  public String name() {
    return name;
  }

  @Override
  public String toString() {
    return name;
  }
}

En externe, aucune modification n'est nécessaire du côté client en utilisant l'énumération d'étiquette précédente.

Autres conseils

DOCUMENT ORACLE : Because they are constants, the names of an enum type's fields are in uppercase letters.

vérifier : http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top