A New Internet Library: Add Your Website/Blog or Suggest A Website/Blog to our Free Web Directory http://anil.myfunda.net.

Its very simple, free and SEO Friendly.
Submit Now....

Wednesday, August 6, 2008

Rules for Spartan Programmers

A month ago, Jeff Atwood (Coding Horror) wrote a blog post about Spartan Programming. The idea is to tend toward minimalism coding style: Minimalism isn't always the right choice, but it's rarely the wrong choice.

 

I figured out that many of Spartan Programming tenets can be expressed as CQL rules:

 

Horizontal complexity. The depth of nesting of control structures.

WARN IF Count > 0 IN SELECT METHODS WHERE ILNestingDepth > 3

 

Vertical complexity. The number of lines or length of code (all routines, and and preferably larger software units such as classes fit within a single screen).

WARN IF Count > 0 IN SELECT METHODS WHERE NbLinesOfCode > 15

 

Parameters. The number of parameters to a routine or a generic structure.

WARN IF Count > 0 IN SELECT METHODS WHERE NbParameters > 4

 

Variables

WARN IF Count > 0 IN SELECT METHODS WHERE NbVariables > 4

 

Conditionals. The number of if and multiple branch switch statements.

WARN IF Count > 0 IN SELECT METHODS WHERE CyclomaticComplexity > 7

 

 

Minimize visibility of identifiers (what I call Optimal Encapsulation).

WARN IF Count > 0 IN SELECT METHODS WHERE CouldBePrivate

This applies also to types and fields and to any non-public visibility level, for example.

WARN IF Count > 0 IN SELECT TYPES WHERE CouldBeInternal 

 

 

Minimize variability of variables. Strive to make fields read-only, methods pure and types immutable (see also Immutable types: understand their benefits and use them).


Immutables fields that could be declared with the readonly keyword. 

WARN IF Count > 0 IN SELECT FIELDS WHERE 
IsImmutable AND !IsInitOnly 

 

Immutable types that could be tagged with a ImmutableAttribute.

WARN IF Count > 0 IN SELECT TYPES WHERE IsImmutable AND
!HasAttribute "OPTIONAL:NDepend.CQL.ImmutableAttribute"

 

Pure methods that could be tagged with a PureAttribute. 

WARN IF Count > 0 IN SELECT METHODS WHERE   
  
!HasAttribute "OPTIONAL:NDepend.CQL.PureAttribute" AND 
  
!ChangesObjectState AND !ChangesTypeState AND
  
NbLinesOfCode > 0

 

 

Use annotations or restrictions whenever possible: Types that could be declared as sealed (see also Rambling on the sealed keyword)

WARN IF Count > 0 IN SELECT TYPES WHERE 
IsClass AND NbChildren == 0 AND !IsSealed


Source Click Here.

No comments:

Post a Comment

Post your comments here:

Originals Enjoy