Autor Wątek: czy zawsze sprawdzać wskaźnik instrukcją IF?  (Przeczytany 439 razy)

Offline zajmundov

  • Użytkownik

# Wrzesień 02, 2017, 08:50:13
witajcie!
Piszę małą grę i mam pytanie bardziej z zakresu kultury i dobrych zwyczajów programisty. Czy powinienem zawsze weryfikować wskaźnik i dopiero potem zaczynać instrukcję? Funkcja będzie pracować na obiekcie na który pokazuje wskaźnik.

void GSPlaying::PlayerUseItem( UseItem* useItem )
{
if( useItem )
{
//instrukcje
}
}

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline beem

  • Użytkownik
    • Wordpress Blog

# Wrzesień 02, 2017, 11:16:10
Argumenty typu obiekt lepiej przekazywać przez referencje.

Offline Brajanowski

  • Użytkownik

# Wrzesień 02, 2017, 13:32:25
Możesz zawsze skorzystać z asserta. I będziesz tylko sprawdzać przy debugowaniu.

coś w ten deseń, albo zrobić jak powiedział beem i przesyłać przez referencje.
void GSPlaying::PlayerUseItem( UseItem* useItem ) {
  assert(useItem != 0);
  // instrukcje
}

Offline DezerteR

  • Użytkownik

# Wrzesień 02, 2017, 14:45:38
Albo użyć inteligentnych wskaźników i tak zorganizować kod by niezainicjalizowany nie mógł tam trafić. No bo czy do UseItem możesz wrzucić item którego nie ma? Jeśli tak to masz problem z dizajnem.

Walidowanie wskaźników ma sens gdy rezultaty pochodzą z zewnętrznego źródła i nie zawsze mogą być, np. wynik raycasta z jakiegoś silnika fizyki. Kod powinien być tak zrobiony żebyś był pewien poprawności danych. Do tego najlepsze będą referencje, tzn. że jak dostajesz wynik w pointerze to walidujesz i dalej przepychasz jako referencje.