Tales from J.S. Crypt, Day 3
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
I hope you're on a good day rate plus cleaning bills. I can see a lot of coffee getting spilt.
veni bibi saltavi
-
I meant transaction type
The first rule of Transaction Type 2 Club is: ...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
-
I meant transaction type
Wastedtalent wrote:
I meant transaction type
:laugh: Oops. Don't know. I'll have to see if it's every used in the code! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Find a positive way of looking at such code: there is no need to waste money for an obfuscator! :-D
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Good lord ... below is how this might be worked out in Visual Prolog. This sure looks easier to understand, debug and maintain (extend).
class predicates
getTransInt : ( string ) -> integer determ.
clauses
getTransInt( S ) = I :-
I = transStrInt(S), !.
getTransInt( S ) = _ :-
stdio::write( "\nUnknown transaction string: ", S ),
fail.class predicates transStrInt : ( string ) -> integer determ. clauses transStrInt( "A" ) = 1. transStrInt( "B" ) = 2. transStrInt( "C" ) = 2. transStrInt( "D" ) = 4. transStrInt( "E" ) = 4. transStrInt( "F" ) = 4. transStrInt( "G" ) = 5. transStrInt( "H" ) = 6.
-
Good lord ... below is how this might be worked out in Visual Prolog. This sure looks easier to understand, debug and maintain (extend).
class predicates
getTransInt : ( string ) -> integer determ.
clauses
getTransInt( S ) = I :-
I = transStrInt(S), !.
getTransInt( S ) = _ :-
stdio::write( "\nUnknown transaction string: ", S ),
fail.class predicates transStrInt : ( string ) -> integer determ. clauses transStrInt( "A" ) = 1. transStrInt( "B" ) = 2. transStrInt( "C" ) = 2. transStrInt( "D" ) = 4. transStrInt( "E" ) = 4. transStrInt( "F" ) = 4. transStrInt( "G" ) = 5. transStrInt( "H" ) = 6.
I trust there is sarcasm in there. I can read this and get that it is similar though wrong if based upon the original code snippet - nothing in the original maps with 2. The original code snippet is certainly not the most elegant; however, it would be clear to anyone looking at it what is being done: my dog would be able to figure out that code (and quite possibly have written it). Prolog is much more of an "acquired" taste. Personally, while I try to make code look a little better than the original author did, the important concept (over efficiency and elegance) is that the next poor schmuck who needs to maintain that code can determine what it is doing very quickly. Usually, the time code needs modified is when something has broken and the results were already needed but were prevented by such failure. At such times, while trying to determine what the various pieces of code do, elegance has NO value; efficiency has NO value. Only being able to determine what the code is trying to do is of ANY importance, so CLARITY is paramount.
-
I trust there is sarcasm in there. I can read this and get that it is similar though wrong if based upon the original code snippet - nothing in the original maps with 2. The original code snippet is certainly not the most elegant; however, it would be clear to anyone looking at it what is being done: my dog would be able to figure out that code (and quite possibly have written it). Prolog is much more of an "acquired" taste. Personally, while I try to make code look a little better than the original author did, the important concept (over efficiency and elegance) is that the next poor schmuck who needs to maintain that code can determine what it is doing very quickly. Usually, the time code needs modified is when something has broken and the results were already needed but were prevented by such failure. At such times, while trying to determine what the various pieces of code do, elegance has NO value; efficiency has NO value. Only being able to determine what the code is trying to do is of ANY importance, so CLARITY is paramount.
See how easy it is to spot errors when you use table-lookup code! :-D
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Unfortunately, such code is still being written. I came across something like that last year (written just weeks earlier). This one is actually pretty clean compared to that one. It had about 10 types and each type could results in 3 actions, so that was an 10x3 if else branch :sigh: Why don't these programmers ever stop to think "just because I can does it mean I should?" X| Or maybe they do, but their lack of knowledge prevents them from coming up with anything better and their lack of knowledge about their lack of knowledge prevents them from asking someone else for help... Ignorance is bliss and crappy code I guess.
Best, Sander arrgh.js - Bringing LINQ to JavaScript SQL Server for C# Developers Succinctly Object-Oriented Programming in C# Succinctly
-
A-H are my replacements of more descriptive types to anonymize this drech slightly. I left the misspelling in.
// Function to genearte the Transaction Type Code
public string getTransactionType(string TransactionType)
{
if (TransactionType == ("A"))
{
TransactionType = "1";
}
else if (TransactionType == ("B") || TransactionType == ("C"))
{
TransactionType = "3";
}
else if (TransactionType == ("D") || TransactionType == ("E") || TransactionType == ("F"))
{
TransactionType = "4";
}
else if (TransactionType == ("G"))
{
TransactionType = "5";
}
else if (TransactionType == ("H"))
{
TransactionType = "6";
}
return TransactionType;
}Now granted, the point is to return a code given a type. But the method is misnamed, the way it's done is horrid, and what's worse, the now encoded type is used everywhere else in the code for conditional logic so you have no idea what the logic is doing without this piece of the type-code map. And putting strings in parenthesis definitely improves the confidence of the equality test! Marc
V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Maybe a bit masochistic, but I'm waiting for the next one. :-\
Wrong is evil and must be defeated. - Jeff Ello