Where should the line between property and method be?
        Posted  
        
            by Catskul
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Catskul
        
        
        
        Published on 2010-03-12T22:55:36Z
        Indexed on 
            2010/03/12
            22:57 UTC
        
        
        Read the original article
        Hit count: 239
        
For many situations it is obvious whether something should be a property or a method however there are items that might be considered ambiguous.
Obvious Properties:
- "name"
 - "length"
 
Obvious Methods:
- "SendMessage"
 - "Print"
 
Ambiguous:
- "Valid" / "IsValid" / "Validate"
 - "InBounds" / "IsInBounds" / "CheckBounds"
 - "AverageChildValue" / "CalcAverageChildValue"
 - "ColorSaturation" / "SetColorSaturation"
 
I suppose I would lean towards methods for the ambiguous, but does anyone know of a rule or convention that helps decide this? E.g. should all properties be O(1)? Should a property not be able to change other data (ColorSaturation might change R,G,B values)? Should it not be a property if there is calculation or aggregation?
Just from an academic perspective, (and not because I think it's a good idea) is there a reason not to go crazy with properties and just make everything that is an interrogation of the class without taking an argument, and everything that can be changed about the class with a single argument and cant fail, a property?
© Stack Overflow or respective owner