Techniques to re-factor garbage and maintain sanity?
- by Incognito
So I'm sitting down to a nice bowl of c# spaghetti, and need to add something or remove something... but I have challenges everywhere from functions passing arguments that doesn't make sense, someone who doesn't understand data structures abusing strings, redundant variables, some comments are red-hearings, internationalization is on a per-every-output-level, SQL doesn't use any kind of DBAL, database connections are left open everywhere...
Are there any tools or techniques I can use to at least keep track of the "functional integrity" of the code (meaning my "improvements" don't break it), or a resource online with common "bad patterns" that explains a good way to transition code? I'm basically looking for a guidebook on how to spin straw into gold.
Here's some samples from the same 500 line function:
protected void DoSave(bool cIsPostBack) {
//ALWAYS a cPostBack
cIsPostBack = true;
SetPostBack("1");
string inCreate ="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
parseValues = new string []{"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};
if (!cIsPostBack) { //.......
//....
//....
if (!cIsPostBack) {
} else {
}
//....
//....
strHPhone = StringFormat(s1.Trim());
s1 = parseValues[18].Replace(encStr," ");
strWPhone = StringFormat(s1.Trim());
s1 = parseValues[11].Replace(encStr," ");
strWExt = StringFormat(s1.Trim());
s1 = parseValues[21].Replace(encStr," ");
strMPhone = StringFormat(s1.Trim());
s1 = parseValues[19].Replace(encStr," ");
//(hundreds of lines of this)
//....
//....
SQL = "...... lots of SQL .... ";
SqlCommand curCommand;
curCommand = new SqlCommand();
curCommand.Connection = conn1;
curCommand.CommandText = SQL;
try {
curCommand.ExecuteNonQuery();
} catch {}
//....
}
I've never had to refactor something like this before, and I want to know if there's something like a guidebook or knowledgebase on how to do this sort of thing, finding common bad patterns and offering the best solutions to repair them. I don't want to just nuke it from orbit,