🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #50986

Re: Funkcja korzystająca z instrukcji switch

#50986
From: Vax
Date: Wed, 18 Jan 2012 12:00
113 lines
5303 bytes
W dniu 2012-01-18 10:08, NKAB - pisze:
> Vax<mail@zepsul.sie>  napisał(a):
>
>> nie zrozumiałeś co pisał?
>
> Gdybym wiedział to nie odzywałbym się.

ale ja pisałem dokładnie to samo:
"W tym konkretnym przypadku starczy seria case-ów, bez niczego (a 
zwłaszcza break), w ostatnim case zaś ów alert gdyż dla każdego 
wcześniejszego przypadku jest ten sam (i tym razem z break, żeby nie 
wykonać akcji dla default) a potem deafult z alternatywą (już bez 
całkiem zbędnego break)."

>> switch(x){
>>    case 1:
>>    case 2:
>>    case 3: alert('jest: '+x);break
>>    default: alert('inna wartość')
>> }

> Teraz to już wiem o co chodzi.
>
> Ale zuważ, ze ten jego przykład praktycznie nie wykorzystuje
> tego co nalepsze w tym swiczu czyli szybki wyskok po napotkaniu
> spełnionego warunku.

Jak to nie? W trzecim przypadku, który zachodzi także dla drugiego i 
pierwszego. Wykorzystuje praktycznie i logicznie. Sam zresztą to samo 
pisałem. On za to namieszał z teorią n/t default, która sprawdzi się dla 
default na samym końcu i mimo częściowego "sprawdzania się" jest tylko 
teorią a nie faktycznym sposobem działania switch.

A czy "szybki wyskok" to jest "to co najlepsze" w switch, to bym nie 
powiedział, raczej najpowszechniejsze i niestety dla większości jedyne. 
Ot, taki zamiennik else-ifów. Otóż nie, możliwości są dużo większe.

[...]

> Default to warunek wyłacznie dla sytuacji awaryjnych i w zasadzie
> bardzo rzadko powinien być wykorzystywany przez aplikację,

To chyba w Twej twórczości. Jak sama nazwa wskazuje, jest to działanie 
domyślne, gdy np. nie nastąpią sytuacje wyjątkowe, wymagające wykonania 
jakich specjalnych akcji.

Dla sytuacji A,B oraz trzeba w pewien sposób przygotować dane, dla C 
_dodatkowo_ wykonać wpis do logu, dla X w ogóle zrobić coś innego, a dla 
50-ciu pozostałych przypadków zachować się standardowo:

switch(sytuacja){
  case'X':cos_zupelnie_innego();break
  case'C':loguj()
  case'A':
  case'B':preparuj()
  default:standard()
}

czy taki _typowy_ kontroler wykracza poza Twą wyobraźnię?
Ew. w takim zapisie:

switch(sytuacja){
  case'C':loguj()
  case'A':
  case'B':preparuj()
  default:standard();break
  case'X':cos_zupelnie_innego()
}

Zgaduję, że raczej się nie spotykałeś...

> naczęściej generuje

O tak, materiału porównawczego zapewne masz tyle, by uznać go za 
reprezentatywny. Wybacz, ale twórczość amatorska i kursy dla opornych 
pisane przez przypadkowe osoby się nie liczą.

[...]

> Te alerty w każdym warunku to sugestia, że na ogół wywołuje się tam
> jakieś funkcje, które dalej mogą robić coś z tym cosiem.

Te alerty i break na końcu każdej linii sugerują, że uważasz ja za 
niezbędny element składniowy, na podobieństwo średnika, co w obu 
przypadkach jest nieprawdą.
W tym wypadku pokazałeś nie "jakieś funkcje" ale powtórzoną bez sensu 
kilkukrotnie takąż samą instrukcję, za to nie pokazałeś, co czyni break 
i czy mogło by go czasem nie być.
Czyli "zniknąłeś" sytuację "dla wartości A lub B lub C wykonaj to samo", 
błędnie sugerując, że każdy przypadek _należy_ obsłużyć indywidualnie.

> Ja dałem swój przykład pisany z palca bez zastanawiania

Ja też często pisze z palca, ale nigdy bez zastanawiania. Gorąco polecam.

> a koledzy powinni dać swoje przykłady na zasadzie:

Nie ucz kolegów, co powinni, pierwiej sam zacznij się pisać "z 
zastanowieniem" - choćby chwilowym. To nie jest grupa o pierdołach, ale 
dla niektórych źródło wiedzy, miejsce nauki.

> "to pozwolę sobie poprawić twój kod..." no i oczywiście
> zamiast słów dać poprostu ten kod, właśnie jak dziecku.

Niezrozumienie frazy "starczy seria pustych case-ów, w ostatnim case 
alert i break, potem default dla pozostałych" raczej najlepiej o Tobie 
nie świadczy ;)

> A tak to wyszło jak u tego trepa Maciarewicza (...)

kuźwa, może przynajmniej tu obywać się może bez polityki?

v.
Technical Details
Message-ID: <jf6c82$uhd$1@news.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
References: <a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jeouk7$1m$1@inews.gazeta.pl> <jep6t6$ges$1@mx1.internetia.pl> <jepa9c$hn4$1@news.icm.edu.pl> <jf0lrh$2k0$1@inews.gazeta.pl> <jf0ucr$gs4$1@mx1.internetia.pl> <jf39d9$mf$1@inews.gazeta.pl> <jf49km$jko$1@news.icm.edu.pl> <jf625l$s3j$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
From: Vax <mail@zepsul.sie>
Newsgroups: pl.comp.lang.javascript
Subject: Re: Funkcja korzystająca z instrukcji switch
Date: Wed, 18 Jan 2012 13:00:17 +0100
Organization: ICM, Uniwersytet Warszawski
Lines: 113
Message-ID: <jf6c82$uhd$1@news.icm.edu.pl>
References: <a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jeouk7$1m$1@inews.gazeta.pl> <jep6t6$ges$1@mx1.internetia.pl> <jepa9c$hn4$1@news.icm.edu.pl> <jf0lrh$2k0$1@inews.gazeta.pl> <jf0ucr$gs4$1@mx1.internetia.pl> <jf39d9$mf$1@inews.gazeta.pl> <jf49km$jko$1@news.icm.edu.pl> <jf625l$s3j$1@inews.gazeta.pl>
NNTP-Posting-Host: 89-68-3-67.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: news.icm.edu.pl 1326888002 31277 89.68.3.67 (18 Jan 2012 12:00:02 GMT)
X-Complaints-To: usenet@news.icm.edu.pl
NNTP-Posting-Date: Wed, 18 Jan 2012 12:00:02 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20111105 Thunderbird/8.0
In-Reply-To: <jf625l$s3j$1@inews.gazeta.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit