neubyr wrote:
> Thank you for your comments Steven.
> 
> Yes, I think I should remove property deleter in this case.
> 
> I would like to use this Person class in another class. For example, if 
> Person class is 'model' in a
> small MVC-style web application, then where should I place my validation. A 
> view form will be passing
> parameters to a controller which will create and write Person objects/models. 
> Should the validation be
> in place at all three levels?
> 
> I am inclined towards adding integer validation in views, but I am not sure 
> where should I add it in a
> controller class. Also, it's easy to add integer validation in view form 
> (javascript), but what if I
> have a more complex format - X509 certificate or  some other file-type 
> related validation? Is it OK to
> validate them only in property setter methods?
> 

Where I would place validation depends a bit on the project. As I see it there 
are two types of 
validation, simple and complex. Simple validation is something like "is this an 
int?" or "did
they fill in all parameters?" and should be done in the form(view). Complex 
validation is more of
a logical/business validation like "is using a blowhole a valid operation for 
Animal type Giraffe?" 
This can be done where you do an action (e.g. creating Person class) or in the 
class/module itself 
(controller). If you instantiate Person objects from various different places 
in code (assuming no 
code duplication) then I would either create a validation function or add it to 
the class, but if you 
only have one place where Person objects are created I would add the validation 
there with comments on 
validation rules or reference links.

I tend to favor validation functions where I can give all parameters and it can 
return either bool, 
or an appropriate error message. My use case is where objects do not usually 
need to change once 
created (i.e. I have all input in advance). If I thought the objects would 
change frequently, 
then adding the validation to the setter makes sense. You can also combine the 
two ideas by 
adding the validation to the setters and having a wrapper validation function 
that creates a Person
object and then sets the params (returning either the new object or error 
message). 


~Ramit


This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to