Re: Mixing OO and DB

From: JOG <jog_at_cs.nott.ac.uk>
Date: Tue, 4 Mar 2008 17:05:52 -0800 (PST)
Message-ID: <6cdab7dd-1756-486f-a881-77ea17814d78_at_59g2000hsb.googlegroups.com>


On Mar 4, 11:03 pm, Robert Martin <uncle..._at_objectmentor.com> wrote:
> On 2008-03-04 00:25:43 -0600, topmind <topm..._at_technologist.com> said:
>
>
>
>
>
> > Robert Martin wrote:
> >> On 2008-03-03 06:59:57 -0600, "David Cressey" <cresse..._at_verizon.net> said
> > :
>
> >>> "Bob Bad Odor" <bbad..._at_pei.sympatico.ca> wrote in message
> >>>news:47cb2504$0$4034$9a566e8b_at_news.aliant.net..
>
> >>>>>> Not if they are explanatory. Employee.find("Bob") is a lot easier to
>
> >>>>>> understand than Select * from Employee_Table where Name = 'Bob';
>
> >>>> How exactly does Employee.find(string) inform the reader that the metho
> > d
> >>>> will return a single employee with a matching name? People understand
> >>>> things better when they are informed.
>
> >> Well, if you think 'find' is not evocative enough, then you could call
> >> the function find_single_employee_matching_name("bob");
>
> > Um, like what if there are zero Bob's or 200 Bob's in the actual
> > system? Are you gonna arbitrarily pick one?
>
> Don't be silly. find("Bob") will either return the object for "Bob" or
> it will return nothing. You would only use this method if you knew
> that there could be no more than one "Bob".
>
> If there could be more than one "Bob", then you would use a function
> like: find_all("Bob") which would return a list of all the matching
> objects.
>
> --
> Robert C. Martin (Uncle Bob) | email: uncle..._at_objectmentor.com
> Object Mentor Inc. | blog: www.butunclebob.com
> The Agile Transition Experts | web: www.objectmentor.com
> 800-338-6716 |

First Robert, let me say that I have read your blogs and enjoyed them - especially the discussion of singletons, which struck a chord, so kudos for that. Having said that, I think your dismissal of declarative approaches is reactionary to the people you are communicating with. I personally believe you are the sort of person that /if you had opportunity or inclination/ would see the benefits offered by declarative techniques over navigational approaches. The main benefit? Query neutrality. When I see find("bob") I wince, because if one is promoting it, then one is stuck in a single conceptual view of the data, considering a single "entity type", identified by a single attribute. We can be a lot more flexible than that. But then, perhaps only the cdt people will recognize what i talk about the neutrality of a logical model. Received on Wed Mar 05 2008 - 02:05:52 CET

Original text of this message