short-if - czy często stosowany?

0

witam!
czy w C++ często stosuje się short-if? Niedawno odkryłem to częste zastosowanie podczas nauki frameworków (Vue i React). Odkopałem stary projekt C++ i zacząłem robić zmiany kodu. Uczyłem się jeszcze na pierwszych wydaniach książki Symfonia C++ i nie wiem jak obecna społeczność C++ przyjmuje taki styl.

if( distance <= FOGOFWAR_DISTANCE )
	{
		m_explored = true;
	}

	else
	{
		m_explored = false;
	}

Na:

m_explored = ( distance <= FOGOFWAR_DISTANCE ) ? true : false;
13

U ciebie to akurat stosowanie tego operatora trochę nie ma sensu, bo możesz zrobić m_explored = dinstance <= FOGOFWAR_DISTANCE; i zadziała to tak samo dobrze. A resztę wrzucił @MarekR22 w komentarzu ;)

0

W C++ nie piszę ale w Javie używałem operatora trójargumentowego zawsze jak tylko się dało

0

w PHP też się przydawało

0

Nie wiem jaki jest kontekst tego kodu ale zawsze możesz napisać(co pozwoli używać tego w nieco dłuższych przypadkach):

m_explored = false;
if( distance <= FOGOFWAR_DISTANCE )
    {
        m_explored = true;
    }
1

Stosowane, ważne aby było czytelne. Jak masz warunek, który lepiej się czyta w klasyfikacyjnym ifie lepiej to zrobić. Jak lepiej się czyta w short ifie lepiej zrobić w short ifie
Pamiętaj że kod częściej się czyta niż pisze

1

j.w.
Nie zapominać że czasami lepiej się czyta w tablice:

const static const char *YesOrNot[]={"Nie","Tak"};
cout<<YesOrNot[a>b]<<endl;
1

ternary operator może znacznie uprościć używanie const

auto const result = some_condition ? get_something() : get_something_other();

Przy 'zwyklym' if-else, żeby mieć const trzeba by użyć np. IIL

auto const result = [&](){ 
    if (some_condition) 
      return do_something() 
    else 
     return do_something_other(); 
  }();
1

Nawet nie wiedziałem, że to się nazywa short-if.
Tak przy okazji: zdajesz sobie sprawę, że czasem jest niezastąpiony, bo w przeciwieństwie do normalnego if'a, może być l-value?

int a{1},b{2};
(false ? a : b) = 100;

1 użytkowników online, w tym zalogowanych: 0, gości: 1