There are many ways to handle UDFs. Some create a central share and reference them via CALL '\\server\UDFshare\function.udf' statements, which load the UDFs dynamically each time the script runs - the advantage is the UDFs are centrally maintained and the script always gets the latest copy of the UDF. The disadvantage is that the script always gets the latest version of the UDF.
Basically, with a central, dynamic repository, you need to test every dependent script whenever you change a UDF.
Others (like me) like to keep the UDFs on a central share, but bind them into our code during development. Some do this via copy/paste, and some of us use my KGen tool to enumerate your script and dynamically build a script with all UDF dependencies included. This freezes the build with the current UDF versions, which allows you to take your time to test dependent scripts. KGen also runs Sanity on the finished script, looking for common coding errors such as missing EndIf, Loop, & Done clauses and mismatched quotes and parens.
It really comes down to what you're comfortable with in your environment. Find a way that works for you and stick with it.
Glenn
_________________________
Actually I
am a Rocket Scientist!