2016-02-13 3 views
1

J'ai hérité d'une base de code de projet d'un développeur qui y travaillait. Je dois y apporter quelques modifications.Comment faire des données faiblement couplées avec le code de l'application?

Dire que j'ai une table "CARS" avec 2 colonnes

ID | CARNAME

1 | HYUNDAI
2 | FORD
3 | BMW

lié à une classe de modèle « voiture »:

public Class Car{ 

    @Id 
    @Column(name="ID") 
    private Long id; 

    @Column(name="FORD") 
    private String carName; 

    //getters and setters... 
} 

et dans mon extrait de code (par exemple dans une classe de contrôleur) Je dois voir si la voiture donnée est une voiture FORD, le code conditionnel serait quelque chose comme

if(thisCar.getCarName()=="FORD")

ou

if(thisCar.getId()==2L)

mais cela crée des problèmes de dépendance entre la base de données et l'application. et si je rince la table des voitures ou restructurer et par conséquent FORD voiture entrée va à la clé primaire 3 de même pour la chaîne "FORD". Et si demain il change à "FORDspeed" ou quelque chose. Je devrais changer mon code en conséquence.

comment est-ce que je fais mon code faiblement couplé dans ce sens à partir des données.

Répondre

0

Je pense que vous ne devriez pas compter sur le champ ID, parce que cela a peut-être changé comme vous l'avez dit. Ainsi, la phrase if(thisCar.getId()==2L) peut avoir un résultat différent plus tard, vous devriez donc l'éviter. Mais je pense que if(thisCar.getCarName()=="FORD") a toujours un résultat statique et je pense qu'il n'a aucun problème basé sur la conception orientée objet.

+0

il sent toujours quelque chose de mal. Nous sommes toujours en cours de codage "FORD" STRING – Sarabjeet

+0

Oui, vous avez raison. Mais je pense que c'est inévitable. Vous devez vérifier le nom de la voiture avec une chaîne codée en dur. – hamed

+0

Que diriez-vous de garder une autre couche entre le code et la table? certains fichiers de propriétés ou quelque chose? – Sarabjeet