I don't always agree with Bob Martin's Clean Code Tip #12: Eliminate Boolean Arguments - probably because the mathematician in me believes that there are such things as functions of a boolean value - but I came across an example in a WinForms app today where I'd apply it.
[csharp]
void FindApplicant(int id)
{
processUIChange(true);
applicant= getTheApplicantFromDataLayer(id);
processUIChange(false);
}
[/csharp]
turned out to mean:
[csharp]
void ProcessUI(bool processing)
{
if(processing)
{
this.Enabled=false;
}
else
{
... do a whole load of stuff
}
}
[/csharp]
which would have been easier to read as:
[csharp]
void FindApplicant(int id)
{
DisableUIWhileUpdating();
applicant= getTheApplicantFromDataLayer(id);
UpdateUIAfterDataChange();
}
void DisableUIWhileUpdating()
{
this.Enabled=false
}
void UpdateUIafterDataChange()
{
...do a whole load of stuff
}
[/csharp]