Здравствуйте, saf_e, Вы писали:
_>Немного глянул. детальный разбор давать не берусь, много всяких недочетов. Из того что бросилось в глаза за пару минут:
_>1. Используйте "precompiled headers".
Всегда так делаю в реальных проектах, но думаю для данной задачи это было не критично.
_>2. Не используйте (НИКОГДА) using namespace в хедерах (а std под страхом смертной казни!) -- потомки проклянут!
Вредная привычка, да.
_>3. Активнее используете коллекции
_> static const int MaxAllowedSteps = 1000;
_> static char sequence[MaxAllowedSteps];
_> //array of pointers to cell
_> Cell** m_ppCells;
_> //array of pointers to marble
_> Marble** m_ppMarbles;
_>все это спокойно меняется на std::vector/string заодно уходит статика.
Т.е. контейнеры всегда предпочтительнее, даже если в них нет строгой необходимости?
_>4. Неоправданно использование макроса #define STEP(d). В данном случае легко заменяется на ф-цию.
Не совсем понял, в данном конкретном случае в чем превосходство функции над макросом? Вроде так оптимальнее же.
_>5. Достаточно запутанная схема реализации состояний и их сношения с рекурсивной ф-цией.
Я просто делаю вид, что работаю со стеком состоянии. Всего 3 операции PushState, PopState, RestoreState, но реализация самых функции слегка запутанно, да. Просто сначала хотел сделать по другому, потом изменил и добавил хэш.
_>Возможно что-то упустил. Плюс стиль оформления слабоват -- смелее используйте разделители и комментарии.
А насколько важна стилистика, если задача решена в целом верно? Я легко могу адаптироваться под стандарты данной команды. Но мне просто шанса не дают себя проявить, а таким тонкостям можно научится только работая в команде с профессионалами. В той конторе, где сейчас работаю нету у кого поучится, получается я там самый крутой и это очень плохо
И да, спасибо вам