Ayende @ Rahien

Hi!
My name is Ayende Rahien
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:

ayende@ayende.com

+972 52-548-6969

@

Posts: 5,947 | Comments: 44,543

filter by tags archive

Comments

Bill Barry

Oi...

umm, is

iFooFactoryFactoryFactoryFactory : Factory<Factory<Factory<Factory<Factory>>>>

and are you using it more than once?

If so, then the former; btw, what is wrong that you need such a structure?

Avish

Redesign.

Peter w

I like the latter, because the syntax exposes a little more detail about the type, but this is only a matter of personal preference.

I'll tell you one thing: it is a serious PITA to do the latter in XAML and it is pissing me off at the moment!!!!!!!!

Trumpi

NO NO NO NO NO!!!

It's Factory<Factory<Factory>>

(For those who don't get it, read http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12)

Luke Breuer

I would go for the double barrel shotgun. If you need more firepower, I'll see what I can do. :-p

Nick Parker

You could SO use another factory to manage all that complexity! ;-)

Mats Helander

I'm with Nick on this one, although it seems you're also missing an AbstractFactory or two in there.

/Mats

goodwill

I think redesign is a good answer.

I will prefer #1, the #2 one is going to cause a lot of confusion on casting as Factory<Factory... is a distinct type and it never cast to Factory...

Tapio K

I need both !

Obviously

Factory<Factory<Factory<Factory<Factory>>>> implements interface IFooFactoryFactoryFactoryFactory

efdee

I usualy prefer the first version because it allows for a more descriptive name and it keeps the implementation (using generics) hidden.

Mr_Simple

I feel so redeemed.

Bryan Watts

Generics allow you to describe something which, when expanded, gives you a more particular something.

In this case, you can say "IFooFactoryFactoryFactoryFactory" by saying "Factory<Factory<Factory<Factory<Factory>>>>", and you don't need to create (or maintain) a separate artifact.

Interfaces which embed type information are usually a less-expressive way of saying the same thing with generics:

IStringWidget vs. IWidget

They are synonymous!

Keith Nicholas

I so hope you really need that level of abstraction.

James Kovacs

Based on the comments, it appears that a few people haven't properly analyzed an instance of the aforementioned type.

[Test]

public void CanExamineComplexClass() {

IFooFactoryFactoryFactoryFactory fooFactoryFactoryFactoryFactory = new Factory<Factory<Factory<Factory<Factory>>>>();

Assert.IsTrue(fooFactoryFactoryFactoryFactory is Joke);

}

If this was meant as a serious example, Oren would have used Boo (or written his own compiler).

Comment preview

Comments have been closed on this topic.

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. RavenDB Sharding (3):
    22 May 2015 - Adding a new shard to an existing cluster, splitting the shard
  2. The RavenDB Comic Strip (2):
    20 May 2015 - Part II – a team in trouble!
  3. Challenge (45):
    28 Apr 2015 - What is the meaning of this change?
  4. Interview question (2):
    30 Mar 2015 - fix the index
  5. Excerpts from the RavenDB Performance team report (20):
    20 Feb 2015 - Optimizing Compare – The circle of life (a post-mortem)
View all series

RECENT COMMENTS

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats