cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hugi Thordarson <h...@karlmenn.is>
Subject Re: get-prefix in DataObjects
Date Fri, 24 Jul 2015 16:23:29 GMT
Hi all and thanks for the replies!

The “get” prefix may help when interoperating with Tapestry, but I haven’t really had
any problems dropping it. I backed away from using it 7-8 years ago and never looked back.
I find the prefix is not only redundant but damaging, since it violates hiding of implementation.
For example:

My DataObject subclass has methods called “firstname” and “lastname” that extract
data from a DB property (“fullName”) by chopping up the string stored there.
Now I want to change how my data is stored, i.e. I want to store the first and last names
in separate properties. If I do this, I now have to rename my “firstname” method to “getFirstname”,
meaning: My API design now depends on an implementation detail, which is bad.

But anyway… Apart form this, it's probably mostly down to to taste whether you choose to
prefix your methods or not. The question I’m asking is primarily if Cayenne has an opinion
on it and if you feel it *should* have an opinion on it. I’d be very happy if it didn’t
:).

Cheers,
- hugi



> On 24. júl. 2015, at 14:10, Andrus Adamchik <andrus@objectstyle.org> wrote:
> 
> Hi Hugi,
> 
> 1. I can't think of anything inside Cayenne that would rely on a getter (Property.getFrom(..)
is user-facing API that is not directly related to persistence). So you should be safe otherwise.
> 
> 2. I am with Mike - if you can, better switch to JavaBean getters. You'll avoid lots
of pain integrating with anything else in Java.
> 
> Andrus
> 
>> On Jul 24, 2015, at 3:32 PM, Michael Gentry <mgentry@masslight.net> wrote:
>> 
>> Hi Hugi,
>> 
>> I don't know offhand everywhere in Cayenne that get* is required, but
>> Cayenne's default templates and expectations are that the JavaBeans
>> notation (get/set/is) prefixes will be used.  Many other frameworks, such
>> as Apache Tapestry, work flawlessly with Cayenne because of the JavaBeans
>> notation, but would fail if get* were missing.
>> 
>> I used to use EOF/Objective-C, too, and at first the get* seemed annoying,
>> but now within Eclipse it is easy to type "get" and let the autocompletion
>> popup show me my options, which you can't do without that prefix.  Overall,
>> I think get* is a win because it is easier to find your getters and it
>> makes Cayenne work with other frameworks that expect the standard prefixes.
>> 
>> mrg
>> 
>> 
>> On Fri, Jul 24, 2015 at 7:37 AM, Hugi Thordarson <hugi@karlmenn.is> wrote:
>> 
>>> Hi all.
>>> 
>>> I don’t use “get" prefixes on the accessors for attributes on my
>>> DataObjects. This has worked flawlessly until now, but I just stumbled onto
>>> a case where it will cause a failure inside Cayenne’s world, i.e. when
>>> attempting to  access property values on objects using
>>> org.apache.cayenne.exp.Property.getFrom( someObject ).
>>> 
>>> The method documentation explicitly states that a bean-style get-prefix is
>>> required, so this was to be expected. But I’m wondering if there are more
>>> places where Cayenne depends on it and if the requirement for the “get”
>>> prefix should be eliminated entirely within Cayenne’s universe? (I’m sure
>>> I’m not the only one who is not fond of using it)
>>> 
>>> I got around this particular case by implementing my own “poor man’s
>>> KeyValueCoding” (for those of you familiar with EOF), but it would be nice
>>> not having to do something of that ilk.
>>> 
>>> Cheers,
>>> - hugi
>>> 
>>> // Hugi Thordarson
>>> // http://www.loftfar.is/
>>> // s. 895-6688
>>> 
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message