> Actually, I'm not sure that logic does follow. Obviously the > Component suffix is (sanely) not used, but plenty of others are.
We have used suffixes where there is no common alternative. For example, we have "TabPane" but not "AccordionPane". Similarly, we have org.apache.pivot.web.Query, not "QueryTask". > TaskGroup implements a Group<Task> and extends Task, but its name > doesn't reflect that it is a Task, perhaps just because the word > 'Task' would be included twice. Correct - it is redundant. You only need to qualify things if their meaning is ambiguous. Since a "task group" is defined as a "task that is a group of tasks", the there is no ambiguity and the "Task" suffix is unnecessary. Same for "task sequence". > What if TaskGroup had a companion class that also extended Task and > implemented Group<Runnable>? It might wrap each Runnable in a Task > and delegate to TaskGroup for execution. (Kind of a parallel Runnable > -> Task adapter). > > Should that be named RunnableGroup or RunnableGroupTask? Difficult to answer since the question is somewhat contrived. We tend to focus heavily on real use cases since that also helps us come up with the most accurate names for the things that are being modeled.