68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# План рефакторинга 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
|
|
```cpp
|
|
struct PIVector2DIndex {
|
|
ssize_t row;
|
|
ssize_t col;
|
|
};
|
|
```
|
|
|
|
### 3.2 Обновить return types
|
|
Методы для изменения:
|
|
- indexOf() -> возвращает PIVector2DIndex вместо PIPair<ssize_t, ssize_t>
|
|
- lastIndexOf()
|
|
- indexWhere()
|
|
- lastIndexWhere()
|
|
|
|
|
|
---
|