vRO Coding Pet Hate – Badly formed IF statements

I was optimising some vRO actions today and came across something that always annoys me when I see it, badly formed IF statements (for one of a better description). When I write my code, I have learned that formatting and consistency is key to produce code that is easier to read and understand. I also like to keep things simple. However, I am constantly surprised at how much sloppy coding practices I encounter from the code that is shipped with vRO. Here are a couple of small examples of the kind of thing I am talking about.

if (ip == null) throw  "ReferenceError: ip cannot be null";
if (netBIOS != null)
    ipSettings.netBIOS = VcCustomizationNetBIOSMode.fromString(netBIOS.name) ;

Both of the above statements are pretty much identical in how they function. They are checking if a given variable is null (or not) and if the condition returns ‘true’ then execute the following statement. As you can see from the code snippets above, the structure of these statements are different. Why? Because this is a valid way to write conditionals in JavaScript, if you are only performing an action when the result is ‘true’. That said, it doesn’t mean we should use it in practice. The reason for this, is that it forces a lack of consistency in your code (which you can already see from the code above).

If we wanted to add another action for a result that returns ‘false’, we would need to add an ‘else’ clause. With the conditional statements above, we wouldn’t be able to do this as it would require adding curly braces so that the interpreter knows when to apply the correct code based on the result. Here is an example.

if (condition) {
    execute_if_true;
} else {
    execute_if_false;
}

This is the structure that I like to adhere to every time I write a conditional. I also apply the ‘4 spaces rule’ for my indentation (and don’t get me started on the use of tab!). The two code snippets revised using this structure would look like:

if (ip == null) {
    throw  "ReferenceError: IP cannot be null";
}
if (netBIOS != null) {
    ipSettings.netBIOS = VcCustomizationNetBIOSMode.fromString(netBIOS.name);
}

I believe this is a much neater approach for the sake of a few more lines, which aren’t worth saving if the code is more readable.

0 0 votes
Article Rating

Related Posts

Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Steve Mortimer
Steve Mortimer
6 years ago

hmmm how about

if (condition)
{
execute_if_true;
}
else
{
execute_if_false;
}