В настоящее время я создаю тестовое приложение, которое управляет деталями для инженеров, и у меня возникла загвоздка. У меня есть несколько разных классов, в том числе PartsModel
и EngineerModel
, и я хочу обновить список частей, которые есть у инженера, но я помню о проблемах, связанных либо с транспонированными параметрами, либо со структурированием кода таким образом, чтобы излишне связан с определенным классом.
Два класса с некоторыми соответствующими свойствами:
public class PartModel
{
public int PartId { get; private set; }
public string PartTitle { get; set; }
public string PartDescription { get; set; }
public int Quantity { get; set; }
public int MinimumStock { get; set; }
public void AddToStock (int quantityToAdd) {
Quantity += quantityToAdd;
}
public void RemoveFromStock (int quantityToRemove) {
Quantity -= quantityToRemove;
CheckMinimumStock();
}
}
public class EngineerModel
{
public int EngineerId { get; private set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<PartModel> PartsInStock { get; set; } = Factory.CreatePartsList();
}
Как видите, у каждого инженера есть список запасных частей через List<PartModel>
. Я хочу передать в этот список еще один список, чтобы я мог обновить его соответственно (увеличивая или уменьшая количества, а затем добавляя или удаляя части списка по мере необходимости).
Первый сигнал предупреждения - это то, что требуется два входы одного и того же типа и собираются заполнить один из другого (который впоследствии не понадобится), поэтому вы по существу изменяете один вход и уничтожаете другой. Для меня это представляет опасность того, что входные данные будут перемещены, а неправильный список будет либо возвращен, либо обновлен (в зависимости от того, возвращается ли он или просто действует в списке). Поскольку он удаляет элементы, у которых нет количества, он не может проверить длину списка и просто обновить более длинный, потому что возможны случаи, когда список инженера короче (может быть, это новый инженер, или, может быть, у них только что был большая партия запчастей отправляется, когда их заканчиваются на складе). Если бы он просто сохранял детали с нулевым количеством, то вы угрожаете масштабируемости как инженеров, так и деталей (не говоря уже о любых других объектах, которые используют ту же операцию).
EngineerModel
и работать с PartsInStock
, верно? Но как насчет того, чтобы использовать ту же операцию для других классов (например, если у меня есть список частей, связанных с рабочей задачей)? Затем я извлекаю метод в другой класс и ... Я передаю два списка в качестве параметров в методе, поэтому я вернулся туда, где был.
Разумно ли я не хочу иметь два параметра одного типа, и как мне структурировать код, чтобы справиться с этим, но не создавая ненужной связи? Если я не веду себя разумно, что я упускаю из виду?