+1 ... fail faster is better.

From: Stephen Bohlen 
Sent: Sunday, March 27, 2011 8:53 PM
To: [email protected] 
Subject: Re: [nhibernate-development] Columns names

IMO if code makes any assumptions about the state of incoming data that it is 
consuming then its a defensible design approach to throw if any of the 
assumptions aren't verified or cannot be 'worked around' by the consuming code. 
 Since this assumption re: uniqueness is made in NH, then its reasonable to 
throw if this pre-condition isn't met.

Longer-term it would (probably) be best to alleviate the need for as many 
assumptions as feasible, but in concept I see this as not dissimilar from 
throwing ArgumentNullException if an incoming argument is NULL -- it reports to 
the caller as soon as possible in the invocation "something I expected to be 
true isn't and so I cannot proceed" so I agree with the idea of performing and 
early-validation-check of this pre-condition.

Steve Bohlen
[email protected]
http://blog.unhandled-exceptions.com
http://twitter.com/sbohlen



On Sun, Mar 27, 2011 at 3:16 PM, Fabio Maulo <[email protected]> wrote:

  Hi all. 
  Perhaps we have to take a decision about some rules to supports column-naming.

  In the model (excluding the case of "new") we can't use the same property 
name, more than once, inside the same branch of hierarchy.
  Uhh... try to explain every case is too long...

  The fact is that in NH we have, already, some methods (as 
IOuterJoinLoadable.GenerateTableAliasForColumn) where we suppose that a 
column-name is unique in the hierarchy.
  On the other hand we are not checking this situation so:
  - duplicating the column name (without specify insert=false) the user will 
have a very nice and self explained ArgumentOutOfRange exception 
  - if the same key-column-name is used for two collections with one-to-many 
relation, loading that object the user will have two identical collection 
(logic bug due column-naming)


  What I would introduce is an early-validation-check of these situations: the 
same column-name can't be used to represent two different properties.

  Thoughts ?

  NOTE: I have use "column-name" for simplicity but should be 
"columns-names-set".

  -- 
  Fabio Maulo

Reply via email to