Hacker News new | ask | show | jobs
by mixmastamyk 856 days ago
Doctor, it hurts when I punch myself in the face. I need something to prevent that.

I’m talking about realistic errors, not theoretical ones that would crash at first run. You have one test, right? Run the code once before deploying? I thought so. In which case, pyflakes and a few tests find a great majority (not all) of errors devs actually have.

1 comments

> pyflakes and a few tests find a great majority (not all) of errors devs actually have.

No they don't. First of all people are really bad at writing tests. Secondly, writing tests sucks; I would much rather write static type annotations than tedious type checking tests: you know when to stop and you get the other benefits of static types like making the code easier to read and navigate.

Every piece of code I've added static typing to has revealed bugs. One we later hit in production (because the author was stupidly against static typing so I gave up trying to help him).

That bug was simply calling a method that didn't even exist. It was in a code path that wasn't tested, despite having some tests.

But I can see you're from the school of "I don't make mistakes" and convincing you otherwise is about as effective as trying to persuade Christians there isn't a god.

I’ve rescued two very large Python projects bordering on disaster, and have improved many more. In both cases the main problems were architecture-related, they were written at the wrong level of abstraction, then in the wrong language. Those need to be fixed first if you value your time. Typing errors were not a top-ten concern:

https://news.ycombinator.com/item?id=39161025

I.e. there are bugs, there are always bugs. But are they important bugs? Is the question. When faced with a house of cards, do you fix the nails, or start with a new foundation?

Also you don’t write tests just for types. You write tests to validate functionality as you would anyway. And they will find type errors on failure.

Black/white adolescent appeals to the one-true-way are not compelling and why you did not convince, then or now. Typing is simply another useful tool in the toolbox, and I never said it should be avoided—my statements were qualified.

> Typing errors were not a top-ten concern

You're looking at a bridge made of wet cardboard and saying you shouldn't use FEA when designing bridges because the real problems are the fact that it's made of cardboard and it's wet.

> Also you don’t write tests just for types.

Not just. But you do have to write those tests as well if you don't use static typing. I have seen them written. Static typing reduces the number of tests you need to write. This is very very very well known.

> Black/white adolescent appeals to the one-true-way are not compelling and why you did not convince, then or now.

No, it's because you view static types as an admission that you might make mistakes and you don't want to admit that to yourself. You literally equated making typing mistakes with punching yourself in the face.

Jokes aside, a decent IDE will find errors like you mentioned. Don’t need to add types either, the static analysis will find it.

Turns out the trivial errors you’ve having trouble with are not a substantial problem with the right tools. As mentioned in my first reply.