7
votes

Comment puis-je rendre ce code plus optimisé

Comment puis-je optimiser ce code? Je n'aime pas avoir une déclaration de cas, est-ce que je peux améliorer ce code? XXX


0 commentaires

6 Réponses :


32
votes

assez facile. Vous ne faites jamais un élément visible seulement en fonction de l'option de cas, il suffit de définir la visibilité comme suit:

pnlDate.Visible = (selVal == "date"); 
pnlSubject.Visible = (selVal == "subject");
pnlofficer.Visible = (selVal == "officer");
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = (selVal == "status");    


3 commentaires

J'aimerais probablement ajouter des parenthèses pour le rendre plus lisible cependant.


Je voudrais supprimer les paranthèses, car c'est comme ça que Styecop me guide à la lumière ;-)


En plus de cela, vous pouvez: désactiver l'état de vue sur Pnlcia et PnLMedia, définissez la visibilité = FALSE comme valeur par défaut dans votre ASPX. Ainsi, vous pouvez vous débarrasser des 2 .Visible = de fausses lignes. Essentiellement sur chaque post-retours visible sera toujours défini sur FALSE par défaut pour le panneau, sauf si elle est définie sur FALSE.



5
votes
protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e)
            { 
                string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();
                        pnlDate.Visible = false;
                        pnlSubject.Visible = false;
                        pnlofficer.Visible = false;
                        pnlCIA.Visible = false;
                        pnlMedia.Visible = false;
                        pnlStatus.Visible = false;
                switch (selVal)
                {
                    case "date":
                        pnlDate.Visible = true;                    
                        break;

                    case "subject":
                        pnlSubject.Visible = true;
                        break;

                    case "officer":
                        pnlofficer.Visible = true;
                        break; 
                    case "status":
                        pnlStatus.Visible = true;
                        break;  
                }

            }

0 commentaires

9
votes

Autre moyen:

// set everything to false   
Dictionary<string, type> d = new Dictionary<string, type>()
{
    {"date", pnlDate},
    {"subject", plnSubject},
    {"officer", plnOfficer},
    {"status", plnStatus}
};

d[selVal].Visible = true;


1 commentaires

Qu'est-ce qu'il y a avec le bowvote? Je sais que le code ne fait pas exactement la même chose que l'original; C'est juste pour montrer l'idée.



3
votes

Vous pouvez le faire:

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) { 
  string selVal = ddlFilterResultBy.SelectedValue.ToString();

  pnlDate.Visible = String.Equals(selVal, "date", StringComparison.OrdinalIgnoreCase);
  pnlSubject.Visible = String.Equals(selVal, "subject", StringComparison.OrdinalIgnoreCase);
  pnlofficer.Visible = String.Equals(selVal, "officer", StringComparison.OrdinalIgnoreCase);
  pnlCIA.Visible = String.Equals(selVal, "cia", StringComparison.OrdinalIgnoreCase);
  pnlMedia.Visible = String.Equals(selVal, "media", StringComparison.OrdinalIgnoreCase);
  pnlStatus.Visible = String.Equals(selVal, "status", StringComparison.OrdinalIgnoreCase);
}


0 commentaires

2
votes

Il y a une différence entre l'optimisation et l'amélioration de la lisibilité. Je suppose donc que vous envisagez d'améliorer la lisibilité plus d'optimisation n'est pas vraiment nécessaire ici. Il n'y a pas d'algo ici que vous pouvez syntoniser pour rendre cela plus rapide par une période significative.

Réponse 1 et 2 sera mon choix d'améliorer la lisibilité


0 commentaires

0
votes

Je pense que vous avez besoin d'un tabcontrol ici ..

Il suffit de masquer les onglets si vous n'aimez pas celles-ci et que vous indiquez la page via le code.

L'avantage est que vous pourrez éditer et voir l'interface graphique au designtime.

Ce sera beaucoup plus facile à entretenir.


1 commentaires

J'utilise jQuery avec Div, mais je finis à avoir des problèmes que vous pouvez voir la question que j'ai postée ici Stackoverflow.com/questions/3367166/... et je dépose l'idée d'utiliser jQuery / div