# TicTacToeDemo review 1. Нет реализации и не используется. ![](https://i.imgur.com/p5cGGHf.png) 2. При взаимодействии с ObjectFac необходимо всегда делать проверку есть ли такой ресурс (проверка указателя на nullptr). У нас в проекте зачастую мы используем макрос VLIB_ASSERT при конфигурации чего-либо. ![](https://i.imgur.com/QOsYKgq.png) ![](https://i.imgur.com/1q0F3cV.png) ![](https://i.imgur.com/OxH2pkr.png) ![](https://i.imgur.com/Tq5rbT8.png) 3. Тут лучше проверять на валидность указателя через if ![](https://i.imgur.com/E1Kvq7r.png) Для таких случаев лучше всего: - создать поле класса каунтера - инициализировать его, обращаясь к ObjectFac - проверить успешность инициализации через VLIB_ASSERT - в коде обращаться уже непосредственно к полю класса, проверяя валидность указателя через if 4. Стоит избегать "магических" чисел, заменять на именованные constexpr константы. Если используются 1 раз - то внутри функции, если 2 и больше раз, то в анонимном неймспейсе в cpp файле. ![](https://i.imgur.com/opBc8u5.png) 5. Для чего это? ![](https://i.imgur.com/CHPaNlv.png) можно присвоить nullptr и обеспечить корректный релиз, если это нужно 6. Лучше использовать std::array ![](https://i.imgur.com/AIgnMHD.png) А в перспективе для игр - vector, так как мы стремимся к повторному использованию кода и с динамической памятью проще делать адаптивную архитектуру. Но это так, на будущее, в первой игре нужно будет сделать все максимально просто, главное - понять основные принципы. 7. Тут можно применить паттерн Стратегия ![](https://i.imgur.com/15W4qTp.png) 8. Логику обработки комбинаций также лучше вынести в отдельную сущность и использовать композицию. Форматирование ------------- 1.Необходимо контролировать отступы и не жалеть скобочек. Очень важна читаемость кода. ![](https://i.imgur.com/UTcRbmN.png) ![](https://i.imgur.com/xqzlOsn.png) ![](https://i.imgur.com/88T3xTm.png) ![](https://i.imgur.com/zNf8VS3.png) 2. Длина строк. У нас нет четкого ограничения, но нужно стараться, чтобы строка вмещалась в область видимости основного поля. ![](https://i.imgur.com/GVPyPPx.png)