PowerShell Stijlgids

Inleiding

Dit artikel biedt een uitgebreide PowerShell-stijlgids met de focus op leesbaarheid, consistentie en best practices voor het schrijven van schone en eenvoudig te onderhouden scripts. Deze gids is gebaseerd op de PowerShell Practice and Style Guide.

Code-indeling en Opmaak

Zorg voor Consistentie in Indeling

Gebruik consistente inspringing, regellengte en hoofdlettergebruik om de leesbaarheid te verbeteren.

Hoofdlettergebruik

  • Gebruik PascalCase voor alle openbare identifiers.
  • Gebruik lowercase voor taal-sleutelwoorden.
  • Gebruik UPPERCASE voor sleutelwoorden in commentaar-gebaseerde hulp.
function Write-Host {
    [CmdletBinding()]
    param(
        [psobject]$Object,
        [switch]$NoNewline
    )
}

One True Brace Style (OTBS)

Plaats accolades aan het einde van een regel en sluit af op een nieuwe regel.

if ($value -gt 0) {
    "Positive"
} else {
    "Non-Positive"
}

CmdletBinding en Blokvolgorde

Begin functies met [CmdletBinding()] en gebruik de volgorde param(), begin, process, end.

[CmdletBinding()]
param ()
process { }
end { }

Inspringing

Gebruik vier spaties per niveau van inspringing.

foreach ($item in $list) {
    Do-Something -Param $item
}

Maximale Regellengte

Beperk regels tot 115 tekens. Gebruik splatting of haakjes voor nette regelafbrekingen.

$Params = @{
    Name = "Explorer"
    Verbose = $true
}
Get-Process @Params

Witregels en Witruimte

  • Plaats twee witregels rond functies.
  • Vermijd spaties aan het einde van regels.
  • Gebruik spaties rond operatoren en parameters.
$Value = 5 + 3

Vermijd Puntkomma’s

Gebruik geen puntkomma’s als afsluiter van regels.

$Options = @{
    Margin = 2
    Padding = 2
}

Functies

Basisfuncties

  • Vermijd return. Geef objecten direct terug.
  • Laat een spatie tussen functienaam en parameters.
function MyFunction ($param1, $param2) {
    ...
}

Geavanceerde Functies

  • Gebruik naamgeving in de vorm van <Werkwoord>-<ZelfstandigNaamwoord>.
  • Gebruik altijd [CmdletBinding()].
  • Retourneer objecten in het process {} blok.
  • Specificeer OutputType.
function Get-Example {
    [CmdletBinding()]
    [OutputType([psobject])]
    param (
        [int]$Id
    )
    process {
        New-Object -TypeName psobject -Property @{ ID = $Id }
    }
}

Documentatie en Commentaar

Algemene Richtlijnen voor Commentaar

  • Houd commentaar actueel.
  • Schrijf in het Engels, bij voorkeur in volledige zinnen.
  • Leg keuzes en logica uit, niet de werking van de code.
# Pas de marge aan vanwege UI-overlapping
$Margin = $Margin + 2

Blokcommentaar

Gebruik # of <# ... #> voor langere toelichtingen.

<#
    .SYNOPSIS
        Voorbeeld van blokcommentaar.
#>

Inline Commentaar

Lijn inline commentaar netjes uit.

$Options = @{
    Margin = 2      # UI-correctie
    Padding = 2     # Ruimte rondom tekst
}

Commentaar-gebaseerde Help

Voeg altijd hulpsecties toe aan je scripts.

function Get-Example {
    <#
    .SYNOPSIS
        Haalt voorbeeldgegevens op.
    .EXAMPLE
        Get-Example
    #>
}

Leesbaarheid

Code Inspringen

Zorg voor duidelijke inspringing binnen structuren.

foreach ($item in $items) {
    Process-Item $item
}

Vermijd Backticks

Gebruik splatting in plaats van backticks voor regelafbrekingen.

$Params = @{
    Class = "Win32_LogicalDisk"
    Filter = "DriveType=3"
}
Get-WmiObject @Params

Naamgevingsconventies

Gebruik Volledige Commando- en Parameternamen

Vermijd aliassen en afkortingen.

Get-Process -Name Explorer

Gebruik Expliciete Paden

Gebruik volledige paden of $PSScriptRoot.

Get-Content "$PSScriptRoot\README.md"

Vermijd Gebruik van ~

Gebruik ${Env:UserProfile} in plaats van ~.

cd ${Env:UserProfile}

Conclusie

Door deze richtlijnen te volgen, blijven je PowerShell-scripts schoon, consistent en eenvoudig te onderhouden, vooral bij samenwerking binnen teams.

Raadpleeg de originele PowerShell Practice and Style Guide voor meer details.

タイトルとURLをコピーしました