On Sun, Apr 01, 2007 at 01:29:59PM +0100, Andy Armstrong wrote:
> I'm going to start using this once I can optimise it. It takes too
> long to run at the moment
>
> sub if_then_else {
> my ($cond, $true, $false) = @_;
> return if_then_else(!$cond, $false, $true);
> }
>
> You pass it a boolean expression and two closures. For some reason it
> takes a long time to execute but I'm sure I can sort that out.
The trouble here is that your code is at once too imperative, too
functional and too logical. In other words, you have completely
forgotten about object orientation.
Based on the fundamental OO tenet that every condition indicates a
missed opportunity for creating a subclass, I propose the following new
kwalitee metric:
uses_oo
Shortcoming: Your code contains conditional statements (if, unless,
or, ?: and so forth). This indicates that you do not have a firm
grasp of OO principles and probably need to reread the GoF book.
Remedy: Replace all your conditional statements with ploymorphic
methods and subclasses. Make free use of the prototype and
decorator patterns.
--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net