2015-02-11 5 views
0

В оболочке Powers V4 нормально ли вызывать функцию из другой функции? Я делаю что-то плохое, если я так делаю?Powershell - функция вызова из другой функции

Предположим, у меня есть эти две функции:

function secondFunction($username){ 
     Write-Out "The Next Step is...." 
    } 

function myFunction($username){ 
    Write-Output Welcome $username 
    secondFunction($userName) 
} 

СОБРАННОЙ код хорошо сделать? Каковы недостатки этого?

+0

Ничего страшного в этом ... Вы можете быть более конкретным? – arco444

+0

Нет ничего плохого, кроме того, что 'secondFunction' должен быть объявлен перед' myFunction', иначе это не будет работать должным образом. – Matt

+0

@Matt - Спасибо. Я исправлю это. –

ответ

0

Идея PowerShell, то есть способ, которым должны функционировать ваши функции, - быть их собственными островами. Они могут быть построены из вызова бесконечного числа командлетов и запускать несколько строк кода, но для простоты и поддержки они должны стоять в одиночестве.

Возможно ли вы атаковать этот другой путь, так что вы можете иметь один трубопроводный, которая достигает того же результата, что-то вроде:

myFunction (outputs an object $username with props) | secondFunction (accepts pipeline input and does the second step) 

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

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

+0

Я не согласен с этим обобщением. Если вы пишете модуль, заполненный функциями, почему бы не попытаться избежать использования этих функций в других функциях? Разве это не та часть преимуществ, которую можно выбрать, какие функции экспортируются в модуле, а какие нет, вы можете скрыть «частные» или «вспомогательные» функции? Говорить, что каждая функция должна быть «островом», для меня глупо, поскольку она способствует созданию больших уродливых функций «спагетти кода». –

+0

Я слышал, что вы говорите, и не поощрял бы кого-либо повторять код спагетти. Тем не менее, основной основой PowerShell является весь конвейер и создание небольших целевых инструментов, которые выполняют определенную функцию. Если бы OP подошел к своей проблеме с намерением сделать «проветриваемые» тарифы и придумать подход, основанный на конвейере, на использование его функций, я думаю, что это было бы лучшим из обоих миров, функционально и идеально. – FoxDeploy

+0

Хорошо, я согласен с этим! –

Смежные вопросы