Firstly the ValueLibrary is a better approach to ValueObjects than Roblox’s, the reasons for this are:
better performance
modern features that other game engines migth not even have
no OOP
Now that you know the reasons, here is the why:
I want to improve Roblox Studio
I am nostalgic to ValueInstances
Next is the usage, you can create a Value with a name or a name and a parent. You can access the Value with the name if you only specified it, otherwise you need to input the name and the parent. The changed function calls all functions when the Value’s value gets set.
Thereafter if we draw a conclusion, you should use the ValueLibrary because:
better performance
better scripting
no deprecation
If you find any bugs or issues, post a comment about them.
You can use O.O.P outside of the module, but the module self does NOT use O.O.P, because it just isn’t the most efficient. Did you hear D.O.D? If not, here: https://www.youtube.com/watch?v=rX0ItVEVjHc. That is the most legendary learning resource on Data Oriented Design. If you really want to use O.O.P against all odds whatsoever, you could make a wrapper around the ValueLibrary.
Attributes can’t store tables and you can’t change the code for Attributes unlike for the ValueLibary.