Talk:Collection of Collections Is a Code Smell
From WikiContent
(New page: Why not name the CompoundKey by its DomainName i.e. ''Name''. And indexing persons to FirstName, LastName is just one view on a PeopleList. That generic List for people could have differen...) |
m (Talk:Collection of Collections is a Code Smell moved to Talk:Collection of Collections Is a Code Smell) |
||
| (5 intermediate revisions not shown.) | |||
| Line 19: | Line 19: | ||
--[[User:Michael Hunger|Michael Hunger]] 18:36, 26 January 2009 (PST) | --[[User:Michael Hunger|Michael Hunger]] 18:36, 26 January 2009 (PST) | ||
| + | |||
| + | Hi Michael, | ||
| + | |||
| + | Nice review. I don't want to use Generics for a number of reasons. The foremost reason is that it distracts from my main point which still applies with or without the use of generics. I don't want to get tunneled on this specific example. There are others that are more complex in nature where using Generics robs you of have home for associated behaviors. | ||
| + | |||
| + | Kevlin pointed out a second point, CompoundKey. Ok, well whats in a name ;-). It is a technical object that represents a kind of CompositeKey. So, I guess I could have named it PersonNameCompositeKey signifying its specialization. | ||
| + | |||
| + | Kirk | ||
Current revision
Why not name the CompoundKey by its DomainName i.e. Name. And indexing persons to FirstName, LastName is just one view on a PeopleList. That generic List for people could have different projections for different views (indices) that use their own indexing. e.g. something like this (just typed in here not thrown at a compiler)
class People {
private final Collection<Person> people=new ArrayList<Person>();
public People(Collection<Person> people) {
this.people.addAll(people);
}
public <T extends Projection> SortedMap<T,Person> projectTo(T index) {
SortedMap<T,Person> projection=new TreeMap<T,Person>();
for (Person person : people) {
projection.put(index.from(person), person);
}
return projection;
}
--Michael Hunger 18:36, 26 January 2009 (PST)
Hi Michael,
Nice review. I don't want to use Generics for a number of reasons. The foremost reason is that it distracts from my main point which still applies with or without the use of generics. I don't want to get tunneled on this specific example. There are others that are more complex in nature where using Generics robs you of have home for associated behaviors.
Kevlin pointed out a second point, CompoundKey. Ok, well whats in a name ;-). It is a technical object that represents a kind of CompositeKey. So, I guess I could have named it PersonNameCompositeKey signifying its specialization.
Kirk
