Background
Microsoft’s Powershell is a very matured tool that provides various tooling towards modularized software development.
In this post, we will considering one of it foundational offerings.
Sourcing
For instance, you download a powershell script from an online source.
You look at the code and you like the way it does something.
So you identify its applicability towards some user cases.
You can either copy that code everywhere or keep in it’s original file.
In so doing, you can update that one file as the original author make’s changes.
Use Case
calculator
Original Code
Set-StrictMode -Version Latest $script:ErrorActionPreference = "Stop" [int] $number1 = 0; [int] $number2 = 0; [float] $result = 0; [string] $operator = ""; [string] $FORMAT_OUTPUT = "`t{0} {1} {2} is {3}"; [string] $log = ""; function calculatorEmbedded([string] $operator, [int] $number1, [int] $number2) { [float] $result =0; if ($operator -eq "+" ) { $result = $number1 + $number2; } elseif ($operator -eq "-" ) { $result = $number1 - $number2; } elseif ($operator -eq "*" ) { $result = $number1 * $number2; } elseif ($operator -eq "/" ) { $result = $number1 / $number2; } elseif ($operator -eq "%" ) { $result = $number1 % $number2; } return ($result); } $number1=4; $number2=3; <# Addition ( Plus [+] ) #> $operator = "+"; $result = calculatorEmbedded $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Subtract ( [-] ) #> $operator = "-"; $result = calculatorEmbedded $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Multiply ( [*] ) #> $operator = "*"; $result = calculatorEmbedded $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Division ( [/] ) #> $operator = "/"; $result = calculatorEmbedded $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Modulo ( [%] ) #> $operator = "%"; $result = calculatorEmbedded $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output "";
Revised Code
utilityCalculator.ps1
<# function calculatorModularized([string] $operator, [int] $number1, [int] $number2) #> function calculatorModularized ([string] $operator, [int] $number1, [int] $number2) { [float] $result =0; if ($operator -eq "+" ) { $result = $number1 + $number2; } elseif ($operator -eq "-" ) { $result = $number1 - $number2; } elseif ($operator -eq "*" ) { $result = $number1 * $number2; } elseif ($operator -eq "/" ) { $result = $number1 / $number2; } elseif ($operator -eq "%" ) { $result = $number1 % $number2; } return ($result); }
calculatorModularized.ps1
Set-StrictMode -Version Latest $script:ErrorActionPreference = "Stop" <# Declare Constants #> Set-Variable FORMAT_OUTPUT -option Constant -value "`t{0} {1} {2} is {3}"; <# Declare Variables #> [int] $number1 = 0; [int] $number2 = 0; [float] $result = 0; [string] $operator = ""; [string] $log = ""; <# Source File from utility\utilityCalculator.ps1 #> . utility\utilityCalculator.ps1 $number1=4; $number2=3; Write-Output ""; Write-Output ""; <# Addition ( Plus [+] ) #> $operator = "+"; $result = calculatorModularized $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Subtract ( [-] ) #> $operator = "-"; $result = calculatorModularized $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Multiply ( [*] ) #> $operator = "*"; $result = calculatorModularized $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Division ( [/] ) #> $operator = "/"; $result = calculatorModularized $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output ""; <# Modulo ( [%] ) #> $operator = "%"; $result = calculatorModularized $operator $number1 $number2 $log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result; Write-Output $log; Write-Output "";
Source Code Control
GitLab
- Snippet ( Powershell – Sourcing )
- Link
Link - File Names
- Whole
- calculatorWhole.ps1
- Modularized
- Helper Functions
- utilityCalculator.ps1
- Main Unit
- calculatorModularized.ps1
- Helper Functions
- Whole
- Link