Article View: pl.comp.lang.javascript
Article #51007Re: Funkcja korzystająca z instrukcji switch
From: PawelS
Date: Thu, 26 Jan 2012 18:54
Date: Thu, 26 Jan 2012 18:54
159 lines
6495 bytes
6495 bytes
Vax pisze:
> W dniu 2012-01-24 22:28, PawelS pisze:
>
>> wykonuję ściśle określone porównania,
>> które z pewnych powodów wyciąłem,
>
> no i? owe "ściśle określone" _porównania_ już zwracają bool.
> Albo porównanie jest prawdziwe, albo jest fałszem.
> Zatem:
>
> return jakieś_porównanie;
>
> zamiast
>
> if(jakieś_porównanie){
> return true;
> }else{
> return false;
> }
>
> bo to właśnie masło maślane i zamiast zwrócić wynik "czy 5 jest
> większe od trzech?" (TAK/NIE) wykonujesz: "jeżeli prawdą jest, że pięć
> jest większe od trzech, odpowiedz TAK a jeśli NIE to odpowiedz NIE"
>
>> nie zrozumiałeś chyba [...inline_ciach...],
>
> nie zrozumiałeś chyba, że nawet jeśli ten niefortunny zapis jest
> porównaniem, to jego wynik JUŻ jest wartością logiczną, gotową do
> zwrócenia, po co ten zbędny bełkot "jeśli to prawda to prawda a jak nie
> to fałsz"? ;p
>
>>> Jakim cudem return ma zwracać random, a if nie?
>>
>> bardzo prostym logicznym warunkiem:
>> tu poniżej porównuję to pole z 1,
>> chociaż nie zawsze porównanie jest z 1:
>> if ($this->PROJECTROW['is_public']==1) {
>> return true;
>> } else {
>> return false;
>> }
>
> i jakim to cudem:
>
> return $this->PROJECTROW['is_public']==1;
>
> ma zwracać wartość losową?
> Zwróci dokładnie to samo, co Twój bełkot, tylko szybciej.
>
>> tu poniżej sprawdzam nie pustość pola:
>> if (!empty($this->USERPERMISSIONS['log_time'])) {
>> return true;
>> } else {
>> return false;
>> }
>
> return !empty($this->USERPERMISSIONS['log_time'];
>
>> a tu np: zdarza się jeszcze sprawdzać użytkownik jest adminem:
>> if (AuthRedmine::getInstance()->isAdmin()) {
>> /* USER IS ADMIN ($this->AUTHROW[admin]==1) ACCESS GRANTED */
>> return true;
>> } else {
>> return false;
>> }
>
> straszne!
>
> return AuthRedmine::getInstance()->isAdmin();
>
>> teraz zapisz mi to swoim skrótem,
>
> proszę, powyżej.
>
>> a potem wróć do tego kodu za pół roku,
>> ciekawe czy wlot zrozumiesz
>> co miałeś na myśli pół roku temu,
>
> Ty jakiś ociężały jesteś?
>
> 1. return $this->PROJECTROW['is_public']==1;
> odpowiedz "czy klucz is_public jest równy jeden"
>
> 2. return !empty($this->USERPERMISSIONS['log_time'];
> zwróć "nie-pustość" klucza log_time
>
> 3. return AuthRedmine::getInstance()->isAdmin();
> przekaż odpowiednią wartość zwróconą przez daną metodę.
>
> ...zamiast dodatkowo bełkotać, że jeśli to co mam zwrócić (pewien
> warunek) jest prawdą, to zwracam (jakże egzotycznie) prawdę, a jeśli
> nieprawdą, to zwracam, uwaga, zaskoczenie... nieprawdę!
Brawo, brawo, brawo,
genialne, bardzo genialne,
przez chwilę zastanawiałem się czemu tak właśnie nie zrobiłem
co wydaje się być logiczne,
po co zwracać true, jeśli sam warunek jest true,
zamiast zwrócić samego warunku, który by już zwrócił co trzeba.
Niestety za dużo ze swego kodu wyciąłem
przez co stał się on nieczytelny
i nie pokazał co tak naprawdę robię wykonuję,
zwłaszcza to return false było bardzo mylące:
W swej magicznej metodzie: checkpermissions()
zwracam true tylko w przypadku gdy zezwalam na wykonanie danego kodu,
w przeciwnym przypadku w zależności od różnych czynników
(błędne dane nie pozwalające określić uprawnienia,
dane pozwalające stwierdzić brak uprawnień do wykonania czynności
ewentualnie formularz z logowaniem jeśli wymagany jest użytkownik
inny niż anonimowy - każdy bez zalogowania)
wykonuję jedną z następujących czynności:
1:return AuthRedmine::getInstance()->NotFound(); // zwraca false
2:return AuthRedmine::getInstance()->Forbidden(); // zwraca false
3:if(AuthRedmine::getInstance()->loginRequired()&&AuthRedmine::getInstance()->isAnonymous()){
3: /* AUTHROW['login_required']==1 */
3: $applogin=new Login();
3: $applogin->loginCall();
3: return false; // zwraca false
3:}
równie dobrze mógłbym zapisać:
return $applogin->loginCall();
jedna linia mniej byłaby,
Teraz bardzo uprzejmie proszę was moi szanowni przedmówcy
podajcie swoje złote środki o ile to nie jest top secret
oraz o ile nic wam nie grozi za podzielenie się waszą
tajemniczą i przeogromną wiedzą.
Nie myślałem nad tym za długo, więc tak mi wyszedł
ten mój swego rodzaju model uprawnień,
może i trochę zagmatwany, ale szczerze wierzę w to
że zaraz mnie poprawicie i pokażecie
jak to porządnie/profesjonalnie zapisać.
> [ciach - bezsensownie zacytowany kawał postu]
>
>> czy jesteś aż tak ograniczony,
>
> nie, Ty jesteś ograniczony, mylisz grupy i nie wycinasz zbędnych cytatów.
>
>> że nie widzisz że kod w PHP miał pokazać ideę,
>
> czy jesteśtak ograniczony, żeby na grupie o JS nie potrafić pokazać idei
> w tymże języku?
> Może mam Ci przekazać idee w assemblerze Z80?
>
>> nie chciało mi się go przepisywać na JSa,
>
> czyli okazałeś brak szacunku potencjalnym czytelnikom
>
>> więc wkleiłem PHP, ale w sumie w JS też bym go podobnie zapisał,
>
> Czyli zapisałbyś jak baran, który nie rozumie swego(?) kodu i powiela
> tylko jakieś "wzorce projektowe".
>
> Sorry, ale sam się prosisz...
>
> v.
Technical Details
Message-ID:
<jfs7h1$8na$1@julia.coi.pw.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.pw.edu.pl!not-for-mailReferences:
<a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jfbo35$gq3$1@julia.coi.pw.edu.pl> <jfcklt$875$1@news.icm.edu.pl> <jfjehq$r02$1@julia.coi.pw.edu.pl> <jflu94$5il$1@mx1.internetia.pl> <jfmf0f$lo5$1@julia.coi.pw.edu.pl> <jfmqb1$j0i$1@news.icm.edu.pl> <jfn7qh$sgr$1@julia.coi.pw.edu.pl> <jfnbqo$ocr$1@news.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.pw.edu.pl!not-for-mail From: PawelS <cbrbob@10g.pl> Newsgroups: pl.comp.lang.javascript Subject: Re: Funkcja korzystająca z instrukcji switch Date: Thu, 26 Jan 2012 19:54:31 +0100 Organization: Warsaw University of Technology Lines: 159 Message-ID: <jfs7h1$8na$1@julia.coi.pw.edu.pl> References: <a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jfbo35$gq3$1@julia.coi.pw.edu.pl> <jfcklt$875$1@news.icm.edu.pl> <jfjehq$r02$1@julia.coi.pw.edu.pl> <jflu94$5il$1@mx1.internetia.pl> <jfmf0f$lo5$1@julia.coi.pw.edu.pl> <jfmqb1$j0i$1@news.icm.edu.pl> <jfn7qh$sgr$1@julia.coi.pw.edu.pl> <jfnbqo$ocr$1@news.icm.edu.pl> NNTP-Posting-Host: 10.5.4.3 Mime-Version: 1.0 X-Trace: julia.coi.pw.edu.pl 1327604065 8938 10.5.4.3 (26 Jan 2012 18:54:25 GMT) X-Complaints-To: usenet@pw.edu.pl NNTP-Posting-Date: Thu, 26 Jan 2012 18:54:25 +0000 (UTC) In-Reply-To: <jfnbqo$ocr$1@news.icm.edu.pl> User-Agent: Thunderbird 2.0.0.24 (X11/20110622) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit