Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is validation a cross cutting concern?

Tags:

validation

aop

Some of my coworkers consider validation as an example of a cross cutting concern and think Aspect Oriented Programming is a good way to handle validation concerns. To use PostSharp notation they think something like this is a good idea:

[InRange(20.0, 80.0)]
public double Weight
{
    get { return this.weight; }
    set { this.weight = value; }
}

My opinion is that validation is an inherent part of an algorithm and there is no need to push it behind the scenes using AOP. However it is much like a gut feeling and I have not a very clear justification for it.

When do you think it is a good idea to handle validation with AOP and when it is better to handle it inline with your main code?

like image 308
hhsaffar Avatar asked Nov 04 '22 00:11

hhsaffar


1 Answers

Looks a lot like Microsoft DataAnnotations as used by MVC.

You aren't really "pushing it behind the scenes", since all the relevant information is right there in the attribute constructor. You're just pushing the noisy boilerplate behind the scenes and into its own class. You also no longer need an explicit backing field, and you can just use auto-getters and setters. So now, 8 lines (or more) of code can be reduced to 1 line and 1 attribute.

I think that if your alternative is to put some validation code inside of the setter, and you do that multiple times in your project to where it becomes repetitive boilerplate, then yes, I think it's a valid cross-cutting concern and appropriate for using PostSharp. Otherwise, I don't think one or two places justify bringing in a third party tool just yet.

like image 81
Matthew Groves Avatar answered Dec 30 '22 00:12

Matthew Groves