Как лучше?
От: Maraba  
Дата: 24.11.05 20:27
Оценка:
class BaseClass {...}

class ChildA:BaseClass {...}
class ChildB:BaseClass {...}
...

Как лучше?
так:
void AnotherClass::func(BaseClass object) {
    doCommonStuff1
    if (objectInstanceOfChildA) {
        doSpecificStuffA1
    }
    else if(objectInstanceOfChildB) {
        dospecificStuffB1 
    }
    else ...
    doCommonStuff2
    if (objectInstanceOfChildA) {
        doSpecificStuffA2
    }
    else if(objectInstanceOfChildB) {
        dospecificStuffB2 
    }
    else ...
    ...
}

или так:
void AnotherClass::func(ChildA object) {
    doCommonStuff1
    doSpecificStuffA1
    doCommonStuff2
    doSpecificStuffA2
    ...
}

void AnotherClass::func(ChildB object) {
    doCommonStuff1
    doSpecificStuffB1
    doCommonStuff2
    doSpecificStuffB2
    ...
}
...

В первом случае имеем "кашу". Таким кодом только ночью на улицах пугать.
Во втором случае каждый метод достаточно читабелен, но имеет место повторное использование кода. (Запихать общие блоки для различных классов в отдельные методы не представляется возможным, из-за их маленького размера)

Какой бы вариант предпочли вы?
1) Вариант1
2) Вариант2
3) Оба варианта отстой (+ свой вариант в студию)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.