views:

79

answers:

2

Hello. I am wrapping up an application where I am using a lot of Dictionary classes to store Function and Action delegates. I am now refactoring my project a bit and cleaning code. My question is where do or would you put your Dictionary classes in your project structure? Right now, they are located within the calling class source files but I was wondering if I should create a separate source file to store all my Dictionaries. I hope this is enough information. Please forgive me if it is not. Thanks.

+1  A: 

Normally, the Dictionary class would be a thing unto itself (a library) and your various users would create instances of it.

If need be, they might specialize / sub-class it, but this should be rare.

Maybe the question you really should be asking yourself "why do I have multiple Dictionary classes"?

MarkusQ
+1  A: 

I would organize the dictionaries in the same way as the rest of the code; group related functionality together, and separate unrelated functionality.

In addition, I'd look at how the delegation dictionaries are used. If your usage pattern is always to retrieve a delegate and immediately invoke it, then I'd wrap that behavior into a class with a "do-the-right-thing" method. Then each such class can be named by the domain concept it represents.

For example, if you had a dictionary which mapped US state abbreviations to a sales tax calculation, then you could wrap all of that into a class with a "compute sales tax" method taking a state code and subtotal as arguments. The fact that it's using a dictionary to look up the right computation scheme then becomes a hidden implementation detail.

joel.neely