PIVector2D - add funcs, optimize, tests, fixes, doxygen #194
70
plans/pivector2d.md
Normal file
70
plans/pivector2d.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# План рефакторинга PIVector2D
|
||||
|
||||
## Этап 1: Выполнить наследование Row от RowConst, Col от ColConst
|
||||
|
||||
### 1.1 Переместить RowConst перед Row
|
||||
- Найти местоположение RowConst (текущая позиция ~строка 610)
|
||||
- Переместить определение RowConst перед Row (до строки ~184)
|
||||
|
||||
### 1.2 Переместить ColConst перед Col
|
||||
- Найти местоположение ColConst (текущая позиция ~строка 770)
|
||||
- Переместить определение ColConst перед Col (до строки ~402)
|
||||
|
||||
### 1.3 Изменить класс 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.4 Изменить класс Col
|
||||
- Наследовать от ColConst: `class Col : public ColConst`
|
||||
- Аналогично убрать дублирующиеся методы
|
||||
|
||||
### 1.5 Проверить тесты
|
||||
- Запустить: `./pip_math_test --gtest_filter="*Vector2D*"`
|
||||
|
||||
---
|
||||
|
||||
## Этап 2: Заменить PIPair<ssize_t, ssize_t> на PIVector2DIndex
|
||||
|
||||
### 2.1 Создать структуру PIVector2DIndex
|
||||
```cpp
|
||||
struct PIVector2DIndex {
|
||||
ssize_t row;
|
||||
ssize_t col;
|
||||
};
|
||||
```
|
||||
|
||||
### 2.2 Обновить return types
|
||||
Методы для изменения:
|
||||
- indexOf() -> возвращает PIVector2DIndex вместо PIPair<ssize_t, ssize_t>
|
||||
- lastIndexOf()
|
||||
- indexWhere()
|
||||
- lastIndexWhere()
|
||||
|
||||
### 2.3 Обновить тесты и документацию
|
||||
|
||||
---
|
||||
|
||||
## Этап 3: Дополнительные улучшения (опционально)
|
||||
|
||||
- Добавить методы для работы с диапазонами
|
||||
- Оптимизировать методы удаления строк/столбцов
|
||||
- Добавить проверку границ в debug-режиме
|
||||
Reference in New Issue
Block a user