Today's entry for the "kill it with fire" list
-
:-D
-
Oh no, that can be not only valid, but also necessary... Can you be sure that there's not some strange
#define
somewhere changing the meaning ofTRUE
ortrue
? And when theflags
array is a member of the class (instead of locally declared in a function), its values can be changed from where ever in a different thread. Just make sure you cope with such threats. :-DOh sanctissimi Wilhelmus, Theodorus, et Fredericus!
-
Oh no, that can be not only valid, but also necessary... Can you be sure that there's not some strange
#define
somewhere changing the meaning ofTRUE
ortrue
? And when theflags
array is a member of the class (instead of locally declared in a function), its values can be changed from where ever in a different thread. Just make sure you cope with such threats. :-DOh sanctissimi Wilhelmus, Theodorus, et Fredericus!
Bernhard Hiller wrote:
#define
somewhere changing the meaning ofTRUE
ortrue
?Even more reason to break out the flamethrower... :laugh:
Software Zen:
delete this;
-
Yes, and the flags aren't changed anywhere inside the intervening 'logic'. Not only does he compare a
bool
totrue
, he also compares it to the Windows-definedTRUE
as well, which is not really the same thing.Software Zen:
delete this;
What if, 15 years down the line, someone inserts code between the two different checks that changes the value of TRUE? You have to make absolutely sure that it is still true when the really important piece of code hits. I suggest you add a few inline ifs so that there will never be any doubt.
My plan is to live forever ... so far so good
-
Hey, I recently removed code toying with the global BoolStr variable because some table-internal-to-the-program had to use yes/no instead of true/false which as easily readable but doesn't require meddling with globals.
-
just add this code before the first if statement:
if (flags[0] == TRUE) flags[0] = true;
if (flags[1] == TRUE) flags[1] = true;
if (flags[0] == FALSE) flags[0] = false;
if (flags[1] == FALSE) flags[1] = false;Then you can trust !(not), && and || for the rest of the checks. Or better yet, with 2 Booleans, there are only four possible states, so normalize and then turn it into a switch statement with 0-3.
if (flags\[0\] == TRUE) flags\[0\] = true; if (flags\[1\] == TRUE) flags\[1\] = true; if (flags\[0\] == FALSE) flags\[0\] = false; if (flags\[1\] == FALSE) flags\[1\] = false; int state; if (flags\[0\]) state = 1 else state = 0; if (flags\[1\]) state += 2; switch (state) {case 0-3:...}
-
just add this code before the first if statement:
if (flags[0] == TRUE) flags[0] = true;
if (flags[1] == TRUE) flags[1] = true;
if (flags[0] == FALSE) flags[0] = false;
if (flags[1] == FALSE) flags[1] = false;Then you can trust !(not), && and || for the rest of the checks. Or better yet, with 2 Booleans, there are only four possible states, so normalize and then turn it into a switch statement with 0-3.
if (flags\[0\] == TRUE) flags\[0\] = true; if (flags\[1\] == TRUE) flags\[1\] = true; if (flags\[0\] == FALSE) flags\[0\] = false; if (flags\[1\] == FALSE) flags\[1\] = false; int state; if (flags\[0\]) state = 1 else state = 0; if (flags\[1\]) state += 2; switch (state) {case 0-3:...}
My gastrointestinal tract just inverted itself... X|
Software Zen:
delete this;
-
Is it possible we're talking about Quantum bool ????
Paulo Gomes Measuring programming progress by lines of code is like measuring aircraft building progress by weight. —Bill Gates Everything should be made as simple as possible, but not simpler. —Albert Einstein
-
Is it possible we're talking about Quantum bool ????
Paulo Gomes Measuring programming progress by lines of code is like measuring aircraft building progress by weight. —Bill Gates Everything should be made as simple as possible, but not simpler. —Albert Einstein
-
Maybe it's an existential program looking for the meaning of truth and it couldn't get a hold of Stephen Colbert.
-
My gastrointestinal tract just inverted itself... X|
Software Zen:
delete this;
Even worse: If the //... code that initializes the flags array really assigns those values into it, then it looks like the original code does not even consider these cases: x == true && y == TRUE. 2 variables with 4 possible values each means there should be 16 possible states. Normalizing the values reduces it to 2 variables with 2 possible values which gives 4 states. If true vs TRUE produce different outcomes, then God bless you and convert the "bools" into an enum. Consider creating a multidimensional array where the indexes are your "flags" and you initialize each array element to be the correct answer for that combination of states.
-
-
What if, 15 years down the line, someone inserts code between the two different checks that changes the value of TRUE? You have to make absolutely sure that it is still true when the really important piece of code hits. I suggest you add a few inline ifs so that there will never be any doubt.
My plan is to live forever ... so far so good
To quote my "favorite comment":
#define TRUE FALSE
//Happy debugging suckers"Never attribute to malice that which can be explained by stupidity." - Hanlon's Razor
-
what if
var TRUE = false;
hey!? I betcha didn't think of it, did ya?! :omg: ;PA new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
what if
var TRUE = false;
hey!? I betcha didn't think of it, did ya?! :omg: ;PA new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
This is C++, fortunately.
Software Zen:
delete this;
-
This is C++, fortunately.
Software Zen:
delete this;
well, you know #undef TRUE #define TRUE 0
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
This could make sense in a multithreaded situation, but somehow I've a feeling that's not what you're dealing with...
#SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
-
This could make sense in a multithreaded situation, but somehow I've a feeling that's not what you're dealing with...
#SupportHeForShe Government can give you nothing but what it takes from somebody else. A government big enough to give you everything you want is big enough to take everything you've got, including your freedom.-Ezra Taft Benson You must accept 1 of 2 basic premises: Either we are alone in the universe or we are not alone. Either way, the implications are staggering!-Wernher von Braun
While this code was in fact multithreaded, that had nothing to do with the sloppy way the logic was coded. I've had very few cases where comparing a
bool
variable to a constant made more sense algorithmically than just using the variable as-is. The second part comparing the variable to the WindowsDWORD
constantTRUE
is just plain stupid. It works, but that's no credit.Software Zen:
delete this;