Article 5GJJV CodeSOD: The Truth and the Truth

CodeSOD: The Truth and the Truth

by
Remy Porter
from The Daily WTF on (#5GJJV)

When Andy inherited some C# code from a contracting firm, he gave it a quick skim. He saw a bunch of methods with names like IsAvailable or CanPerform..., but he also saw that it was essentially random as to whether or not these methods returned bool or string.

That didn't seem like a good thing, so he started to take a deeper look, and that's when he found this.

public ActionResult EditGroup(Group group){string fleetSuccess = string.Empty;bool success = false;if(action != null){fleetSuccess = updateGroup(group);}else{fleetSuccess = Boolean.TrueString;}success = updateExternalGroup(group);fleetSuccess += "&&&" + success;if (fleetSuccess.ToLower().Equals("true&&&true")){GetActivityDataFromService(group, false);}return Json(fleetSuccess, JsonRequestBehavior.AllowGet);}

So, updateGroup returns a string containing a boolean (at least, we hope it contains a boolean). updateExternalGroup returns an actual boolean. If both of these things are true, than we want to invoke GetActivityDataFromService.

Clearly, the only way to do this comparison is to force everything into being a string, with a &&& jammed in the middle as a spacer. Uh, for readability, I guess? Maybe? I almost suspect someone thought they were inventing their own "and" operator and didn't want it to conflict with & or &&.

Or maybe, maybe their code was read aloud by Jeff Goldblum. "True, and-and-and true!" It's very clear they didn't think about whether or not they should do this.

buildmaster-icon.png [Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today! TheDailyWtf?d=yIl2AUoC8zAYzvcJhet6iM
External Content
Source RSS or Atom Feed
Feed Location http://syndication.thedailywtf.com/TheDailyWtf
Feed Title The Daily WTF
Feed Link http://thedailywtf.com/
Reply 0 comments