• Create Account

## Why do it the easy way?

12 replies to this topic

Posted 25 February 2013 - 05:09 PM

POPULAR

Something I found in our javascript codebase

{
//...
isActive: function(active) {
return (active ? true : false);
}
//...
}


### #2slicer4ever  GDNet+

Posted 25 February 2013 - 05:18 PM

I'm so happy we can vote up in this forum=-)

Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

### #3Michael Tanczos  Staff Emeritus

Posted 25 February 2013 - 06:46 PM

POPULAR

Is it even possible to have *too* many ternary operators?

bool isActive = ((running && !done) ? (done || running) : !(running && done)) ? true : (1==2);

### #4CC Ricers  Members

Posted 26 February 2013 - 12:14 PM

POPULAR

At least it could be worse:

return (active ? active : active);

New game in progress: Project SeedWorld

My development blog: Electronic Meteor

Posted 26 February 2013 - 01:23 PM

Very good ideas for reafctoring in this thread, keep em coming.

### #6Alpheus  GDNet+

Posted 26 February 2013 - 03:29 PM

if (isActive == TRUE) {
return 1;
}
else if (isActive == FALSE) {
return 0;
}


External Articulation of Concepts Materializes Innate Knowledge of One's Craft and Science

Super Mario Bros clone tutorial written in XNA 4.0 [MonoGame, ANX, and MonoXNA] by Scott Haley

If you have found any of the posts helpful, please show your appreciation by clicking the up arrow on those posts

Spoiler

### #7xycsoscyx  GDNet+

Posted 26 February 2013 - 04:09 PM

How about something akin to what I find in some of my companies legacy code:

ASSERT(isActive); // We should never be inactive so lets just assert in debug, it'll be fine in release

return TRUE;



### #8Nercury  Members

Posted 26 February 2013 - 05:25 PM

You have it easy, you are not maintaining legacy PHP code.

This is direct copy-paste from code currently in production.

Guess what is it doing. Hint: in function name.

    function extract_where_from_join($on_condition) {$where_list = array();

$anal_list = array('="' => '"', '= "' => '"', "='" => "'", "= '" => "'");$anal_pos = FALSE;
$anal_end_pos = FALSE;$found_anal_from = FALSE;
$found_anal_to = FALSE; foreach ($anal_list as $anal_from =>$anal_to) {
$anal_pos = strpos($on_condition, $anal_from); if ($anal_pos !== FALSE) {
$found_anal_from =$anal_from;
$anal_end_pos = strpos($on_condition, $anal_to,$anal_pos + strlen($anal_from)); if ($anal_end_pos !== FALSE) {
$found_anal_to =$anal_to;
break;
}
}
}

if ($anal_pos !== FALSE &&$anal_end_pos !== FALSE) {
$anal_value = substr($on_condition, $anal_pos + strlen($found_anal_from), $anal_end_pos -$anal_pos - strlen($found_anal_from));$condition = 'and';
$not_space_bw_pos = strbipos($on_condition, $condition,$anal_pos);
if ($not_space_bw_pos === FALSE) {$where_list[] = array(trim(substr($on_condition, 0,$anal_pos)), $anal_value);$on_condition = substr($on_condition,$anal_end_pos + strlen($found_anal_to)); if ($on_condition === FALSE) {
$on_condition = 'TRUE'; } } else {$where_list[] = array(trim(substr($on_condition,$not_space_bw_pos + strlen($condition),$anal_pos - $not_space_bw_pos -strlen($condition))), $anal_value);$on_condition = substr($on_condition, 0,$not_space_bw_pos) . substr($on_condition,$anal_end_pos + strlen($found_anal_to)); if ($on_condition === FALSE) {
$on_condition = 'TRUE'; } } } return array($where_list, $on_condition); }  It turns out this is parsing SQL join statement and extracting it's condition to be used elsewhere as "where" condition. Talking about easy way? Edited by Nercury, 26 February 2013 - 05:27 PM. ### #9ApochPiQ Moderators Posted 26 February 2013 - 05:29 PM POPULAR I'm far more amused than I probably should be by "$found_anal_from".
Wielder of the Sacred Wands

### #10Michael Tanczos  Staff Emeritus

Posted 26 February 2013 - 06:17 PM

POPULAR

You have it easy, you are not maintaining legacy PHP code.

This is direct copy-paste from code currently in production.

Guess what is it doing. Hint: in function name.

8)   Holy.. anal...   You know, this would be quite an odd naming convention rule to walk into if you got hired by a company.  (Use whatever variable names you want, as long as they include at least one porn industry term)

long long johnson = 69 & 0;  // Initialize counter to zero

That code looks pretty ridiculous for what it does.  I would think you could use a regex for this without much trouble.

Edited by Michael Tanczos, 26 February 2013 - 06:20 PM.

### #11Sik_the_hedgehog  Members

Posted 26 February 2013 - 09:24 PM

Was gonna comment on the original topic, but what the— Abbreviations gone awry o_O And this is why you should avoid abbreviations except for a few well-estabilished ones...

As for the original topic, I find this a lot (and yes, with basic types, not classes which could have side-effects):

if (!blah)
blah = true;

This could have easily done the job:

blah = true;

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

### #12Nercury  Members

Posted 27 February 2013 - 01:03 AM

Was gonna comment on the original topic, but what the— Abbreviations gone awry o_O And this is why you should avoid abbreviations except for a few well-estabilished ones...

As for the original topic, I find this a lot (and yes, with basic types, not classes which could have side-effects):

if (!blah)
blah = true;

This could have easily done the job:

blah = true;

Unless it is dynamically typed language (like javascript):

var blah = "hello";
if (!blah)
blah = true;

// blah remains "hello"

blah = 15;
if (!blah)
blah = true;

// blah remains 15

blah = 0;
if (!blah)
blah = true;

// blah is true 

I hate dynamically typed languages for allowing this.

### #13Sik_the_hedgehog  Members

Posted 27 February 2013 - 07:56 AM

The examples of that I see are usually in C or C++ though...

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.