Yes, I agree with that :). Lunch time? Damn, I have to wait another 2 hours till the dinner time :D
2009/12/17 Jamie Fraser <[email protected]> > 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. >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
