Monday, January 10, 2005 3:27 PM
pgolde
Feedback meeting with Microsoft
I had a meeting last week with several people from Microsoft to discuss Power Collections, where it was going, and review what had been done so far. We had a good discussion, and I got a lot of good feedback on the library. Some of the highlights of the discussion:
We talked a lot about naming and the names of different methods. I got several good suggestions for better names for methods. For example, IsSubsetOf instead of SubsetOf, CountWhere instead of CountWhenTrue, or TypedAs instead of AddTyping. I hope to do a more comprehensive review of naming to have more better and more consistent naming across the library. One tension is here is consistency with System.Collections.Generics versus internal consistency.
We discussed the Bag class a lot, and the way that it is implementent as storing a representative item and a count. The problem with this is that referential identity is not maintain among items that you put into the bag. There was a strong feeling that if you put three objects into a Bag, you should get the identical three items out, even if some were equal to the others. After some discussion, I agreed, so this will require a significant recoding of Bag.
Some significant discussion of ICloneable, and the Clone and CloneContents. After some discussion, I think we agreed that what Power Collections is doing is fairly reasonable.
Some discussion about whether Set and Bag should override object.Equals and object.GetHashCode to compare the contents of the set. I'm still thinking about this -- feedback very welcome.
Discussion of why some methods in Algorithms that create a new list return a T[], while others return an IList. I agreed that this was inconsistent and probably should be fixed one way or another.
Discussion of whether Algorithms has too many methods, and should be broken up in some way, perhaps into separate classes. I understood the criticism, but didn't see a great way to solve it without impacting usability. Comments? Can this be addressed through documentation?
Some discussion about MultiDictionaries -- dictionaries that map one key to several values. I plan to have a MultiDictionary and a SortedMultiDictionary, and we discussed what those should look like. I'll be posting about the results of that discussion in a little bit, once I have time to digest it a little more.
Suggestion was made there should be easy conversions between Pair and KeyValuePair. This seems like a good idea. Any comments on these suggestions or other will be welcome, as usual!