Right. Don't call a method twice unless you want two potentially different results.
David -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Cory Foy Sent: Friday, July 23, 2004 7:34 AM To: Research Triangle Java User's Group mailing list. Subject: Re: [Juglist] RE: Which is more efficient? I believe the solution is to get the object you want, and then perform operations only on the initial object you received. So in the case that David mentioned: >>Object f () >>{ >> If (rand() > 0.5) return someNonNullObject; >> else return null; >>} >> >>Object x = (f() == null) ? "" : f(); You would do Object x = f(); String objectIfNull = ""; x = (x == null) ? objectIfNull : x; Or whatever would solve your business requirements. Cory Tony Spencer wrote: > I understand the dilemna you have stated. So what is the solution to the > problem? > > > >>-----Original Message----- >>From: [EMAIL PROTECTED] >>[mailto:[EMAIL PROTECTED] On Behalf Of David Spitz >>Sent: Thursday, July 22, 2004 4:01 PM >>To: 'Research Triangle Java User's Group mailing list.' >>Subject: RE: [Juglist] RE: Which is more efficient? >> >> >> >>>A benefit of the #2 approach over the #1 >> >> approach is that the variable 'formcomments' >> will not exist in a 'null' state. >> >>Actually, the #2 approach is NOT safe. There is no guarantee >>that the value returned by attr.getFormComments() will not >>change between calls (even in a single-thread environment, >>the call could cause an internal counter to increment, for >>example); it could be non-null on the first call and null on >>the second, in which case the logic fails, and worse, fails >>in an unexpected manner. Consider this pseudocode: >> >>Object f () >>{ >> If (rand() > 0.5) return someNonNullObject; >> else return null; >>} >> >>Object x = (f() == null) ? "" : f(); >> >>The resulting value of x is not predictable; it has a 50% >>change of being null or not null. >> >>This is why you should code clearly first and optimize later, >>preferably with a more scientific approach (e.g., a profiler, etc.). >> >>David >> >>-----Original Message----- >>From: [EMAIL PROTECTED] >>[mailto:[EMAIL PROTECTED] On Behalf Of Rippy, Jonathan >>Sent: Thursday, July 22, 2004 2:24 PM >>To: Research Triangle Java User's Group mailing list. >>Subject: RE: [Juglist] RE: Which is more efficient? >> >> >>I would say example #1 is potentially more efficient. >>Example #2 invokes a method on a object instance twice and >>this could result in a resource intensive operation occuring >>twice. Of course, it appears to be a simple getter method >>and it probably does not do that, but I assume you are asking >>the question in general. >> >>A benefit of the #2 approach over the #1 approach is that the >>variable 'formcomments' will not exist in a 'null' state. >>With #1 someone could come along and interject code between >>your first and second steps and cause a problem (unlikely of >>course, but it is a potential issue.) >> >> >>-- >>Jonathan Rippy >> >> >> >>-----Original Message----- >>From: Tony Spencer [mailto:[EMAIL PROTECTED] >>Sent: Thursday, July 22, 2004 2:18 PM >>To: 'Research Triangle Java User's Group mailing list.' >>Subject: [Juglist] RE: Which is more efficient? >> >> >>Sorry. My stupid email client dropped some carriage returns. >> >>Example 1: >>---------- >>String formcomments = attr.getFormComments(); >> >>formcomments = (formcomments == null) ? "" : formcomments; >> >> >>Example 2: >>---------- >>String formcomments = (attr.getFormComments()== null) ? "" : >>attr.getFormComments(); >> >>T O N Y S P E N C E R >>Notsleepy LLC >>6512 Six Forks Rd. >>Suite 502-B >>Raleigh, NC 27615 >>Phone: 919.848.0691 >>Mobile: 415.637.6481 >>[EMAIL PROTECTED] >> >> >> >>_______________________________________________ >>Juglist mailing list >>[EMAIL PROTECTED] >>http://trijug.org/mailman/listinfo/juglist_trijug.org >> >> > > > > _______________________________________________ > Juglist mailing list > [EMAIL PROTECTED] > http://trijug.org/mailman/listinfo/juglist_trijug.org > > _______________________________________________ Juglist mailing list [EMAIL PROTECTED] http://trijug.org/mailman/listinfo/juglist_trijug.org _______________________________________________ Juglist mailing list [EMAIL PROTECTED] http://trijug.org/mailman/listinfo/juglist_trijug.org
