1

我得到了以下课程:

public MealService( IFoodRepository foodRepository, 
                    IOrderRepository orderRepository,
                    IDishListRepository dishListRepository)
{
    _inputValidator = inputValidator;
    _foodRepository = foodRepository;
    _orderRepository = orderRepository;
    _dishListRepository = dishListRepository;
}

...然后,这里有一些代码

在该过程结束时,我会:

private async Task<Order> CreateOrderAsync(int dayTime, List<Item> items)
{
    Order order = new Order();
    DishList dl;
    Food food;

    foreach (Item it in items)
    {
        dl = await _dishListRepository.GetAsync(dayTime, it.DishType);
        food = await _foodRepository.GetAsync(dl.FoodId);
        it.Food = food.Name;
        order.Items.Add(it);
    }
    await _orderRepository.AddAsync(order);
    return order;
}

我是否违反单一责任原则(SOLID 中的“S”)?我的意思是,向一个类中注入太多接口是否意味着该类有太多责任?

提前致谢。

4

1 回答 1

1

答案很可能是肯定的。通常过多的参数是典型的代码异味。请参阅鲍勃叔叔清洁代码中的第 3 章。他用了 4 页来讨论这个主题。这是那里的简短引述:

函数的理想参数数量为零(niladic)。接下来是一个(单子),紧随其后的是两个(二元)。应尽可能避免使用三个参数(三元)。超过三个(多元)需要非常特殊的理由——然后无论如何都不应该使用。

于 2022-02-14T10:51:07.590 回答