We return to Virginia N’s refactoring efforts (previously: here, and here).
This code is elegant in its stupidity, combining two anti-patterns in one glorious, “No, don’t do that, whyyyyyyyyyy!”. To wit, the for-switch, and the “build SQL statements through string concatenation”:
for (int i = 0; i < 16; i++)
{
StringBuilder commandText = new StringBuilder();
command = new OracleCommand();
switch (i)
{
case 0:
commandText.Append(searchbuyer);
parameter = new OracleParameter(":BUYER_DEP", OracleDbType.Char, 2);
parameter.Value = depBuyer;
command.Parameters.Add(parameter);
break;
case 1:
commandText.Append(searchStock);
break;
case 2:
commandText.Append(searchArbo1+"E"+searchArbo2);
break;
case 3:
commandText.Append(searchArbo1+"V"+searchArbo2);
break;
case 4:
commandText.Append(searchArbo1+"M"+searchArbo2);
break;
case 5:
commandText.Append(searchArbo1+"P"+searchArbo2);
break;
case 6:
commandText.Append(searchArbo1+"S"+searchArbo2);
break;
case 7:
commandText.Append(searchArbo1+"O"+searchArbo2);
break;
case 8:
commandText.Append(searchArbo1+"T"+searchArbo2);
break;
case 9:
commandText.Append(searchArbo1+"A"+searchArbo2);
break;
case 10:
commandText.Append(searchArbo1+"I"+searchArbo2);
break;
case 11:
commandText.Append(searchDemandeur);
break;
case 12:
commandText.Append(searchDoc);
break;
case 13:
commandText.Append(searchForm);
break;
case 14:
commandText.Append(searchCertif);
break;
case 15:
commandText.Append(searchFormV);
break;
}
//… use the query
}
And for bonus points, this takes a round trip to the database for every iteration of the loop, for 16 hits per search. EVMPSOTAI, indeed.
[Advertisement]
BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!