Дизайн командлета: передача параметра: конвейер или встроенный параметр?

Это не вопрос программирования, а скорее вопрос дизайна.

Предполагая, что данные хранятся в json.

Например, Get-Person "John" | Get-Employer или Get-Employer -Person "John"

Оба способа возвращают работодателя Джона, первый использует конвейер, а второй использует встроенный параметр. Я иногда путаюсь: в чем преимущество и недостаток каждого? Когда вы, ребята, занимаетесь дизайном, что вы предпочитаете использовать каждый из них?

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

У кого-нибудь тоже есть мысли по этому вопросу?


person jamesdeath123    schedule 22.02.2013    source источник
comment
Как уже говорилось, хороший дизайн функций может справиться с обеими задачами, так что пользователь сам может выбрать то, что ему нравится. Однако, как к вашему сведению, ваши примеры не равны. В первом вы передаете объект (я бы предположил, что это объект человека для человека Джона), а второй принимает только его имя. "John" | Get-Employer будет правильной альтернативой   -  person Frode F.    schedule 22.02.2013
comment
Я согласен с @Grainer. Как потребитель командлетов, я хочу, чтобы это было в обоих случаях: позвольте мне передать одно/коллекцию значений, когда это необходимо, или передать коллекцию (или одно значение) из другого источника. Каждый метод пригодится в различных ситуациях.   -  person alroc    schedule 23.02.2013


Ответы (1)


Нет причин, по которым вам нужно выбирать одно или другое. С правильными атрибутами параметров и дизайном функций (используйте блоки begin/process/end) вы можете разрешить обе опции.

person Mike Shepard    schedule 22.02.2013