现在的位置: 首页 > 综合 > 正文

【收藏】An advent of unconditional quality code

2012年12月09日 ⁄ 综合 ⁄ 共 3004字 ⁄ 字号 评论关闭

原文地址:An advent of unconditional quality code

This blog entry invites you to an experiment in code. It’s an
experiment that runs four weeks and can be performed secretly even at
your workplace. It might improve the way you think about conditional
statements in an object oriented programming language. You don’t need
any special hardware or setup, just the will to change your coding style
a bit each week.

The experiment

Beginning with this year’s advent (a season of the christian
religion), you are asked to omit one type of conditional statement each
week while programming your regular code. The omitted statements add up,
so that you have to spare four different statements in the week before
christmas. There is no relation to christmas (or religion) other than
it’s a four week period at the end of the year, which is the perfect
timeframe for the experiment. And you might buy yourself a little
present for christmas if you succeeded at the experiment (idea: a new programming book
).

The four stages

For every stage, you are asked to write your normal code without a
specific statement. It is perfectly valid to use semantically equivalent
code constructs to achieve the same goal. This experiment is even more
successful if you are creative and diversified in your variations of the
original statement. Remember that the stages add up. On the fourth
stage, you are asked to use none of the statements mentioned below.

  • Stage 1 (first week): Don’t use “else”
  • Stage 2 (second week): Don’t use the conditional operator “?:”
  • Stage 3 (third week): Don’t use “switch”
  • Stage 4 (fourth week): Don’t use “if”

You are not asked to change existing code to conform to these
restrictions, except you need to work on the lines that contain the
prohibited statements. You should apply the rules to your new code
rigorously, though.

Explanation of stage 1 (Don’t use “else”)

This rule bans all the different occurrences of the else-branch to
your if-statements. It includes every “else if” or “elsif” your
programming language might provide. The rationale behind the rule can be
found in the Object Calisthenics
, rule #2 by Jeff Bay. Here is an explanation of it by Being Cellfish
.

Explanation of stage 2 (Don’t use the conditional operator “?:”)

Elvis is dead. Let this resemblance to his hairdo rest for a week,
too. It contains a hidden else statement that is restricted since stage
1. Another rationale is that the conditional operator isn’t very easy to
read/grasp if stretched out a long line.

Explanation of stage 3 (Don’t use “switch”)

A switch (or case, or select) statement is nothing but a big if-else
cascade. It’s handy sometimes, but can be replaced by a lookup table
(like a hashmap) virtually everytime . In Martin Fowler’s book
“Refactoring”, the switch statement counts as its own code smell
category. You should try to live without it for a week. If you need
inspiration, try this article on how to avoid it.

Explanation of stage 4 (Don’t use “if”)

Yes, you didn’t misread. There is a whole campaign
that tries to avoid the if-statement altogether. Read their website for inspiration on how
to survive this week. Maybe you might make new friends with
polymorphism and some other implicit conditional structures. Remember,
this is a short week just before christmas. Try it, you might be
surprised how easy it looks with hindsight.

Ready, steady, go!

This experiment starts with the first advent at Sunday, 28.11.2010.
Every stage lasts for one week and adds up to the previous stages. The
experiment ends at christmas.

Good luck! And if you’re done with it, drop us a comment with your experiences.

 

 

 

抱歉!评论已关闭.