Aktywne Wpisy
Shyvana +231
Od mniej więcej 10 roku życia chciałam zostać prawnikiem.
Jak rozpoczęłam studia to dotarło do mnie, że chcę zostać sędzią.
W zeszłym tygodniu w wieku już lat niemalże 30 prowadziłam swoją pierwszą rozprawę i kurde, mówię wam, warto było poświęcić te wszystkie lata na naukę.
Teraz już tylko ostatni zryw w postaci egzaminu zawodowego i zaczynamy 乁(♥ ʖ̯♥)ㄏ
#prawo #chwalesie
Jak rozpoczęłam studia to dotarło do mnie, że chcę zostać sędzią.
W zeszłym tygodniu w wieku już lat niemalże 30 prowadziłam swoją pierwszą rozprawę i kurde, mówię wam, warto było poświęcić te wszystkie lata na naukę.
Teraz już tylko ostatni zryw w postaci egzaminu zawodowego i zaczynamy 乁(♥ ʖ̯♥)ㄏ
#prawo #chwalesie
O2O2122 +258
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ę #!$%@?ł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 błąd
}
else {
if (a) {
// magia
}
else { // b == true
// inna magia
}
}
@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 istnieje i
@Onoki: Pierwszy
if
wykonuje operację sprawdzenia, czy
a
i
b
po rzutowaniu na
bool
są sobie równe (wg twojego przykładu -
coś
i
coś_innego
). Jeśli tak - rzucasz wyjątkiem.
Jeśli są różne, to przechodzimy do bloku
else
. Najpierw sprawdzamy sobie warunek
a
(
coś
). Jeśli jest poprawny, to wykonujemy odpowiedni kod. Jeśli nie - znaczy, że warunek
b
musi być prawdziwy
if
- de facto sprawdza on, czy obiekt należy do któregoś z graczy (bo do tego sprowadzają się chyba warunki
coś
i
coś innego
, nieprawdaż?).
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ć.