---
# System prepended metadata

title: Review Serov Ilya

---

# Review Serov Ilya

Part2
---------
Загалом, все стало на багато краще :)
Подальші рекомендації
- розділяти код на hpp і cpp файли. Потрібно детально ознайомитися з етапами зборки програми, навіщо взагалі розділяють на hpp і cpp файли;
- не виконаний пункт 4, в цьому і було основне завдання використати принципи ООП, зокрема, поліморфізм. Визначити загальні характеристики та побудувати інтерфейс з деякими віртуальними методами (наприклад update, draw і т.д.) та насладуватися від нього
- потрібно розділяти логіку і дані. Рекомендую притримуватися цього принципу навіть пет проектах. Для прикладу стаття, але можна ще пошукати приклади з поясненнням принципу.
https://blog.klipse.tech/databook/2020/10/02/separate-code-data.html
- бажано уникати "магічних" значень, а використовувати іменовані константи.

Обов'язково почитати
Объектно-ориентированное мышление. Мэтт Вайсфельд

Також рекомендована література:
https://drive.google.com/drive/folders/1xeGgYlFCOuP4yR-wJq_Ve1LbJWb-fau3?usp=share_link

-----------------

Part1
------
Перед виконанням рефакторингу подивіться лекцію про принципи Чистого коду.
https://youtu.be/otrfSgeK3JI

1. Проект не збирається.Потрібно використовувати відносні шляхи при конфігурації проекту і розмістити саму бібліотеку в папку з проектом.

2. Змішана логіка. Потрібно відокремити логіку відмальовки, обробки івентів і самої ігрової логіки (зверніть увагу на паттерн MVC)

3. Необхідно зробити клас Game і винести туди ігрову логіку. Наразі забагато логіки в функції main.

4. Визначити, що є загального в Paddle і Ball, зробити базовий клас GameObject з відповідними віртуальними функціями.

5. Не наслідуйтесь від Image, а використайте композицію (почитайте що це). Наслідування - це досить жорсткі зв'язки, його потрібно використовувати з розумом.
Аналогічно з Timer, трохи не зрозуміло його призначення.

6. Попрацюйте над ігровим циклом, врахуйте, що у кожного з потенціальних гравців техніка з різними за потужністю процесорами. Почитайте що таке FPS (frames per second). 
https://subscription.packtpub.com/book/game+development/9781849696845/1/ch01lvl1sec11/game-loops-and-frames




