|
Bloody hell! this really needs a filter/translator to be understood or may take ages to be refined!!
|
|
|
|
|
If you work your head around inline IFs you'll find them really useful. I use them in C# all the time!!
|
|
|
|
|
I agree -- they help promote a nice functional style. But this example is over the top.
|
|
|
|
|
I'm not saying I don't understand this code. I'm saying this code is ridiculous. And it's called a ternary comparison, not "nested if's".
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
If I read this correctly and my understanding of JavaScript precedence is correct, I think this is an ugly version of a big else-if statement. Something like this:
if (aw == null) {
return a0 === "!=";
} else if (a0 === "=") {
return a2 === aX;
} else if (a0 === "*=") {
return a2.indexOf(aX) >= 0;
} else if (a0 === "~=") {
return (" " + a2 + " ").indexOf(aX) >= 0;
} else if (!aX) {
return a2 && aW !== false;
} else if (a0 === "!=") {
return a2 !== aX;
} else if (a0 === "^=") {
return a2.indexOf(aX) === 0;
} else if (a0 === "$=") {
return a2.substr(a2.length - aX.length) === aX;
} else if (a0 === "|=") {
return a2 === aX || a2.substr(0, aX.length + 1) === aX + "-";
}
return false;
which you could also write as
return (aW == null) ? a0 === "!="
: (a0 === "=") ? a2 === aX
: (a0 === "*=") ? a2.indexOf(aX) >= 0
: (a0 === "~=") ? (" " + a2 + " ").indexOf(aX) >= 0
: (!aX) ? a2 && aW !== false
: (a0 === "!=") ? a2 !== aX
: (a0 === "^=") ? a2.indexOf(aX) === 0
: (a0 === "$=") ? a2.substr(a2.length - aX.length) === aX
: (a0 === "|=") ? a2 === aX || a2.substr(0, aX.length + 1) === aX + "-"
: false;
where this shows the IF on the left and the RETURN THIS on the left of the "?" on each line. Ugly. Un-maintainable. Yuck.
|
|
|
|
|
I actually prefer the second version from a readability point of view (now that you've reformatted so it makes sense). Stick a comment at the top to say what it's doing and it wouldn't be so bad. The variable names and dynamic typing I'll admit is horrendous for readability though.
|
|
|
|
|
Finally I see what it is doing after 10 mins of staring at the code.
|
|
|
|
|
There is nothing clever here; the code was obfuscated with a tool; it was intended to be hard to understand; the original code is probably very readable.
|
|
|
|
|
[quote]
There is nothing clever here; the code was obfuscated withby a tool; it was intended to be hard to understand; the original code is probably very readable.
[/quote]
FTFY
|
|
|
|
|
Try rewriting it using if ... else ... instead of ? :, this might increase readability to the point where you'll understand it.
But don't get your hopes high. This looks like some code intentionally obfuscated, potentially hand-crafted, intentionally written so it's not comprehensible, in order to prevent exactly what you are trying to do.
|
|
|
|
|
Wow! That's the scariest ternary I've ever seen
|
|
|
|
|
The best I have done using javascript is to produce the confirm button.
I also do not like the funny code they write even jquery gives me headache
I only read newbie introductory dummy books.
|
|
|
|
|
|
One line of code thing aside, this is a pretty idiomatic use of the ternary operator. What's so clever about it?
|
|
|
|
|
Like others have said ... that looks to me like Obfuscated code - emitted by a tool of some kind.
If I had a developer working for me that wrote code like that I'd fire his ass.
-Max
|
|
|
|
|
I agree. Although inline IFs are useful, that code looks as bad as it would look in the more traditional IF { } block form. I'm not convinced it's been generated by an obfuscator though.
|
|
|
|
|
Not being very much interested in web-stuff, yet I am proud of my new home-page, NOT ONE line of javascript - did you know that CSS can be used to achieve much of the "hover" functionality, which was all I ever wanted to customize, basically.
pg--az
|
|
|
|
|
As others have said there is nothing demented or intentionally spiteful about this at all. They simply used an optimization tool (minifier), which removes all white space and uses the minimum amount of characters for variables. It compresses JavaScript quite a bit for downloading. It is a highly common, and very recommended, practice.
The actual source code with all comments and descriptive variable names is on the project site.
|
|
|
|
|
Anytime I see variables like a0, a1, a2 etc. it's probably because the code has been run through a compression or obfuscation utility to make it smaller and less likely to be swiped. I'm guessing that's what's happened here.
[edit: and if I'd read the responses so far I'd have seen that my reply was redundant].
Cheers,
Drew.
|
|
|
|
|
Yes. my master.
I'd blame it on the Brain farts.. But let's be honest, it really is more like a Methane factory between my ears some days then it is anything else...
-----
"The conversations he was having with himself were becoming ominous."-.. On the radio...
|
|
|
|
|
As no one else pointed it out I just wanted to say this would probably work better using the OR operator
I may or may not be responsible for my own actions
|
|
|
|
|
I 100% agree with you. Good code is readable. Code that is difficult to read leaves space for difficulty to find bugs which cost the company money.
Maybee its a form of insecurity these guys have. E.g. If I make my code impossible to read, they'll have to keep me employed.
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >>
modified on Wednesday, May 11, 2011 6:54 AM
|
|
|
|
|
He has joined the 'anti-if' campaign.
// ♫ 99 little bugs in the code,
// 99 bugs in the code
// We fix a bug, compile it again
// 101 little bugs in the code ♫
|
|
|
|
|
|
Wasn't sure whether to post this in Clever code or here, but found this snippet in a link on VS standards compliance (http://msdn.microsoft.com/en-us/library/8yk3t00s%28v=vs.71%29.aspx[^]
template <class T>
struct S
{
template<class U> void f(U);
};
template<class T> template <class U> void S<T>::f(U)
{
}
It made me smile this morning. If you're thinking of complaining then just S<T>::f(U) .
|
|
|
|
|
The Boss is wondering why I'm laughing.
Probably also wondering why the app isn't done, but that's neither here nor there.
|
|
|
|