In this post I will talk about 5 bad things that I saw in different projects. A part of them is common sense, but people forget about this.
Base class name convention
XXXBase class is defined and used as a base class. Until this point this is perfect, but what do you think about this:
Method named like the class
If you have a class named XXX, don’t define a method in your class named StartXXX, ConvertXXX. When a user uses an instance of XXX he will already know that he do the actions over XXX.
Examples:
Converter.StartConvert() – Converter.Start()
Service.StartService() – Service.Start()
Engine.StartEngine – Engine.Start()
TODO comments and production
What do you think about this?
URLs and string
When you are defining a component doesn’t use string to send urls. .NET has the Uri class for this. You will need to define a validation mechanism to check if the string represent a URL and is well defined. For a client is more clear when you have a parameter of type Uri and not a parameter of type string named serverAddress or serverUrl or serverUri …
Bizarre comment
Have fun!
Base class name convention
XXXBase class is defined and used as a base class. Until this point this is perfect, but what do you think about this:
public class XXXBase { … }
Why you defined a base class that you want to be used as a base class for other class without the abstract keyword. If you want a base class doesn’t forget to add the ‘abstract’ keyword. You can use the naming conventions but this will not stop people to create instances of your base clas..Method named like the class
If you have a class named XXX, don’t define a method in your class named StartXXX, ConvertXXX. When a user uses an instance of XXX he will already know that he do the actions over XXX.
Examples:
Converter.StartConvert() – Converter.Start()
Service.StartService() – Service.Start()
Engine.StartEngine – Engine.Start()
TODO comments and production
What do you think about this?
//TODO: Remove this hack in production
//TODO: Add logs in production
People tend to forget to check the TODOs before making a release. If you need a release of this kind, maybe you should create a task also. I saw application after one year in production with these kinds of comments. Before making a release, closing a sprint look over the TODOs.URLs and string
When you are defining a component doesn’t use string to send urls. .NET has the Uri class for this. You will need to define a validation mechanism to check if the string represent a URL and is well defined. For a client is more clear when you have a parameter of type Uri and not a parameter of type string named serverAddress or serverUrl or serverUri …
Bizarre comment
if (xxx != null)
{
// so bizarre...but if you don't, you'll ruin comms between the service and client
…
// so bizarre...but if you don't, you'll ruin comms between the service and client
…
}
Why do you add this kind of comment? Do you think that people will understand the problem? In cases like this, you should describe the problem not add a comment that will make people never to change of fix the problem. Writing code is not VOOODOO Magic.Have fun!
Comments
Post a Comment