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

No just don't switch on a new kludgy ad hoc argument:

//bad:

int countlines(file afile, bool hasfuckeduplineendings, bool needtobusywaituntilreadswillsucceed)

My preferred solution, and I don't claim that this is correct, is just to put a global variable

bool nexthasfuckeduplineendings = false; //set to true before counting lines in a file that needs preprocessing for fucked up line endings

bool needtobusywaituntilreadswillsucceed = false; // this is a hack. Certain specific files will just fail to read for an unspecified period of time, they will fail and fail and fail and then succeed. For cases that we know this will happen, set this to true.

See how awful and fucked up this is?

It is "obvious" that this hack is just so wrong.

But is it really? It's clear, gets shit done, and is super transparent about how wrong it is.

Should every reader hang in a busy loop?

Should every reader preprocess line endings?

Maybe "no" and "no".

What do you all think?



I think you should copy/paste the whole function, change one of the copies to suit your needs, and then factor out any subroutines the functions have in common.

This is what OP recommends too.


That works okay for the first bool, but for the second duplication wouldn't there be 4 versions already?


You can have 1000 versions. As long as the function is mostly free of side effects, except whatever side effects are documented in a public interface, then you can scale the repository linearly without any real increase in complexity.

This is because while the namespace is wide, in practice you work within a “working set” of your daily use packages.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: