Files
pip/plans/pivector2d.md
2026-02-26 21:35:14 +03:00

69 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План рефакторинга 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 Собрать проект
- собери проект, при необходимости поправь ошибки
### 1.5 Проверить тесты
- Запустить: `./build/tests/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-режиме