Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a better method to structure this if statement

Tags:

c#

asp.net

It just seems a mess to me, my mind tells me there has to be a better way.

I have 6 controls on a web page.

if (printer_make_1.Text != "" && printer_model_1.Text != "" && printer_make_2.Text != "" && printer_model_2.Text != "" && printer_make_3.Text != "" && printer_model_3.Text != "")
{
  // Do something
}

What is the best/most efficient way to do this?

like image 619
James Wilson Avatar asked Dec 03 '22 04:12

James Wilson


2 Answers

You can refactor into a method, if you want to improve the readability or use the same logic elsewhere:

public Boolean AllControlsHaveAValue() {
    return (printer_make_1.Text != ""
        && printer_model_1.Text != ""
        && printer_make_2.Text != ""
        && printer_model_2.Text != ""
        && printer_make_3.Text != ""
        && printer_model_3.Text != "");
}

Then just ask:

if (AllControlsHaveAValue()) {
    // do something
}
like image 88
Yuck Avatar answered Jan 17 '23 20:01

Yuck


Restructuring starts with your data: avoid printer_make_1, printer_make_2, ...

class PrinterData
{
   public string Make { get; set; }
   public string Model { get; set; }
}

PrinterData[] printers = new PrinterData[3];  //or use a List<>

printers[0] = new PrinterData { Make = "PH", Model = "1A" };
...

if (printers.All(p => ! (p.Make == "" || p.Model == "")) )
  ...
like image 36
Henk Holterman Avatar answered Jan 17 '23 19:01

Henk Holterman