2.0 KiB
2.0 KiB
План рефакторинга PIVector2D
Этап 1: Выполнить наследование Row от RowConst, Col от ColConst
1.1 Найти классы Col, Row, ColConst и RowConst
- они находятся в файле
libs/main/containers/pivector2d.h
1.2 Изменить класс Row
- Наследовать от RowConst:
class Row : public RowConst - Убрать дублирующиеся методы (они унаследованы от RowConst):
- size()
- toVector()
- operator[] (const версия)
- data() (const версия)
- indexOf()
- lastIndexOf()
- indexWhere()
- lastIndexWhere()
- forEach() (const версия)
- contains()
- entries()
- any()
- every()
- Сохранить неконстантные методы:
- operator[] (неконстантный)
- data() (неконстантный)
- operator=()
- forEach() (неконстантный)
- fill()
1.3 Изменить класс Col
- Наследовать от ColConst:
class Col : public ColConst - Аналогично убрать дублирующиеся методы
1.4 Собрать проект
- собери проект, при необходимости поправь ошибки
- тесты не трогай
Этап 2: Проверить и поправить тесты
2.1 Запустить тесты
- Запустить:
./build/tests/pip_math_test --gtest_filter="*Vector2D*"
2.2 Поправить код или тесты
- внести правки в pivector2d.h
Этап 3: Заменить PIPair<ssize_t, ssize_t> на PIVector2DIndex
3.1 Создать структуру PIVector2DIndex
struct PIVector2DIndex {
ssize_t row;
ssize_t col;
};
3.2 Обновить return types
Методы для изменения:
- indexOf() -> возвращает PIVector2DIndex вместо PIPair<ssize_t, ssize_t>
- lastIndexOf()
- indexWhere()
- lastIndexWhere()