BCS wrote:
The much worse class of bugs is the ones that you can be staring at the location of the bug, have an epiphany about what the bug is and still not be able to tell if it is the case: the bug is here, but cause by a line of code that could be anywhere.

If I understand that correctly, it's when you alter one line or declaration in one part of the code, and it silently breaks another piece of code far away in some other piece of not-obviously-related code.

I tend to agree.

It's why we don't hardcode array dimensions outside of the declaration - we started out in C by using a #define for it, and then in D encode the array dimension as part of the type. A local issue is one that has no adverse effects outside of the local context. The fall-through would be this. A non-local one is one like adding an enum case, because it can silently break code far away.

D makes some significant progress in reducing the non-local effects of changes, and is one of the big improvements over using C and C++.

Reply via email to