3 ms·
> I have seen a single line of code passed through 4 "interface functions" I once had to deal with a HTTP handler that called `Validate` on interface A which c
by zimpenfish 2y ago
> I have seen a single line of code passed through 4 "interface functions"
I once had to deal with a HTTP handler that called `Validate` on interface A which called `Validate` on interface B which called `Validate` on interface C which called `Validate` on interface D which finally did the actual work. There was a lot of profanity that month.
- Cthulhu_ 2y agoI mean to a point that makes sense; you got your base data types like idk, a bank account number which can be validated, which is inside a bank account which can be validated, which is in a customer which can be validated, etc etc. Visitor pattern style, I believe?
- binary132 2y agoimagine allowing invalid values to exist
- ozr 2y agoSounds awful.
- withinboredom 2y agoThis is actually my preferred approach. If you want to put a 4gb base64 as your phone number, go right on ahead; best believe I will truncate it to a sensible length before I store it, but sure. Who am I to question your reality. Sadly, people abuse shit like that to pass messages (like naming Spotify playlists with messages to loved/friends/colleagues while in jail) and maybe we have to assert a tiny bit of sanity on the world.
- steezeburger 2y agoHow do prisoners have access to Spotify?
- ozr 2y agoPresumably some feature/jailbreak of JPay (and the like) tablets. https://offers.jpay.com/jp5-tablets/ https://offers.jpay.com/jp5-tablets/
- quectophoton 2y ago> imagine allowing invalid values to exist Pretty common, for example when using databases as a mostly dumb store with all the logic in application code, and then a second application (or big refactor) appears and they introduce a subtle bug that results in an invalid `INSERT` (or whatever), and the database happily accepts it instead of rejecting it.
- agency 2y agoimagine enforcing invariants as part of the design of a software system
- nickpeterson 2y agoThe nerve, taking good jobs away from young qa testers. Wait till the IT Union hears of this!
- binary132 2y agoI’m just saying enforce invariants at construction time / type-designing instead of with the validity checks
- zimpenfish 2y agoThis wasn't that kind of validation - it was "is this token allowed to do this thing?" Like "validate your parking" kind of scenario. (And yes, it should probably have been "CheckAuthorisation")
- binary132 2y agonaming things is so hard.
- zimpenfish 2y agoThat would make sense but this was one piece of data being validated against a lookup based off that data. The previous devs just had a, uh, Unique™ style of development. I swear they must have been on some kind of "editor tab count" bonus scheme.
- layer8 2y agoThis can happen when some of the interface operations have added logic, but others (like Validate here) don't, so just get delegated as-is. One typical example is a tower of wrapped streams, where each layer applies additional transformations to the streamed data, but the Close operation is just passed across all layers to the lowest one (which closes the underlying file or whatever).