Pe "Habr" a venit peste un cod curios pe JS. care determină cu care avem de a face Aipad - în primul rând, al doilea sau al treilea. Al treilea distinge de toate celelalte este simplu - în proprietatea sa «devicePixelRatio» „2“ este înregistrată. Și primul de la al doilea cum?
Se pare că există o cale - este necesar în caz «devicemotion» a verifica dacă accelerometrul dispozitivului. Nu știu ce toate astea s-ar putea veni la îndemână (cu excepția cazului de a dezactiva orice efecte speciale consumatoare de resurse), dar să fie conștienți de faptul că o astfel de posibilitate este de verificare, nu poate face rău.
Am redenumit codul un pic, am făcut o funcție din el, l-am simplificat puțin și l-am pus în ordine. Iată codul:
în versiune va fi 1 sau 3, dar nu 2, nu?
Îmi pare rău, și voi doi
O soluție frumoasă. Îl poți folosi în proiectele tale?
Simplificate și a pune lucrurile în ordine, înlocuind testul de condiție pentru adăugarea de boolean cu int? Ei bine, bine.
> Simplificați și puneți lucrurile în ordine, înlocuind testul de stare pentru adăugarea lui boolean cu int? Ei bine, bine.
Elegant la fel
O soluție frumoasă. Îl poți folosi în proiectele tale?
Poți, bineînțeles!
Simplificate și a pune lucrurile în ordine, înlocuind testul de condiție pentru adăugarea de boolean cu int? Ei bine, bine.
Și ce te deranjează?
("toate") Și nimeni nu are obiceiul de a rearanja foarte scurt dacă / altceva părți mai întâi?
Și nimeni nu are obiceiul de a rearanja foarte scurt dacă / alte părți mai întâi?
E ca și cum?
E ca și cum?
Inversați condiția astfel încât primul bloc să fie un bloc scurt,
dacă (! ('ondevicemotion' în fereastră)) apel invers (nedefinit);
> alt // bloc lung
>
Ideea este că, atunci când primul este o acțiune simplă, este mai ușor să urmeze logica algoritmului, „în cazul în care, atunci altceva“ întreaga construcție este ușor de observat, este pe două sau trei linii, rapid terminat cu ramura formală și de a face munca reală. În cazul în care primul este un bloc lung, atunci când mai vine, deja timp de pierdut firul, ce anume a fost acest altceva. Acest aranjament este adiacent fizic acelor blocuri care sunt adiacente logic. Prețul este deteriorarea lizibilității condiției dacă prea multă negare nu decorează programul.
Dar nu fac asta, fac altceva - mă uit că prima condiție este fără negare. Mi se pare atât de estetică.
Aha, grație peste margine. Și primul kament, unde se întreabă ce ar trebui să facă.