What was I thinking
-
My personal favorite from C#. Someone was testing the value of a boolean variable.
if (someBooleanVariable == true)
return true;
else
return false;Later they refactored it to this thinking it was an improvement. :)
return someBooleanVariable == true ? true : false;
You mean they missed the totally obvious contraction to
return someBooleanVariable ? true : false
They should hang their head in shame!
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
-
You mean they missed the totally obvious contraction to
return someBooleanVariable ? true : false
They should hang their head in shame!
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
-
:rolleyes:
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
-
My personal favorite from C#. Someone was testing the value of a boolean variable.
if (someBooleanVariable == true)
return true;
else
return false;Later they refactored it to this thinking it was an improvement. :)
return someBooleanVariable == true ? true : false;
G James wrote:
Later they refactored it to this thinking it was an improvement. :)
return someBooleanVariable == true ? true : false;
That's pretty poor refactoring, it should have been:
interface IBooleanConverter {
bool BooleanToBoolean(bool value);
}class BooleanConverter : IBooleanConverter {
public BooleanToBoolean(bool value) {
return value == true ? true : false;
}
}interface IBooleanConverterFactory {
IBooleanConverter CreateBooleanConverterFactory();
}class ConfigurationBooleanConverterFactory : IBooleanConverter {
public IBooleanConverter CreateBooleanConverter() {
return (IBooleanConverter)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverter"]);
}
}static class BooleanConverterFactoryFactory {
public IBooleanConverterFactory CreateBooleanConverterFactory() {
return (IBooleanConverterFactory)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverterFactory"]);
}
}// ...
return BooleanConverterFactoryFactory.CreateBooleanConverterFactory().CreateBooleanConverter().BooleanToBoolean(someBooleanVariable == true ? true : false);
It is clear that this is more maintainable. There is currently this method in our code-base because some [one] of our developers is so bad that we need to hold his hand through everything:
public static T As(this object obj) {
return obj as T;
}Yes guys, an extension method that replicates a keyword.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb] Jonathan C Dickinson (C# Software Engineer)
-
G James wrote:
Later they refactored it to this thinking it was an improvement. :)
return someBooleanVariable == true ? true : false;
That's pretty poor refactoring, it should have been:
interface IBooleanConverter {
bool BooleanToBoolean(bool value);
}class BooleanConverter : IBooleanConverter {
public BooleanToBoolean(bool value) {
return value == true ? true : false;
}
}interface IBooleanConverterFactory {
IBooleanConverter CreateBooleanConverterFactory();
}class ConfigurationBooleanConverterFactory : IBooleanConverter {
public IBooleanConverter CreateBooleanConverter() {
return (IBooleanConverter)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverter"]);
}
}static class BooleanConverterFactoryFactory {
public IBooleanConverterFactory CreateBooleanConverterFactory() {
return (IBooleanConverterFactory)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverterFactory"]);
}
}// ...
return BooleanConverterFactoryFactory.CreateBooleanConverterFactory().CreateBooleanConverter().BooleanToBoolean(someBooleanVariable == true ? true : false);
It is clear that this is more maintainable. There is currently this method in our code-base because some [one] of our developers is so bad that we need to hold his hand through everything:
public static T As(this object obj) {
return obj as T;
}Yes guys, an extension method that replicates a keyword.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb] Jonathan C Dickinson (C# Software Engineer)
my eyes bleed and my head hurts X| it's so dificult to believe i'm seeing so well structured shit-code :doh:
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
-
my eyes bleed and my head hurts X| it's so dificult to believe i'm seeing so well structured shit-code :doh:
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
Sentenryu wrote:
it's so dificult to believe i'm seeing so well structured sh*t-code
And a lesson has been learnt about GOF design patterns :D.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb] Jonathan C Dickinson (C# Software Engineer)
-
While editing a much tweaked process that I wrote, I found this T-SQL:
DECLARE @NumDays INT;
SELECT @NumDays =
CASE
WHEN @Client = 'Client1' THEN @DaysBack
WHEN @Client = 'Client2' THEN @DaysBack
ELSE @DaysBack
END;This is what happens when you go from actual numbers to a variable, without checking the code. :-O
This could make a good business sense when some decisions for different clients have not been made. Make the code structure ready and wait for the changes. I recently worked on a project in which different user role was supposed to have a different permission. But the decision was not made. Therefore all roles were assigned the same permission during development. Sometimes, the decision is never made. Several years later, when you look at the code, you would question why you did that.
TOMZ_KV
-
You mean they missed the totally obvious contraction to
return someBooleanVariable ? true : false
They should hang their head in shame!
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
You're not following good form. You should use CONSTANTS for things that like.
return someBooleanVariable ? Boolean.Parse(Boolean.TrueString) : Boolean.Parse(Boolean.FalseString);
;)
-
You're not following good form. You should use CONSTANTS for things that like.
return someBooleanVariable ? Boolean.Parse(Boolean.TrueString) : Boolean.Parse(Boolean.FalseString);
;)
You mean
return someBooleanVariable.ToString() == Boolean.TrueString? Boolean.Parse(Boolean.TrueString) : Boolean.Parse(Boolean.FalseString);
Right?
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
-
You mean
return someBooleanVariable.ToString() == Boolean.TrueString? Boolean.Parse(Boolean.TrueString) : Boolean.Parse(Boolean.FalseString);
Right?
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
Good call. :D
-
Sentenryu wrote:
it's so dificult to believe i'm seeing so well structured sh*t-code
And a lesson has been learnt about GOF design patterns :D.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb] Jonathan C Dickinson (C# Software Engineer)
-
It took this long to get this simple return?
-
You mean they missed the totally obvious contraction to
return someBooleanVariable ? true : false
They should hang their head in shame!
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
-
You mean they missed the totally obvious contraction to
return someBooleanVariable ? true : false
They should hang their head in shame!
cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP
Not good enough:
if (((Boolean)someBooleanVariable).equals(true)) {
return someBooleanVariable == true ? someBooleanVariable : false;
} else {
return someBooleanVariable == false ? someBooleanVariable : true;
}it's called the Irish Method - to be sure, to be sure, to be sure.
Panic, Chaos, Destruction. My work here is done. Drink. Get drunk. Fall over - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
-
G James wrote:
Later they refactored it to this thinking it was an improvement. :)
return someBooleanVariable == true ? true : false;
That's pretty poor refactoring, it should have been:
interface IBooleanConverter {
bool BooleanToBoolean(bool value);
}class BooleanConverter : IBooleanConverter {
public BooleanToBoolean(bool value) {
return value == true ? true : false;
}
}interface IBooleanConverterFactory {
IBooleanConverter CreateBooleanConverterFactory();
}class ConfigurationBooleanConverterFactory : IBooleanConverter {
public IBooleanConverter CreateBooleanConverter() {
return (IBooleanConverter)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverter"]);
}
}static class BooleanConverterFactoryFactory {
public IBooleanConverterFactory CreateBooleanConverterFactory() {
return (IBooleanConverterFactory)
Activator.CreateInstance(ConfigurationManager.AppSettings["Types.BooleanConverterFactory"]);
}
}// ...
return BooleanConverterFactoryFactory.CreateBooleanConverterFactory().CreateBooleanConverter().BooleanToBoolean(someBooleanVariable == true ? true : false);
It is clear that this is more maintainable. There is currently this method in our code-base because some [one] of our developers is so bad that we need to hold his hand through everything:
public static T As(this object obj) {
return obj as T;
}Yes guys, an extension method that replicates a keyword.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb] Jonathan C Dickinson (C# Software Engineer)
Ah, now I see what people mean by maintainable code - code that will require maintenance, and hence pay the bills for years to come. Genius.