Я работаю над заданием, которое включает в себя управление инвентаризацией продуктов. В частности, нам предоставляется интерфейс IProduct и IInventory для реализации. Большая часть из них проста, но я столкнулся с блокпостом дизайна, и мне интересно узнать о лучших практиках.Собственная структура данных для частного поля - Инвентарь
У меня есть два варианта для поля поддержки класса Inventory: List или Dictionary (пользовательский класс может быть излишним). В задании мы спрашиваем:
- Напишите способ, позволяющий пользователям добавлять элементы в свою инвентаризацию.
- Запретить добавление повторяющихся предметов (предметов с тем же именем).
- Внедрение индексов (так что myInv [myItemName] должен вернуть элемент, соответствующий myItemName)
- Напишите способ, возвращающий список элементов в алфавитном порядке по названию.
Учитывая эти требования, я собирался прыгнуть и сделать частное поле словаря, но потом я увидел требование:
- Написать метод, возвращающий список элементов в порядке их добавлен в инвентарь.
Мне интересно, какой лучший способ действий в этом сценарии будет. Я жонглирую между двумя идеями:
- Создайте два частных поля поддержки, список и словарь, но это кажется громоздким и неэлегантным.
- Используйте список и пройдите несколько обручей для первых четырех требований (например, запишите цикл для индексаторов и сделайте отсортированную копию позже, когда вас попросят ввести в алфавитном порядке).
Какое из перечисленных действий следует предпринять, или я должен делать что-то совершенно другое?
Почему бы не просто сохранить список, это будет ваш порядок вставки. Когда придет время для печати, используйте запрос LINQ и порядок в алфавитном порядке. – ChiefTwoPencils
Мы еще не получили LINQ, но, похоже, я могу сделать что-то подобное, возвращая копию отсортированного массива. – afding