Like I said - we'll have to agree to disagree on the technical issue in hand - I think that, when you have a property, you use it internally & externally for various (mentioned reasons).
A quick google reveals a few links which support my view - http://stackoverflow.com/questions/629029/using-getters-within-class-methods Disclaimer: I use the above approach, and I think you should too. However, this being a free world, you can use whatever approach you like best :) Lunchtime :) On Thu, Dec 17, 2009 at 1:08 PM, Processor Devil <[email protected]>wrote: > 1) no > 2) it changes the meaning of the quoted section > > The worst part is I am actually attending this troll war because our dev > systems are stuck and I have nothing else to do... > > I would consider the right answer for the OP's question the one of > Cerebrus, that one is reasonable. > > --------------------------------------------huge stroke > line------------------------------------------------------------------------- > here is place for flame war > > I think your code stink like a sock of an old elephant... :P > > > 2009/12/17 Jamie Fraser <[email protected]> > >> 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. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
