Aktywne Wpisy
czemuztak +430
Wiadomo, wykop to portal ze śmiesznymi obrazkami, ludzie wrzucają śmieszne rzeczy, można się pośmiać, poszydzić, pokłócić się, poobrażać ruskich, kaczora, donalda, konfederacje.... a nie, już pisałem o ruskich. Ogolnie: po to tu wchodzimy.
Ale naprawdę życzę wszystkim, którzy mieszkają w tych rejonach, żeby ich nie zalało, żeby nie tracili swoich domów, albo i w najgorszych przypadkach życia. Trzymajcie się tam, oby na memach się skończyło!
#powodz #wroclaw #
Ale naprawdę życzę wszystkim, którzy mieszkają w tych rejonach, żeby ich nie zalało, żeby nie tracili swoich domów, albo i w najgorszych przypadkach życia. Trzymajcie się tam, oby na memach się skończyło!
#powodz #wroclaw #
PiersKurczaka +114
Chipsy paskudne jak życie polaka
Załóżmy, że chcę mieć funkcję, która wykonuje jedną z dwóch operacji w zależności od tego, który z dwóch teoretycznie przeciwstawnych warunków jest spełniony. Jeżeli żaden to niechybnie oznacza, że coś się z-----o, trzeba zakończyć program i zwrócić informację o błędzie. Napisałem:
void function() {
....if(coś) {
........operacja1();
....} else if(coś_innego) {
........operacja2();
....} else {
........std::unexpected();
....}
}
Kod dobrze spełnia swoje zadanie. Jeżeli coś jest nie tak to wywala się i wypisuje, że sterowanie zabrnęło tam, gdzie dojść nigdy nie powinno. Po poprawieniu błędów, w gotowym programie unexpected() nigdy się nie wykona. Na pewno tak jest sto razy lepiej niż zostawienie funkcji w ogóle bez else, bo wyskakują warningi, a po ominięciu if i else if mam naruszenie ochrony pamięci i nie jest jasne na pierwszy rzut oka gdzie.
Ale ładnie to tak? Może tak zostać, czy jest jakiś lepszy, ogólnie przyjęty sposób rozwiązywania problemów tego typu? Wydaje mi się jakieś takie brudne to rozwiązanie, zaciemniające kod. A zależy mi, żeby zrobić to porządnie. Propozycje?
#stylkodowania #programowanie #cpp
else
.
żeby się nie babrać z std::
ale okazało się, że nawet bez else to ostrzeżenie się nie pojawia. :)
Przy okazji, nie lepiej rzucić wyjątkiem, niƶ wołać
std::unexpected
? (które jest, nota bene, deprecated)
if (!a != !b) {
// rzucasz
@Ginden: Kompletnie nie rozumiem o co Ci chodzi.
Może rozwinę myśl: piszę grę, a funkcja funkcja przyjmuje obiekt, który w założeniu
@Onoki: Pierwszy
if
wykonuje operację
if
- de facto sprawdza on, czy obiekt należy do któregoś z graczy (bo do tego sprowadzają się chyba
PS. Ja bym się na Twoim miejscu zastanawiał, skąd się w ogóle biorą niczyje obiekty, bo prawdopodobnie masz gdzieś w logice aplikacji błąd.
@Ginden: Nie, ale po co mam robić gorzej skoro mogę zrobić lepiej? :(
Pracuję nad tym, ale na razie tak być musi. Jak w Heroes, masz stwory graczy i stwory neutralne. :D
@Onoki: Wiesz, czasem czytelność kodu jest ważniejsza niż dwa takty procesora... Można to oczywiście wrzucić do zmiennych pomocniczych i porównywać tylko wartości, żaden problem.
sort, hex, distance, copy, move, fill, remove, min, max... nie sposób wymienić.