Instrukcja warunkowa

Instrukcja warunkowa
S2
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • Postów:91
0

Może ktoś ma jakiś inny pomysł na zapis poniższego kodu

Kopiuj
if (tapValue > 0 && tapValue <= 4)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(tapValue * 12.50) + " zł/m-c";

                        }
                        else if (tapValue == 5)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(57.0) + " zł/m-c";
                        }
                        else if (tapValue == 6)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(58.0) + " zł/m-c";
                        }
                        else if (tapValue == 7)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(59.0) + " zł/m-c";
                        }
                        else if (tapValue == 8)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(60.0) + " zł/m-c";
                        }
                        else if (tapValue == 9)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(61.0) + " zł/m-c";
                        }
                        else if (tapValue == 10)
                        {
                            label2.Text = "zapłacisz: " + Convert.ToString(62.0) + " zł/m-c";
                        }
                        else
                        {
                            label2.Text = "";
                        }; 

Głównie chodzi mi od pozycji 6 do 10, czy jest możliwość innego rozpisania tego (krótszego).

0

Jeżeli wartości "zapłacisz..." są stałymi to co za problem je wyliczyć z enumu?

Kopiuj
 
if(tapValue > 4) 
      label2.Text = 52 + tabValue;

Ale nawet taki kod jest brzydki. Sztywne wpisywanie takich wartości to proszenie się o kłopoty.

S2
o widzisz jakoś nie zauwazyłem, że to "52 + tabValue" :) dzieki
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:7 dni
  • Lokalizacja:Wrocław
4

Może coś takiego?

Kopiuj
Func<double, string> formatText = value => string.Format("zapłacisz: {0:D2} zł/m-c", value);
            
if (tapValue > 0 && tapValue <= 4)
{
    label2.Text = formatText(tapValue * 12.5);
}
else if (tapValue <= 10)
{
    label2.Text = formatText(tapValue + 52);
}
else
{
    label2.Text = string.Empty;
}
edytowany 1x, ostatnio: somekind
JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
0

Albo switch.

[EDIT]

Poza tym skąd wywnioskowaliście, że różnica to 52? Tak jest teraz, w tym przypadku. Ale za miesiąc mogą być już zupełnie inne liczby. Tak naprawdę to te wartości powinny być brane z jakiejś bazy.

edytowany 1x, ostatnio: Juhas
fasadin
jaka roznica miedzy switchem a ifami?
JU
czytelność kodu. Patrz jeszcze edit
fasadin
zadna czytelnosc jak zamienisz case na elseif. Na podstawie tego co wiemy to jedyne rozsadne rozwiazanie to rozwiazanie @somekind
JU
Czytelność jak zamienię drabinkę elseif na case.
Luki91
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Lokalizacja:Bytom
  • Postów:81
0

Ja bym co najwyżej tą stałą formułkę zapisał do jakiegoś stringa. Pierwszy wariant "if", potem "else" i switch, wygląda przyjazniej. Może kod jest trochę przydługawy, ale przynajmniej czytelny. Jakbyś miał tych wariantów 100 to bym się wtedy zaczął przejmować, a tak przynajmniej za miesiąc będziesz wiedział co ten fragment kodu robi.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.