Records are cool, but I’m not sure I like that anonymous constructor business. new (2000, 1, 1) New WHAT? Now I have to dig into the object to figure out what it is? Code should be clear without digging. Uncle Bob would call this rude programming.

Various languages allows you to code on some unreadable ways, but that doesn’t mean you have to do it. If you’re working on a personal project, you know this declaration is not a good practice, and if you’re working for a company the code reviews must address this. The language puts the tools at your disposition, it’s your decision how you make use of them.

source