Ce qui précède Les exemples spécifiques décrits dans sont les suivants. (Le code source est C #) spécification) Pensez à la gestion des commentaires sur le babillard. Le commentaire publié est affiché dans la liste des commentaires et chaque commentaire est modifié, supprimé, approuvé, renvoyé, affichage détaillé, et chaque bouton est contrôlé dans les conditions suivantes.
Code source) * Puisque je ne veux voir que le branchement conditionnel, le contrôle d'activation du bouton est omis.
private const string AuthorId = "ID de l'affiche";
private const string FirstManagerId = "ID du premier administrateur";
private const string SecondManagerId = "Deuxième ID administrateur";
/// <summary>
///Contrôlez l'activité du bouton.
/// </summary>
/// <param name="loginUserId">Identifiant de la personne de connexion</param>
/// <param name="firstApproverId">ID d'approbateur principal(Nul si non approuvé)</param>
/// <param name="secondApproverId">ID d'approbateur secondaire(Nul si non approuvé)</param>
private void SetButtonControls(string loginUserId, string firstApproverId, string secondApproverId)
{
//Chaque bouton est inactif et initialisé.
if (loginUserId == AuthorId && firstApproverId == null && secondApproverId == null)
{
//Bouton d'édition, bouton de suppression, bouton d'affichage des détails, activation
}
else if (loginUserId == FirstManagerId && firstApproverId == null)
{
//Bouton d'approbation, bouton de renvoi, activation du bouton d'affichage des détails
}
else if (loginUserId == FirstManagerId && firstApproverId != null)
{
//Activation détaillée du bouton d'affichage
}
else if (loginUserId == SecondManagerId && firstApproverId != null && secondApproverId == null)
{
//Bouton d'approbation, bouton de renvoi, activation du bouton d'affichage des détails
}
else if (loginUserId == SecondManagerId && firstApproverId != null && secondApproverId != null)
{
//Activation détaillée du bouton d'affichage
}
}
private static final String AUTHOR_ID = "ID de l'affiche";
private static final String FIRST_MANAGER_ID = "ID du premier administrateur";
private static final String SECOND_MANAGER_ID = "Deuxième ID administrateur";
protected void setButtonControls(String loginUserId, String firstApproverId, String secondApproverId) {
//Chaque bouton est inactif et initialisé.
if (AUTHOR_ID.equals(loginUserId) && firstApproverId == null && secondApproverId == null) {
//Bouton d'édition, bouton de suppression, bouton d'affichage des détails, activation
} else if (FIRST_MANAGER_ID.equals(loginUserId) && firstApproverId == null) {
//Bouton d'approbation, bouton de renvoi, activation du bouton d'affichage des détails
} else if (FIRST_MANAGER_ID.equals(loginUserId) && firstApproverId != null) {
//Activation détaillée du bouton d'affichage
} else if (SECOND_MANAGER_ID.equals(loginUserId) && firstApproverId != null && secondApproverId == null) {
//Bouton d'approbation, bouton de renvoi, activation du bouton d'affichage des détails
} else if (SECOND_MANAGER_ID.equals(loginUserId) && firstApproverId == null && secondApproverId != null) {
//Activation détaillée du bouton d'affichage
}
}
C'est conforme aux spécifications, mais c'est difficile à lire car c'est tout le reste. De plus, puisque l'instruction négative de la même instruction conditionnelle est écrite dans l'instruction if, elle est redondante. Il est préférable d'organiser les instructions if dans la même ligne.
private void SetButtonControls(string loginUserId, string firstApproverId, string secondApproverId)
{
//Chaque bouton est inactif et initialisé.
//Il y avait beaucoup de gens autour de moi qui ne savaient pas comment écrire ça.
bool firstApproved = firstApproverId != null;
bool secondApproved = secondApproverId != null;
if (loginUserId == AuthorId)
{
if (!firstApproved && !secondApproved)
{
//Bouton Modifier, bouton Supprimer, actif
}
//Activité détaillée des boutons d'affichage
}
else if (loginUserId == FirstManagerId)
{
if (!firstApproved)
{
//Bouton d'approbation, bouton de renvoi, activation
}
//Activation du bouton des détails d'approbation
}
else if (loginUserId == SecondManagerId)
{
if (firstApproved && !secondApproved)
{
//Bouton d'approbation, bouton de renvoi
}
//Activation détaillée du bouton d'affichage
}
}
private static final String AUTHOR_ID = "ID de l'affiche";
private static final String FIRST_MANAGER_ID = "ID du premier administrateur";
private static final String SECOND_MANAGER_ID = "Deuxième ID administrateur";
protected void setButtonControls(String loginUserId, String firstApproverId, String secondApproverId) {
//Chaque bouton est inactif et initialisé.
boolean firstApproved = firstApproverId != null;
boolean secondApproved = secondApproverId != null;
if (AUTHOR_ID.equals(loginUserId)) {
if (!firstApproved && !secondApproved) {
//Bouton Modifier, bouton Supprimer, actif
}
//Activation du bouton d'affichage des détails
} else if (FIRST_MANAGER_ID.equals(loginUserId)) {
if (!firstApproved) {
//Bouton d'approbation, bouton de renvoi, activation
}
//Activation du bouton des détails d'approbation
} else if (SECOND_MANAGER_ID.equals(loginUserId)) {
if (firstApproved && !secondApproved) {
//Bouton d'approbation, bouton de renvoi
}
//Activation détaillée du bouton d'affichage
}
}
Les problèmes liés à la façon d'écrire le code source se produisent essentiellement en raison de différences de compétences individuelles telles que "Je ne peux pas penser à une telle façon d'écrire". Je voudrais écrire régulièrement des exemples de code, y compris la signification de la révision du code source.
J'ai reçu un code de référence dans la section commentaire, je vais donc le poster. De plus, certains noms de variables ont été modifiés afin que la gestion du type Bool puisse être unifiée avec d'autres articles. Il n'y a pas d'instruction if et le contrôle d'activité des boutons est facile à comprendre.
private void SetButtonControls(string loginUserId, string firstApproverId, string secondApproverId)
{
//Premier approuvé
bool firstApproved = firstApproverId != null;
//Deuxième approuvé
bool secondApproved = firstApproved && secondApproverId != null;
//Equals peut être utilisé pour la comparaison de chaînes,==Mais la comparaison de chaînes de caractères est possible.
bool isAuthor = AuthorId == loginUserId;
bool isFirstManager = FirstManagerId == loginUserId;
bool isSecoundManager = SecondManagerId == loginUserId;
//Commande d'activation des boutons
//Bouton Modifier
bool editButtonEnabled = isAuthor && !firstApproved;
//Bouton Supprimer
bool deleteButtonEnabled = isAuthor && !firstApproved;
//Bouton d'approbation
bool approvalButtonEnabled = (isFirstManager && !firstApproved) || (isSecoundManager && !secondApproved);
//Bouton Détails
bool detailButtonEnabled = isAuthor || isFirstManager || isSecoundManager;
}
private static final String AUTHOR_ID = "ID de l'affiche";
private static final String FIRST_MANAGER_ID = "ID du premier administrateur";
private static final String SECOND_MANAGER_ID = "Deuxième ID administrateur";
protected void setButtonControls(String loginUserId, String firstApproverId,
String secondApproverId) {
//Premier approuvé
boolean firstApproved = firstApproverId != null;
//Deuxième approuvé
boolean secondApproved = firstApproved && secondApproverId != null;
boolean isAuthor = AUTHOR_ID.equals(loginUserId);
boolean isFirstManager = FIRST_MANAGER_ID.equals(loginUserId);
boolean isSecoundManager = SECOND_MANAGER_ID.equals(loginUserId);
//Commande d'activation des boutons
//Bouton Modifier
boolean editButtonEnabled = isAuthor && !firstApproved;
//Bouton Supprimer
boolean deleteButtonEnabled = isAuthor && !firstApproved;
//Bouton d'approbation
boolean approvalButtonEnabled = (isFirstManager && !firstApproved) || (isSecoundManager && !secondApproved);
//Bouton Détails
boolean detailButtonEnabled = isAuthor || isFirstManager || isSecoundManager;
}
Article suivant (collection de code un peu inquiétante)
Recommended Posts