I like and agree with everything Spiney says above except the UUID part… I am allergic to extra bits of crap lying around like that.
Instead, just use the name of the ScriptableObject, and discipline yourself to have unique names for all, either via putting all SO instances in a directory (which lets the OS enforce name uniqueness), or else have your own tooling to enforce uniqueness, or at least complain when you make two with the same name to give you an immediate chance to fix the duplication.
Also, it is way easier to see ShortSword3
in your savefile than something like cca0cfdc-112f-11ef-86c2-b8e85646c3c6
Then as you save, you will save a proxy string.
Loading/Saving ScriptableObjects by a proxy identifier such as name: