Pochi giorni fa ho iniziato a leggere il libro "Clean Code" di Robert C. Martin e mi ha incoraggiato a dare un'occhiata più dettagliata al mio codice. Dopo aver aperto Eclipse, ho visto questo:
entityManager.createNamedQuery("CarriageRouteEntity.listCarriageDirections");
e ho deciso di spostare stringa CarriageRouteEntity.listCarriageDirections
in stringa costante. Dopo la correzione rapida ho creato qualcosa di simile a questo:
@NamedQueries({
@NamedQuery(name = CarriageRouteEntity.LIST_CARRIAGE_DIRECTIONS, query = "just query ...") })
public class CarriageRouteEntity {
public static final String LIST_CARRIAGE_DIRECTIONS = "CarriageRouteEntity.listDirections";
// ...
}
così ora lo chiamo in questo modo:
entityManager.createNamedQuery(CarriageRouteEntity.LIST_CARRIAGE_DIRECTIONS);
E qui ho iniziato a chiedermi dove dovrei inserire le costanti di query denominate. La classe di entità è un buon posto per questo? Forse dovrei creare una nuova classe con queste costanti come
public class CarriageRouteEntityNamedQuery {
public static final String LIST_CARRIAGE_DIRECTIONS = "CarriageRouteEntity.listDirections";
}
ma se un altro programmatore proverà a creare una query con nome saprà dove guardarlo? Quali sono le tue opinioni? Come organizzare queste costanti? Forse invece di creare CarriageRouteEntityNamedQuery
class dovrei creare enum e aggiungere il metodo all'entità CarriageRouteEntity
chiamata getNamedQuery()
che dirà a un altro programmatore in cui enum dovrebbe cercare le costanti?