Какую переменную-идентификатор лучше передать в качестве аргумента методу? - PullRequest
4 голосов
/ 18 марта 2011

Предположим, следующий метод:

public void ShareClassStuff(int shareClassId)
{
    var shareClass = _shareClassService.GetShareClassById(shareClassId);

    (if shareClass != null)
        var shareClassStat = _shareClassService.GetShareClassStat(shareClass.Id);

    //go on to do stuff with shareClass & shareClassStat 
}

Здесь я получаю shareClass, передавая shareClassId службе, которая возвращает нужный мне объект.Затем я должен передать Id другому методу, чтобы получить другие данные.

У меня вопрос: лучше ли использовать во втором вызове службы переменную shareClassId, например,

GetShareClassStat(shareClassId)

или свойство Id объекта shareClass, например,

GetShareClassStat(shareClass.Id)

или это вообще имеет значение?

Ответы [ 4 ]

0 голосов
/ 18 марта 2011

Я не думаю, что это имеет значение с точки зрения производительности, однако я бы передал shareClassId второму методу, а не shareClass.Id.

Причина в том, что когда вы используете shareClass.Id, у вас теперь есть зависимость от расположения кода. _shareClassService.GetShareClassById должен быть вызван первым перед _shareClassService.GetShareClassStat. Кроме того, вы вводите зависимость от реализации _shareClassService.GetShareClassById для правильного заполнения свойства Id.

0 голосов
/ 18 марта 2011

В то время как можно было бы поспорить в обоих направлениях, прохождение shareClassId:

имеет очень небольшое преимущество

shareClass.Id - это свойство, следовательно, вызов метода (который может или не может быть встроен при оптимизации). shareClassId - это простое целое число.

Таким образом, передача параметра имеет очень небольшое преимущество.

Обновлено

Есть еще одна причина, по которой можно предпочесть использование параметра: он постоянен. Вы использовали параметр для первого «поиска по идентификатору», поэтому используйте параметр снова во второй раз.

Ни одна из этих причин не является чрезвычайно убедительной, но, поскольку вы спросили, я предполагаю, что вы заинтересованы в любых мыслимых рассуждениях.

0 голосов
/ 18 марта 2011

Не должно иметь значения. Это будет иметь значение только в том случае, если по какой-то причине ваш метод GetShareClassById () перестал возвращать нули и вместо этого начал возвращать пустой класс. Теперь у вас есть класс с неверным идентификатором. Не то чтобы это когда-либо случалось, просто говоря, что это вызовет проблемы.

Если вы хотите набрать 0,0001 секунды скорости, передайте переменную.

0 голосов
/ 18 марта 2011

Я не думаю, что это имеет большое значение.

...