Как избавиться от лишних перегрузок

Я пишу тайловую карту на Unity. В процессе написания появилось предчувствие, что я делаю что-то не так. Это связано с тем, что я пишу слишком много перегрузок. Вопрос в том, как избавиться от этих перегрузок и нужно ли это делать? Или возможно проблема в другом? Помогите сделать код удобнее. Код с перегрузками:

public List<Cell> NeighbordCells(Cell cell, List<Vector3Int> neighbordCellsIndexesOffset) //Основной метод Определение соседних ячеек
{
    List<Cell> rez = new List<Cell>();
    foreach (var neighbordCellIndexOffset in neighbordCellsIndexesOffset)
    {
        var neighdordCellIndex =
            OddrCoordinatesInIndex(cell.positionInOddrCoordinates + neighbordCellIndexOffset);
        if (neighdordCellIndex != -1)
        {
            rez.Add(cells[neighdordCellIndex]);
        }
        else
        {
            rez.Add(null);
        }
    }
    return rez;
}

public List<Cell> NeighbordCells(Tile tile, List<Vector3Int> neighbordCellsIndexesOffset) //Перегрузка 1
{
    return NeighbordCells(tile.Cell, neighbordCellsIndexesOffset);
}

public List<Cell> NeighbordCells(List<Tile> tiles, List<Vector3Int> neighbordCellsIndexesOffset) //Перегрузка 2
{
    var neighbordCells = new List<Cell>();
    foreach (var tile in tiles)
    {
        neighbordCells.AddRange(NeighbordCells(tile, neighbordCellsIndexesOffset));
    }
}

public List<Cell> NeighbordCells(List<Cell> cells, List<Vector3Int> neighbordCellsIndexesOffset) //Перегрузка 3
{
    var neighbordCells = new List<Cell>();
    foreach (var cell in cells)
    {
        neighbordCells.AddRange(NeighbordCells(cell, neighbordCellsIndexesOffset));
    }
}

Недавно познакомился с обобщениями (дженериками), возможно перегрузки 2 и 3 можно объединить с помощью них, но как это правильно сделать, пока не понимаю. Спасибо


Ответы (1 шт):

Автор решения: Aziz Umarov

Перегрузка методов это не лишнее. Лишнее это то без чего ваше приложение и его использующие могут работать не используя. Перегрузка обычно создается из потребностей и принципа SOLID конкретнее принципа О - Принцип открытости/закрытости. Поскольку вносить изменения в существующий код не рекомендуется то в следствии появляется перегрузки.

→ Ссылка