The rest of your message doesn't change the meaning of the quoted section. You are telling people how to do something.
I am telling people how I think they should do something. Both are the same - your issue isn't anything to do with how I'm phrasing it, it is because you don't agree with the concept but can't rationalise an argument to counter it. On Thu, Dec 17, 2009 at 12:54 PM, Processor Devil <[email protected] > wrote: > REALLY? And did you read it all? > > inside the same class use i = me._intID :) > class properties are used to set or get the variable content out of the > current class scope, but yes, either works > EITHER WORKS > > > 2009/12/17 Jamie Fraser <[email protected]> > >> Actually, re-reading your earlier post, you're being a complete hypocrite. >> You said >> >> >> "inside the same class use i = me._intID :)" >> >> Not even a should - simply prescribing to others how they should code. >> That is far worse (by your definition) than me saying Should! >> >> >> On Thu, Dec 17, 2009 at 12:48 PM, Jamie Fraser <[email protected]>wrote: >> >>> No, I understand exactly what you mean, but I feel that is the way that >>> people SHOULD do it, hence my use of the word. >>> >>> I didn't find your earlier comments either funny or productive regarding >>> my ability (or you perceiving my "lack of" ability), and I like to think >>> I've been fairly successful so far in my career as a Developer, and if *I* >>> think something should be done in a particular way, I'm happy to tell this >>> to others. Whether they do this or not is entirely up to them. However, this >>> is becoming self-perpetuating, as you think I *shouldn't* tell people what I >>> think they *should* do. >>> >>> Let's just agree to disagree, and try not to throw any "jokes" around >>> later. >>> >>> >>> On Thu, Dec 17, 2009 at 12:25 PM, Processor Devil < >>> [email protected]> wrote: >>> >>>> again and again... Yes, many open source projects uses that... and many >>>> open source project are also nothing more but just spaghetti code (try to >>>> search for SpectateSwamp Desktop Search, you will laugh for sure), but... >>>> why the hell do I need some less skilled programmer to change encryption >>>> key >>>> and IV vector properties in my class when there is function which does both >>>> and it works as it should? Sometimes you just need to change MORE than just >>>> one variable to make the code works, do you want end-programmer to do it >>>> one >>>> by one and let him make a mistake or omit something or you will give him >>>> just function that will change it internally and all for sure? >>>> >>>> P.S. about the Open Source projects... so if they do it then it is the >>>> only way? All I wanted you to do next time was not to use word SHOULD, is >>>> it >>>> hard to understand? >>>> >>>> >>>> 2009/12/17 Jamie Fraser <[email protected]> >>>> >>>>> >>>>> >>>>> On Thu, Dec 17, 2009 at 11:38 AM, Processor Devil < >>>>> [email protected]> wrote: >>>>> >>>>>> well, in read-only variables you don't need to specify the Set part at >>>>>> all... >>>>>> another thing I was about also was that specifying logic inside the >>>>>> property is not a really good practice (it is always better to create >>>>>> some >>>>>> private method and call it from inside, it saves time and it is better >>>>>> for >>>>>> reusability as well). >>>>>> >>>>> >>>>> How do you set the property then? By accessing the field directly? I >>>>> don't like that. If you get using a property, you should set using a >>>>> property. >>>>> >>>>> And there is NOTHING wrong with having some logic within the property - >>>>> take a look through the source code of any major Open Source project and >>>>> see >>>>> how they do it. >>>>> >>>>> >>>>> >>>>>> And the exact thing I wanted to hear was this: "In general, I find it >>>>>> good practice to use Get Properties (where they exist) as a default". >>>>>> Yes, >>>>>> you find it a good practice, but it is not general good practice, you >>>>>> should >>>>>> NOT say anyone that he SHOULD use it. It is also the reason why this >>>>>> thread >>>>>> started... Bunch of programmers who uses this practice told him that he >>>>>> SHOULD do it their way and he got confused... It is your good practice, >>>>>> it >>>>>> is not my good practice, but I am not going to force you to do it my way >>>>>> ;-) >>>>>> >>>>>> Sorry if I do look like being upset, the reason is that I am upset, I >>>>>> have to attend LiveMeeting which is 2 hours in length and sound doesn't >>>>>> work >>>>>> as it should... >>>>>> >>>>>> 2009/12/17 Jamie Fraser <[email protected]> >>>>>> >>>>>>> >>>>>>> >>>>>>> Yes, of course if property has some logic which checks the set value >>>>>>>> or count the get value from something then yes, you should use the >>>>>>>> property, >>>>>>>> but why to use it when it contains only eg get {return this.value} ? >>>>>>>> and one >>>>>>>> more thing about your message: >>>>>>>> >>>>>>> >>>>>>> In general, I find it good practice to use Get Properties (where they >>>>>>> exist) as a default. They might only say >>>>>>> >>>>>>> return _abc; >>>>>>> >>>>>>> but then they might say >>>>>>> >>>>>>> if(x || y) { _abc = _service.Refresh(); } else { _abc = >>>>>>> service.Load(_id); } >>>>>>> return _abc; >>>>>>> >>>>>>> And they also might *change* from example 1 to example 2. If you >>>>>>> consistently use the Get Property, if the logic changes, your code will >>>>>>> still work. Remember - another developer might change the logic >>>>>>> contained in >>>>>>> the property but NOT check the the rest of the code for where it is >>>>>>> used. >>>>>>> >>>>>>> So, elsewhere in the class, if you say >>>>>>> >>>>>>> int a = _abc; >>>>>>> >>>>>>> Then your code breaks. >>>>>>> >>>>>>> But if you say >>>>>>> >>>>>>> int a = PropertyABC; >>>>>>> >>>>>>> Then your code continues working. It is a safety net - win/win, if >>>>>>> you will. If the property only returns _abc, then the compiler will >>>>>>> inline >>>>>>> this to int a = _abc anyway, so there is no performance hit. >>>>>>> >>>>>>> >>>>>>> >>>>>>>> -If the property is read-only, then there is a reason for this (i.e. >>>>>>>> logic already exists internally to set the value of the underlying >>>>>>>> field) >>>>>>>> and that logic is? Sorry, but I don't quite understand that, coding >>>>>>>> classes always means to create some its own logic and how does look a >>>>>>>> logic >>>>>>>> to set the variable? Maybe this.variable = value? Oh no, sry, you >>>>>>>> can't, you >>>>>>>> must use property for this... but property is read-only? Damn, so there >>>>>>>> already MUST be some logic that sets it... >>>>>>>> --that was test of some irony, don't get it personally ;-) >>>>>>>> >>>>>>>> >>>>>>> I don't really get what you mean here. >>>>>>> >>>>>>> In the case of a read-only variable, you want to prevent *external* >>>>>>> classes from changing the value of the field. Therefore, you do >>>>>>> something >>>>>>> like >>>>>>> >>>>>>> public string Name >>>>>>> { >>>>>>> get >>>>>>> { >>>>>>> return _name; >>>>>>> } >>>>>>> private set >>>>>>> { >>>>>>> _name = value; >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> And you use the property as normal. >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >
