Jak jajka same w sobie mogą być booleanem? Powinno być isJajkaExist() czy jakoś tak. No i skoro już są tym booleanem to po co jeszcze przyrównanie do true? A po trzecie bezpieczniej byłoby napisać if (true == jajka) w razie jakby mu się liczba "=" poebala i zrobił przypisanie
Odpowiedz
Zmodyfikowano
1 raz.
Ostatnia modyfikacja:
20 grudnia 2017 o 14:24
@Frogy0:
raczej doJajkaExist()
Żeby było logicznie i bez definiowania metod (choć do samego zakupu parówek pewnie będzie trzeba), możemy potraktować jajka jako tablicę o ilości elementów równej ilości jajek, które sklep może pomieścić maksymalnie. Wtedy można napisać if (jajka[0] != null).
@czepialski: Jak to "do"? Przecież nie tworzych jajek tylko sprawdzasz czy istnieją. Liczba jajek może się zmieniać więc tablica to słabe rozwiazanie. Chyba, że potraktujemy jako opakowanie tylko ale wtedy w pierwszym może nie być akurat jajka bo ktoś buchnął :D
Już prędzej jako listę i wtedy if(!jajka.isEmpty())
@czepialski: powinno być exist() jako metoda obiektu jajka klasy Jajka. Jak w nazwie metody masz "do" to znaczy, że chcesz by ta metoda coś robiła. Metodę doJajkaExist() można zrozumieć jako jakiś pseudo konstruktor czy inną metodę tworzącą.
Najlogiczniej powinno być:
if(!jajka.empty()) zakładając, że jajka są kontenerem przechowującym n obiektów jajko, albo troszkę bardziej obiektowo:
if(sklep.getTowary()[jajko])
Tak jak @Frogy0 napisał też jest dobrze, ale troszkę przydługa nazwa, zwłaszcza gdyby miała ona być metodą klasy jajko.
EDIT
@Frogy0
uprzedziłeś mnie ;)
Odpowiedz
Zmodyfikowano
2 razy.
Ostatnia modyfikacja:
20 grudnia 2017 o 16:37
@Marhibur: od 7 lat piszę w C++, w Javie napisałem jedynie kilka modów do MC, wiesz, że w C++ też możesz stosować OOP? Ty natomiast NA PEWNO dopiero zaczynasz przygodę z programowaniem i jesteś na etapie gdzie uważasz, że już wszystko wiesz. Spokojnie, to mija jak się zorientujesz ile jeszcze nauki przed tobą ;)
Odpowiedz
Zmodyfikowano
1 raz.
Ostatnia modyfikacja:
20 grudnia 2017 o 17:13
@Frogy0,LPHusarz:
Z 'do' zamiast 'is' chodziło tylko i wyłącznie o semantykę języka angielskiego (patrz nick ;)), nie o sam sens takiej konstrukcji - nie mówi się 'is jajka exist', tylko 'do jajka exist'. Gdyby było 'jajko', byłoby 'doesJajkoExist()'.
"Liczba jajek może się zmieniać" - dlatego tablica ma rozmiar stały, równy maksymalnej ilości jajek, którą sklep może/chce zamówić. Zakładając, że układamy je po kolei od pozycji 0, jeśli obiektu 'jajko' nie ma na pozycji 0, to znaczy, że jajek nie ma.
Oczywiście nie jest to optymalne rozwiązanie, ale na potrzeby napisania zwięzłego komentarza jak w screenie, bez definiowania metod. Czyli if (!jajka.isEmpty()), albo if(sklep.getTowary()[jajko]) wymagają definicji isEmpty() (jeśli dobrze pamiętam ta metoda jako predefiniowana jest dla Stringów) i .getTowary(). Jajka[] jedynie tego, że obiekt jest poprawnie stworzony/zainicjowany. A w żarcie chodzi o to, żeby było jak najbardziej zwięźle i podstawowo, żeby jak największa grupa żart załapała :)
Z Waszych if(!jajka.empty()) jest najfajniejsze, bo używa funkcji wbudowanej w pakiet (nie tworzonej samemu, czego czepiam się wyżej) i niejako implikuje, że obiekt do którego się odnosi jest tablicą; ale nie jest jednoznaczne, bo mimo wszystko nie mamy pewności czym jest jajka, ani skąd i czym jest empty().
Oczywiście to wszystko bzdury, no i i tak o kant tyłka potłuc cały żart, bo nie kupisz parówek bez zdefiniowania metody, przynajmniej ja nie widzę takiego sposobu (może tutaj coś zaproponujecie ;P), może rzeczywiście poza coutem "Poproszę 10 parówek". Pozdrawiam :)
@czepialski: jeśli używasz STL'a i jajka trzymasz w dowolnym kontenerze to
if(!jajka.empty()) działa bezproblemowo ;) chociażby dla vectora: cplusplus.com/reference/vector/vector/empty/
samemu nie trzeba definiować żadnej metody, a co do żartu no to cóż istnieje spora szansa, że programista bardzo rzadko ma "zwykłe" poczucie humoru, dlatego się "czepiamy" kodu (chociaż większość doświadczonych programistów zapewne by zignorowała to, bo i po co rozpoczynać shitstorm).
Zapytanie z błędami i niepotrzebnymi zapisami. Po co if(jajka==true) jak można if(jajka), przy kup parówki brakuje cudzysłowu i średnika. Prawdziwie profesjonalnie zapisał bym to tak:
std::cout<<jajka?"Kup parówki":"";
@karakar: profesjonalnie bo z użyciem operatora porównania gdzie jako argument false masz pusty ciąg znaków? czyli do strumienia przesuwasz nic w przypadku false i wykonujesz 2 operacje zamiast jednej, no nieźle...
Odpowiedz
Zmodyfikowano
1 raz.
Ostatnia modyfikacja:
20 grudnia 2017 o 16:40
@karakar: i podczas debugowania (albo nawet kompilacji) masz przeskok kilku instrukcji.
myślisz, że dlaczego programiści w EA piszą przeważnie
if(condition)
expression;
albo nawet
if(condition)
{
expression;
}
Chodzi o to by podczas refaktoryzacji kodu albo ewentualnego debugowania nie było kilometrowych linijek i by jedna linijka była odpowiedzialna za jedną rzecz.
@Marhibur: napiszę tylko: "XD".
using namespace std;
to jeden z największych grzechów jakie możesz popełnić. Pisze się to tylko pod warunkiem, że wie się co się robi.
@karakar: I piszesz to w odpowiedzi na własny komentarz, w którym się popisujesz. Tym bardziej, że LPHusarz ma racje (poza tą częścią z `using namespace std;`).
a cudzysłów gdzie
Odpowiedz@romek95a: Wszystko w porządku, linijkę nad tym było: #define kup "kup" #define parowki <<"parowki";
Odpowiedz@mexorsu: nieprawda
OdpowiedzBez sensu, bo jak nie będzie jajek to będzie error, bo nie będzie wiedział ile parówek kupić.
OdpowiedzJak jajka same w sobie mogą być booleanem? Powinno być isJajkaExist() czy jakoś tak. No i skoro już są tym booleanem to po co jeszcze przyrównanie do true? A po trzecie bezpieczniej byłoby napisać if (true == jajka) w razie jakby mu się liczba "=" poebala i zrobił przypisanie
OdpowiedzZmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 14:24
@Frogy0: raczej doJajkaExist() Żeby było logicznie i bez definiowania metod (choć do samego zakupu parówek pewnie będzie trzeba), możemy potraktować jajka jako tablicę o ilości elementów równej ilości jajek, które sklep może pomieścić maksymalnie. Wtedy można napisać if (jajka[0] != null).
Odpowiedz@czepialski: Jak to "do"? Przecież nie tworzych jajek tylko sprawdzasz czy istnieją. Liczba jajek może się zmieniać więc tablica to słabe rozwiazanie. Chyba, że potraktujemy jako opakowanie tylko ale wtedy w pierwszym może nie być akurat jajka bo ktoś buchnął :D Już prędzej jako listę i wtedy if(!jajka.isEmpty())
Odpowiedz@czepialski: powinno być exist() jako metoda obiektu jajka klasy Jajka. Jak w nazwie metody masz "do" to znaczy, że chcesz by ta metoda coś robiła. Metodę doJajkaExist() można zrozumieć jako jakiś pseudo konstruktor czy inną metodę tworzącą. Najlogiczniej powinno być: if(!jajka.empty()) zakładając, że jajka są kontenerem przechowującym n obiektów jajko, albo troszkę bardziej obiektowo: if(sklep.getTowary()[jajko]) Tak jak @Frogy0 napisał też jest dobrze, ale troszkę przydługa nazwa, zwłaszcza gdyby miała ona być metodą klasy jajko. EDIT @Frogy0 uprzedziłeś mnie ;)
OdpowiedzZmodyfikowano 2 razy. Ostatnia modyfikacja: 20 grudnia 2017 o 16:37
@LPHusarz: no i sie milosnik javy pojawil. Z wami to jak z weganami i prawnikami. Odzywacie sie niepytani :)
Odpowiedz@Marhibur: od 7 lat piszę w C++, w Javie napisałem jedynie kilka modów do MC, wiesz, że w C++ też możesz stosować OOP? Ty natomiast NA PEWNO dopiero zaczynasz przygodę z programowaniem i jesteś na etapie gdzie uważasz, że już wszystko wiesz. Spokojnie, to mija jak się zorientujesz ile jeszcze nauki przed tobą ;)
OdpowiedzZmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 17:13
@Frogy0,LPHusarz: Z 'do' zamiast 'is' chodziło tylko i wyłącznie o semantykę języka angielskiego (patrz nick ;)), nie o sam sens takiej konstrukcji - nie mówi się 'is jajka exist', tylko 'do jajka exist'. Gdyby było 'jajko', byłoby 'doesJajkoExist()'. "Liczba jajek może się zmieniać" - dlatego tablica ma rozmiar stały, równy maksymalnej ilości jajek, którą sklep może/chce zamówić. Zakładając, że układamy je po kolei od pozycji 0, jeśli obiektu 'jajko' nie ma na pozycji 0, to znaczy, że jajek nie ma. Oczywiście nie jest to optymalne rozwiązanie, ale na potrzeby napisania zwięzłego komentarza jak w screenie, bez definiowania metod. Czyli if (!jajka.isEmpty()), albo if(sklep.getTowary()[jajko]) wymagają definicji isEmpty() (jeśli dobrze pamiętam ta metoda jako predefiniowana jest dla Stringów) i .getTowary(). Jajka[] jedynie tego, że obiekt jest poprawnie stworzony/zainicjowany. A w żarcie chodzi o to, żeby było jak najbardziej zwięźle i podstawowo, żeby jak największa grupa żart załapała :) Z Waszych if(!jajka.empty()) jest najfajniejsze, bo używa funkcji wbudowanej w pakiet (nie tworzonej samemu, czego czepiam się wyżej) i niejako implikuje, że obiekt do którego się odnosi jest tablicą; ale nie jest jednoznaczne, bo mimo wszystko nie mamy pewności czym jest jajka, ani skąd i czym jest empty(). Oczywiście to wszystko bzdury, no i i tak o kant tyłka potłuc cały żart, bo nie kupisz parówek bez zdefiniowania metody, przynajmniej ja nie widzę takiego sposobu (może tutaj coś zaproponujecie ;P), może rzeczywiście poza coutem "Poproszę 10 parówek". Pozdrawiam :)
Odpowiedz@czepialski: jeśli używasz STL'a i jajka trzymasz w dowolnym kontenerze to if(!jajka.empty()) działa bezproblemowo ;) chociażby dla vectora: cplusplus.com/reference/vector/vector/empty/ samemu nie trzeba definiować żadnej metody, a co do żartu no to cóż istnieje spora szansa, że programista bardzo rzadko ma "zwykłe" poczucie humoru, dlatego się "czepiamy" kodu (chociaż większość doświadczonych programistów zapewne by zignorowała to, bo i po co rozpoczynać shitstorm).
OdpowiedzZapytanie z błędami i niepotrzebnymi zapisami. Po co if(jajka==true) jak można if(jajka), przy kup parówki brakuje cudzysłowu i średnika. Prawdziwie profesjonalnie zapisał bym to tak: std::cout<<jajka?"Kup parówki":"";
Odpowiedz@karakar: profesjonalnie bo z użyciem operatora porównania gdzie jako argument false masz pusty ciąg znaków? czyli do strumienia przesuwasz nic w przypadku false i wykonujesz 2 operacje zamiast jednej, no nieźle...
OdpowiedzZmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 16:40
@LPHusarz: nie przesadzajmy z optymalizacją. Efekt jest zachowany, a wszystko mam w 1 linii.
Odpowiedz@karakar: i podczas debugowania (albo nawet kompilacji) masz przeskok kilku instrukcji. myślisz, że dlaczego programiści w EA piszą przeważnie if(condition) expression; albo nawet if(condition) { expression; } Chodzi o to by podczas refaktoryzacji kodu albo ewentualnego debugowania nie było kilometrowych linijek i by jedna linijka była odpowiedzialna za jedną rzecz.
Odpowiedz@karakar: prawdziwie profesjonalnie to powinienes uzyc namespace zeby nie bylo std::
Odpowiedz@Marhibur: napiszę tylko: "XD". using namespace std; to jeden z największych grzechów jakie możesz popełnić. Pisze się to tylko pod warunkiem, że wie się co się robi.
Odpowiedz@LPHusarz: Gdy widzę "using namespace std" myślę sobię "o, nowy student-stażysta" ^^
Odpowiedz@karakar: "Ch*j, że wywołuję funkcję, która nic nie robi. Ważne, że mam w jednej linijce"
Odpowiedz@mikmas: Purysci C++ się znaleźli. To tylko głupie parówki, a nie rozbudowana aplikacja. Chodzi tylko o popisanie się.
Odpowiedz@karakar: I piszesz to w odpowiedzi na własny komentarz, w którym się popisujesz. Tym bardziej, że LPHusarz ma racje (poza tą częścią z `using namespace std;`).
OdpowiedzA nie trzeba by było pójść jeszcze w kierunku "else"? Bo jak nie ma jajek, to miał kupić parówki i tak, tylko nie wiadomo, ile.
Odpowiedzif(jajka != boost::none) { kup(parowka*10); }
OdpowiedzWszystko źle :D Class jajka { public void kup_parówki(int ilość) { //Jakaś czynność MessageBox.Show("Kupiono " + Convert.ToString(ilość) + " parówek. ) } public boolean parówkacheck() { return true; } class Main() { if(Jajka.parówkacheck() == true) { Jajka.Kup_parówki(10); } else { MessageBox.Show("Nie ma jajek nie ma parówek" } } }
Odpowiedz@Jarosaki: źle zamknąłeś nawias i nie ma return 0;, nie wiem kto tu ma wszystko źle
Odpowiedz@Jarosaki: parowkacheck i kup_parówki nie mogą być metodami klasy jajka - są poza jej kompetencjami.
Odpowiedz