Big Game Review 1. AppPlugin - ![image](https://hackmd.io/_uploads/ByodWzowye.png) - лишнее переопределение 2. AppPlugin - ![image](https://hackmd.io/_uploads/S15RZfjwkg.png) - лишний вызов родительского метода. 3. AppPlugin - ![image](https://hackmd.io/_uploads/B1eufmfiwke.png) - можно избавиться от метода или вынести сюда логику зануления указателей на свои кастомные модели 4. AppPlugin - ![image](https://hackmd.io/_uploads/BkH0XGsv1x.png) ![image](https://hackmd.io/_uploads/B1hKNMiDJx.png) - release и nullptr ? чтобы наверняка удалилось ?) можно один из них убрать, суть работы у них одинакова. 5. BasicGame - ![image](https://hackmd.io/_uploads/SJzG_Gswyx.png) - сделай лямбдой, функции и методы мы с большой пишем. Можно еще нейминг понятнее сделать. 6. BasicGame - ![image](https://hackmd.io/_uploads/H1zn17ovJl.png) ![image](https://hackmd.io/_uploads/r1Lc1miD1x.png) ![image](https://hackmd.io/_uploads/r1Op1mjvJx.png) - лишние переопределния 8. BasicGame - ![image](https://hackmd.io/_uploads/ByqY7XjDyl.png) - можно избежать дублирования, записав результат Utils::GetSphereCountOnWheel(wheel_index) в переменную 8. BasicGame - ![image](https://hackmd.io/_uploads/Bk73VXjDJg.png) - можно тут и инициализировать ``` int m_sphere_count {0}; ``` 9. EffectBuilder - ![image](https://hackmd.io/_uploads/Ski0BmoPyl.png) - дубликация, вызови просто нижний метод. 10. Rules - 11. ![image](https://hackmd.io/_uploads/Skd8Imow1g.png) - магическое 18 замени на константу 11. SeriesProcessor - ![image](https://hackmd.io/_uploads/rJ8oUXivyx.png) - конструктор можно через using 12. SeriesProcessor - ![image](https://hackmd.io/_uploads/Bkxkv7oDye.png) - лишнее переопредение 13. SeriesProcessor - ![image](https://hackmd.io/_uploads/HJhMDQswkl.png) - можно сразу вернуть результат работы билдера, без лишнего присваивания, если ты не проверяешь указатель 14. SeriesProcessor - ![image](https://hackmd.io/_uploads/SkW3DXiwye.png) - можно вынести в переменную результат работы format + отладочную инфу по модулю игры замени на GAME_LOG_DEBUG 15. Utils - ![image](https://hackmd.io/_uploads/HkhOd7sPJx.png) - SetAnchor принимает тип float 16. Utils - ![image](https://hackmd.io/_uploads/SJH6uXovJg.png) - может считать с конфига этот параметр? 17. Utils - ![image](https://hackmd.io/_uploads/BkqdYQjvyg.png) - не используешь метод 7. Utils - ![image](https://hackmd.io/_uploads/B1CGbmsDyx.png) - count_if ? ``` return std::count_if( wheel.begin(), wheel.end(), [](int row) { return IsCounterSphere(row) || IsJackpotSphere(row); } ); ``` 18. Utils - ![image](https://hackmd.io/_uploads/BJtkcQsvyx.png) - можно просто вернуть результат сравнения 19. Utils - ![image](https://hackmd.io/_uploads/HkaX5Xjvkx.png) - не используешь 20. Utils - ![image](https://hackmd.io/_uploads/HJ0mjXsD1g.png) - тут в проверке особо смысла нет, ResourceManager, если картинку не найдет, все равно исключение бросит 21. Utils - ![image](https://hackmd.io/_uploads/ByfusXjwJg.png) - не используешь 22. ParticleEffect - ![image](https://hackmd.io/_uploads/H1T72XjDJg.png) - нужно добавить отписку от таймера. 23. Types - ![image](https://hackmd.io/_uploads/rk_hAQiPkx.png) - структуры на одно поле можно записать с помощью using ``` using CollectData_t = int ``` 24. Types - SymbolAnimationBuilderConfig_t CollectData_t WheelsManagerOverlaysConfig_t - не используешь структуры 25. Types - ![image](https://hackmd.io/_uploads/BkDayVjwye.png) - можно избежать дубликации, 3 поля у структур одинаковые. Обьединить/отнаследовать/еще масса вариантов. 26. Events - ![image](https://hackmd.io/_uploads/ryF6x4sP1l.png) - по файлу странные пробелы, отформатируй 27. Constants - ![image](https://hackmd.io/_uploads/H1sM-4sDkl.png) - лучше читать из конфига такие данные, код становится более универсальным. Можно удалить, не используешь. 28. SymbolsFactory - ![image](https://hackmd.io/_uploads/B1l0ZEovyg.png) - потерялся инклюд 29. SymbolsFactory - ![image](https://hackmd.io/_uploads/rkXRP4oDJx.png) - скобки или сокращенную запись Пересмотри файл, повсюду скобки потерял. 30. Symbol - ![image](https://hackmd.io/_uploads/ry6t_VoPkl.png) - лишний переход на строку, по файлу потеряны скобки ![image](https://hackmd.io/_uploads/BkonuVoDyg.png) - нет пробела Отформатируй файл. 31. Symbol - ![image](https://hackmd.io/_uploads/Hkeft4iDye.png) - в цикле structure binding можно использовать. ``` for (auto& [lhs, rhs] : m_spines_views_bones_data_set) ``` - записать сокращение как ``` auto converted_pos = ConvertAbsToParentCoords(pos_global_space, space_view ? space_view : rhs.GetSpaceView()); ``` 32. SpecialSphereManager - ![image](https://hackmd.io/_uploads/Bk2McVsPJl.png) - снова нет отписки от таймера 33. SpecialSphereManager - ![image](https://hackmd.io/_uploads/HJ8n9VjPkg.png) - keep it simple ``` for (const auto& elem : m_data_vector) { AddEffect(elem); } ``` 34. SpecialSphereManager - ![image](https://hackmd.io/_uploads/H1rUj4ivye.png) - можно return в одну строчку сделать 35. LockItFeature - ![image](https://hackmd.io/_uploads/S1Bg3EjP1e.png) - форматирование 36. LockItFeature - ![image](https://hackmd.io/_uploads/HJwV3ViPkl.png) - такой метод уже был в начале ревью, можно теперь его в Utils вынести и не дублировать. 37, LockITFeature - ![image](https://hackmd.io/_uploads/S1NG6NiDkx.png) - в 17 стандарте появился std::clamp, так же у нас был cpp::clamp 38. LockItFeature - ![image](https://hackmd.io/_uploads/SkGs6Niwke.png) - таймер без отписки 39. LockItFeature - ![image](https://hackmd.io/_uploads/SyPgCNoPJg.png) ![image](https://hackmd.io/_uploads/SJc30Vovyx.png) ![image](https://hackmd.io/_uploads/BkMMlroPkx.png) - лишнее переопределение 41. LockItFeature - - с переменной m_already_updated_info непонятно. Инициализируешь ее при создании класса в false, потом делаешь 1 раз true на OnWheelStop и больше нигде ее не меняешь. Это точно так и должно быть ?) 42. LockItFeature - ![image](https://hackmd.io/_uploads/H1rLlriwkl.png) - на будующее - попробуй PublisherDecorator вместо установок callback на notify 43. GrandPopup - ![image](https://hackmd.io/_uploads/BJ3WbHjw1e.png) - вынеси эвент 44. GrandPopup - ![image](https://hackmd.io/_uploads/HyeIbHsP1g.png) - это единственное место, где ты используешь этот метод из Utils - перенеси его сюда. 45. ![image](https://hackmd.io/_uploads/ryIx7riPye.png) - пустые методы в классе и логика их использует, вижу что virtual, если ты сделал так на будущее - то ок. Или зачисти, если лишнее.