EPiCodeSmells
My thoughts on some code smells I’ve come across. These three are the ones that tend to turn my stomach the most.
Here goes..
Class properties for easy access to MainBody, MainIntro etc.
I often see a bunch of these duplicated in all templates, often disguised in a “#region Properties”, an obvious hint that I am in for a treat..
public string MainBody
{
get
{
if(IsValue("MainBody"))
return (string) CurrentPage["MainBody"];
return String.Empty;
}
}
I have even seen code snippets in Visual Studio being used to generate these. This indicates the lack of sensible base classes. And if you want strongly typed Episerver properties, there are better ways.
Hardcoded ids in Web.config
When poking around a new project, one of the first things I generally do, is open up Web.config. I scroll down to the appSettings-element, and if I find 10+ custom keys, I can smell the lack of Admin tabs and/or Settings page.
Usually goes something like:
<add key="ContactFormPage" value="12312" />
<add key="ContactFormPageEN" value="54312" />
<add key="ProductModulePageTypeId" value="93" />
<add key="ModuleContactPageTypeId" value="38,39" />
<add key="ModulePageTypeId" value="3" />
<add key="MyCoolPageTypeId" value="42" />
<add key="CalendarEventPageType" value="11" />
<add key="DivisionStartPageTypeId" value="46" />
<add key="404PageId" value="78781" />
<add key="FileNotFoundPageId" value="12333"/>
<add key="GenericErrorPageId" value="543"/>
Episerver comes with a “Pagetype” property type. Use it.
The Utils-class
Everyone got them. At least some version of it, duplicated from one project to another, tweaked and refactored along the way. It usually contains the all familiar StripHtml(), Ellipse(), PreviewText(), MyGetPropertyWithFallbackValue().
Not really a smell perhaps, but I sort it into the DRY category.
Thoughts anyone? I am sure you have experienced your fair share of smells, perhaps worse than mine…?
Comments