I had the same experience, but consider that PowerShell is intended for use by non-programmers (e.g. system administrators) as an automation language. While that was hard to swallow, there's absolutely nothing wrong with using functions and putting those functions into a .ps1 file for incorporation in other scripts. Nor is there anything wrong with creating script modules and having functions managed (incorporated) when the module is imported -- especially if you're going to unit-test the functions with, say, Pester.
Have a look here: PowerShellPracticeAndStyle and here: powershell-style-guide and here (not free, but worth the money): pesterbook -- you can find free stuff in blogs, but I found it easier to read the book than piece together information.
I surely wish that there was a site such as CPAN (Comprehensive Pearl Archive Network) that organized modules by function (NET, LDAP, TEXT, JSON, MATH, etc.). MS did that with .Net, why not PowerShell? Just sayin'.