微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

何时在 PowerShell 中创建新函数? 命名呼叫

如何解决何时在 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 举报,一经查实,本站将立刻删除。