Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Returns a `String` instead of a type which disallows the formulation of the problematic `assertEquals` to begin with.

I'm not sure what the best attribution would be but "Make illegal states unrepresentable" would be a fantastic addition to this list pairing well with "parse, don't validate".

A stricter type would force you to parse the URL and would either fix the error (because cleaning trailing/leading slashes might make sense here) or throw a clear error from the parser.

It can be slightly more verbose when you just want to write a string in your test for convenience but can (and does) save a lot of debugging pain for less trivial cases.



>> Returns a `String` instead of a type which disallows the formulation of the problematic `assertEquals` to begin with.

> I'm not sure what the best attribution would be but "Make illegal states unrepresentable" would be a fantastic addition to this list pairing well with "parse, don't validate".

The phrases I have seen describing using types to make illegal states incapable of being represented are "programming with types"[0] and "type level programming"[1].

HTH

0 - https://www.manning.com/books/programming-with-types

1 - https://rebeccaskinner.net/posts/2021-08-25-introduction-to-...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: