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
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!
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é.
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
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
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. –
- 1. Créer une fonction qui détermine si un utilisateur a 10 entrées ou plus par jour calendaire
- 2. Comment créer ce contrôle utilisateur?
- 3. Est-ce que le CSS est "important"? (L'interface utilisateur de jQuery CSS ne valide pas.)
- 4. séparation de la logique et l'interface utilisateur en titane (javascript)
- 5. Créer un utilisateur dans un autre Membership.ApplicationName
- 6. créer un formulaire utilisateur
- 7. Créer un utilisateur FTP dynamiquement
- 8. Comment créer un plugin QT qui personnalise l'interface utilisateur?
- 9. Wordpress: Créer un rôle/utilisateur personnalisé
- 10. Créer un compte utilisateur Vista
- 11. Un utilisateur malveillant peut-il modifier $ _SESSION?
- 12. Facebook App: Qu'est-ce qui définit un «utilisateur»?
- 13. Créer un compte utilisateur local
- 14. Ruby: Pour créer un cache de chaîne, ce qui est plus rapide: Array ou SQL?
- 15. Séparation nette de l'interface utilisateur avec Caliburn MVVM
- 16. Qu'est-ce que le sharding et pourquoi est-ce important?
- 17. Résultat différent entre un utilisateur qui clique sur un bouton de l'interface utilisateur jQuery et qui utilise jQuery click() dessus?
- 18. Impossible de supprimer un utilisateur qui est actuellement connecté
- 19. Fil d'applications Web sécurisées - pourquoi est-ce important?
- 20. Qu'est-ce qui est le plus rapide? Dessin ou composition?
- 21. Service de webcam pour un site Web: utilisateur à utilisateur, directement, est-ce possible?
- 22. Debian: créer un utilisateur pendant l'empaquetage
- 23. Ce qui est plus rapide, equalsIgnoreCase ou compareToIgnoreCase
- 24. Comment démarrer un projet plus important?
- 25. Comment créer un attribut de préférence utilisateur?
- 26. un système qui enregistrement et utilisateur comptage connecté
- 27. flux utilisateur multi utilisateur
- 28. ASP.NET créer un utilisateur et se souvenir de moi
- 29. Créer un compte utilisateur avec VBScript
- 30. Code pour créer un utilisateur et établir des autorisations
Ç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
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" !!! :) –