Во-первых, Вы сравниваете яблоки и апельсины. Необходимо было бы сначала выдержать сравнение, включают тип по сравнению с, включают строку, и затем если на типе по сравнению с если на строке, и затем сравнивают победителей.
, Во-вторых, это - вид вещи, для которой было разработано OO. На языках, которые поддерживают OO, включая тип (любого вида) запах кода, который указывает на плохой дизайн. Решение состоит в том, чтобы произойти из общей базы с абстрактным или виртуальным методом (или подобная конструкция, в зависимости от Вашего языка)
, например,
class Node
{
public virtual void Action()
{
// Perform default action
}
}
class Bob : Node
{
public override void Action()
{
// Perform action for Bill
}
}
class Jill : Node
{
public override void Action()
{
// Perform action for Jill
}
}
Затем вместо того, чтобы делать оператор переключения, Вы просто называете childNode. Действие ()
Это даже вроде как сделано (вроде).
Механизм агрегации / сводки LastFm: http://github.com/zohmg/zohmg
Поиск в Google появился проект кода Google "mroll", но в нем нет ничего, кроме контактной информации (без кода, ничего). Тем не менее, возможно, захочется связаться с этим парнем и узнать, что случилось. http://code.google.com/p/mroll/