如何解决何时在 PowerShell 中创建新函数? 命名呼叫
主要问题是我应该什么时候在 powershell 中创建一个新函数来使代码更易于维护。 鉴于以下:
if ($Subtype -eq "Master" -and @($ColumnList | ? {$_.id -in $PK -and $_.name -like '*_SK'}).count -eq 1) {
#TableColumnListPK for Master Data
$global:TableColumnListPK = ($ColumnList | ? {$PK -match $_.id -and $_.name -like '*_SK'} | foreach {
Create-AttributeWithDatatype
})
#Column PK with only name-------------------------------------------------------------------------------------------------------
$global:PKName = @(($ColumnList | ? {$_.id -in $PK -and $_.name -like '*_SK'}).name)
#ColumnList non PK columns---------------------------------------------------------------------------------------------------------------------------
$global:TableColumnListNonPK = $([string]::Join(",`r`n",($ColumnList | ? {($ColumnList | ? {$PK -match $_.id -and $_.name -like '*_SK'}).id -notmatch $_.id} | foreach {
Create-AttributeWithDatatype
})))
# Add comma after last column if it doesn't have one.
if ($TableColumnListPK -notlike "*,") {
$global:TableColumnListPK += ","
}
}
这很难读,也不太清楚是做什么的,所以我把它分成一行代码的功能
if (Is_Master_And_SK_As_PK) {
$TableColumnListPK = Master_And_SK_As_PK_TableColumnListPK($PK,$ColumnList)
$PKName = Master_And_SK_As_PK_PKName($PK,$ColumnList)
$TableColumnListNonPK = Master_And_SK_As_PK_TableColumnListNonPK($PK,$ColumnList)
}
function Master_And_SK_As_PK_PKName($PK,$ColumnList){
#Column PK with only name-------------------------------------------------------------------------------------------------------
$PKName = @(($ColumnList | ? {$_.id -in $PK -and $_.name -like '*_SK'}).name)
return $PKName
}
这里的封装是不是太过分了? 我没有找到很多关于 powershell 最佳实践的资源。大多数 powershell 代码都写在一行中,而其他语言将使用多行,所以不清楚是否应该为此创建单独的函数? 在 powershell 中,关于 Inderection 的最佳方法是什么?
解决方法
[这] 是不是太过分了
我不会这么说,虽然这个问题有点主观。
如果您是主要维护者,并且它使代码更易于阅读和维护对您来说,那就完美了 :-)
您可能想要更改的一些内容:
命名
PowerShell 命令(包括函数)应使用 Verb-Noun
格式,即:
function Get-PKName($PrimaryKey,$ColumnList){
$PKName = @(($ColumnList | ? {$_.id -in $PK -and $_.name -like '*_SK'}).name)
return $PKName
}
呼叫
PowerShell 的命令调用语法使用空格分隔参数参数,而不是逗号分隔的列表:
$PKName = Master_And_SK_As_PK_PKName($PK,$ColumnList)
# should be
$PKName = Master_And_SK_As_PK_PKName $PK $ColumnList
# or with a better name
$PKName = Get-PKName $PK $ColumnList
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。