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.