I used to wonder about public fields vs. properties.

But it doesn't seem like much of an issue now that you can just write it as
a one liner
string Name { get; set; }
(or by typing  *prop*  and hitting tab twice)

Since that new auto backed properties are so easy, I just use them as my
default because you can then easily change the functionality at a later
stage (like adding logging, property changed events, etc).

-David Burela

On 25 August 2010 13:09, mike smith <meski...@gmail.com> wrote:

> About the only time fields might be preferable is where you want to read a
> file (a bitmap, say) and then cast it to a class. A lot of the lower-level
> classes in MFC did that.  CRect, CPoint, etc.
>
> On 25 August 2010 12:07, Mark Ryall <mark.ry...@gmail.com> wrote:
>
>> If you create some library that expose anemic DTO classes that have public
>> and mutable fields and no behaviour then you'll have great difficulty ever
>> taking that away.  That applies even if you're the only consumer.
>>
>> There are certainly some occasions where this is justifiable (for
>> serialising objects or transfer or persistance or whatever - ORMs usually
>> require these unfortunate sort of classes) but seems to mostly defeat the
>> purpose of OO.
>>
>> I prefer languages (like ruby or smalltalk for instance) that don't give
>> you the option of exposing the internal state of classes (without some
>> degree of violence) unless you create methods (which is all properties
>> really are).
>>
>> That's not because i'm a purist - there are just fewer things to worry
>> about when your classes are mostly immutable except via behaviours you
>> choose to add to them.
>>
>> On Wed, Aug 25, 2010 at 11:54 AM, Jeff Sinclair <
>> jeff.sinclair.em...@gmail.com> wrote:
>>
>>> True, with properties, changes can be completed maintaining binary
>>> compatibility.
>>> But really how often do you have an assembly where binary compatibility
>>> is
>>> actually an issue?
>>> Sometime sure, but I'm thinking it's more often the exception than the
>>> rule.
>>>
>>> Adding properties in later maintains source compatibility, and generally
>>> I've found that's more than enough.
>>>
>>> Jeff
>>>
>>> -----Original Message-----
>>> From: ozdotnet-boun...@ozdotnet.com [mailto:
>>> ozdotnet-boun...@ozdotnet.com]
>>> On Behalf Of Mark Hurd
>>> Sent: Wednesday, 25 August 2010 9:28 AM
>>> To: ozDotNet
>>> Subject: Re: Properties
>>>
>>> The thing with properties is that once you have them, changes can be
>>> completed without changing the interface, including the binary
>>> compatibility
>>> of public interfaces.
>>>
>>> Nevertheless, if your class of variables is not public I too would
>>> consider
>>> just using fields.
>>> --
>>> Regards,
>>> Mark Hurd, B.Sc.(Ma.)(Hons.)
>>>
>>> On Wed, Aug 25, 2010 at 10:43 AM, Jeff Sinclair
>>> <jeff.sinclair.em...@gmail.com> wrote:
>>> > Can some one tell me why people get so worked up about all fields
>>> > being private and accessed only via properties.
>>> >
>>> > If you have a class which is only used essentially as group of
>>> > variables, eg to put into a data structure like a tree or something
>>> > then why not public fields?
>>> >
>>> > Do all those properties really add any value?
>>> >
>>> > Jeff
>>>
>>>
>>
>
>
> --
> Meski
>
> "Going to Starbucks for coffee is like going to prison for sex. Sure,
> you'll get it, but it's going to be rough" - Adam Hills
>

Reply via email to