2010-06-24 3 views
1

Je me demande ce que les développeurs plus expérimentés pensent de la façon de gérer des processus presque identiques, comme un utilisateur créant un profil et un utilisateur éditant son profil. Pour le moment, j'ai une seule méthode de contrôleur et une vue unique qui gère la distinction entre un nouvel utilisateur et un utilisateur existant/éditant, juste en passant un drapeau d'édition $, donc je sais gérer les légères différences entre les deux. Avoir ces conditions à travers ma méthode et vue de contrôleur semble un peu en désordre, mais alors il se sent aussi comme beaucoup de duplication pour créer une vue distincte et une méthode de contrôleur pour chaque situation. Qu'est-ce que les gens ont tendance à faire dans cette situation?Créer un utilisateur et modifier utilisateur - DRY ou séparation, ce qui est plus important

Répondre

1

Lorsque je configure un système qui peut créer de nouveaux utilisateurs, j'ai tendance à n'avoir besoin que de très peu d'informations sur l'enregistrement - courrier électronique et mot de passe par exemple. Ensuite, la section "profile" de votre site peut ensuite gérer toutes les modifications des détails de l'utilisateur restant, sans avoir à s'inquiéter de savoir s'il s'agit d'un utilisateur nouveau ou existant. D'après mon expérience, les gens ont tendance à se décourager lorsqu'ils s'inscrivent à quelque chose si trop de questions sont posées dès le début! Retardez ce qui n'est pas vraiment nécessaire et recueillez cette information plus tard!

+0

Ça a du bon sens Dave, c'est ce que je ferais normalement, mais à cette occasion, j'ai un formulaire d'inscription assez long et nécessaire. Plus ou moins toutes les données d'enregistrement sont modifiables par l'utilisateur une fois qu'elles sont enregistrées, c'est donc ce qui a réellement motivé ma question - moins de code mais avec beaucoup de conditions, ou du code dupliqué sans avoir besoin des conditions! – samwatt

+0

Ok, alors pourriez-vous modifier la disposition de la page pour recueillir les éléments qui doivent se comporter différemment en une ou deux sections plus grandes? Ensuite, vous avez moins de conditionnements présents, mais toujours le même script principal. Qu'en est-il du back-end? Théoriquement, vous pouvez modifier la cible du formulaire en fonction du type d'édition/mise à jour, ou encore, séparer le traitement du formulaire en plus gros morceaux basés sur les conditions. Quel que soit votre choix, il semble que vous ayez besoin de beaucoup de commentaires pour rappeler aux futurs rédacteurs que "si vous éditez ici, vous DEVEZ également les modifier" !!! :) –

2

Je pense que vous devriez toujours considérer les aspects à long terme des décisions de conception.

Il peut être plus propre de séparer ces fonctions, mais vous avez deux fonctions de nettoyage. Donc, en termes d'esthétique, vous pourriez argumenter de toute façon. Il y a l'ancien compromis entre le code dupliqué propre et la maintenabilité. Toutefois, à long terme, d'autres considérations entrent en jeu et vous commencez à penser aux risques. Le risque de duplication du code est que les deux parties du code deviennent désynchronisées, potentiellement de manière subtile et difficile à détecter (par exemple, en mesure d'ajouter des données rejetées lors de la mise à jour). Cela peut être bien pire si vous n'êtes pas la personne qui maintient le code, ou si vous n'avez pas touché le code depuis longtemps.

Donc, à mon humble avis garder le drapeau d'édition. Vous avez tout en un seul endroit, même si c'est désordonné.

+0

Merci pour la réponse Phil - pense que je vais garder le drapeau d'édition, surtout s'il y a des différences minimes dans les processus. – samwatt

+0

Je code généralement l'ORM pour que le code puisse allouer joyeusement des informations et qu'il ne se soucie pas s'il s'agit d'un nouvel objet ou d'un objet existant. Lorsque le dernier 'save()' est appelé, l'objet lui-même détermine s'il fait un 'UPDATE' ou un' INSERT'. – staticsan

+0

Je n'appellerai pas forcément le drapeau d'édition "désordonné" et c'est beaucoup plus préférable que la duplication de code qui - comme le mentionne Phil - peut créer des ravages. DRY n'a pas été inventé comme une règle pour l'amour de la règle. C'est le résumé de beaucoup de douleur ressentie tout au long de l'histoire du développement de logiciels. –

Questions connexes