Es ezert kell millio+1 lib egy JS projecthez.
http://jamesknelson.com/are-es6-promises-swallowing-your-errors/
- 1343 megtekintés
Hozzászólások
Nemrég kellett újra elővennem a javascriptet sok év kihagyás után és a mostani ökoszisztéma úgy néz ki, hogy foltozgatnak egy alapjaiban rosszul megtervezett nyelvet és 15 millió plusz egy kis "csomag" van ami arra hivatott, hogy kijavítsa amit a tervezésnél elrontottak.
- A hozzászóláshoz be kell jelentkezni
A 15 millió plusz egy csomag nagy része nem foltozgatás miatt van, hanem azért, hogy kényelmesebben lehessen használni.
Ez egy nyitott rendszer, annak minden előnyével és hátrányával.
Ezek a siránkozások kb. olyanok mint, hogy az Androidra rengeteg a fingó app, vagy, hogy egy feladatra van rengeteg app (megoldás).
Igen, nehéz választani, főleg olyanokat, amik jól együttműködnek.
Ezt a fórum cikket az teszi még szánalmasabbá, hogy épp olyannál hozakodik elő, amikor az 1 millió lib helyére terveznek egy szabványos, nyelvi megoldást (ES6 promise).
Valaki csinál hozzá egy lib-et (Bluebird), amivel bizonyos módon még kényelmesebb használni, akkor megint még rosszabb lett a helyzet.
Ráadásul a legtöbb nyelvnél rengeteg lib közül választhatunk, lásd itt.
Ha 20e lib van az jó, ha 300e, akkor nagyon rossz?
Nem azt akarom mondani, hogy az ilyen rendszer jobb, csak azt, hogy más. Mindegyiknek van előnye, hátránya.
Bocsi a kifakadásért, de egy kicsit besokalltam attól, hogy milyen rossz egy rendszer, amiben túl sok a választási lehetőség!
- A hozzászóláshoz be kell jelentkezni
Azert az, hogy a node egy eve mar a duplajarol indult, mint a tobbi, es ennyi ido alatt szinte duplazta a libek szamat, az nem ugy nez ki, mint egy kiforrott, production ready platform...
- A hozzászóláshoz be kell jelentkezni
Vagy csak végre van egy platform, ahol a csomagkészítők betartják a single responsibility elvét. A legtöbb csomag egyetlen függvényből áll, melyik másik platformon látsz még ilyet? Illetve nincs* dependency hell, egy csomagból akár több, különböző verzió is jelen lehet egy szoftver függőségei között, ez is segíti a kis csomagok használatát.
*: na jó, kevésbé van
- A hozzászóláshoz be kell jelentkezni
Én nem látok ok-okozatot az évenkénti libek számának növekedése és a production ready-ség között.
Ha jól értem, akkor egy olyan platformnál, ahol van 10 lib és évenként max. egy új lib-et vesznek fel hozzá, az production ready.
Tegyük fel, hogy így van és ez utóbbi production ready, nagyon jó platform!
Ha a másik platformnál megvan a 100 millió lib között ugyanez a 10 lib, legalább ugyanilyen minőségben, akkor amiatt, hogy van még egy rakat rossz lib is, már nem lesz ugyanolyan jó platform?
Nem lehet akár még jobb platform is, ha van másik tucat lib, amik nagyon jó minőségűek, de másra valók, mint az előzőek?
Ilyen elven idesorolhatunk még egy pár másik nyelvet is, mert nagyon soknál van olyan lib kezelés, amivel mérhetetlen sok csináld magad libet is!! el lehet érni könnyedén (pl. Maven (4.6M artifacts), Github, ... repository-k).
Ezek szerint a Java is nagyon rossz platform a mérhetetlen sok libbel.
- A hozzászóláshoz be kell jelentkezni
Részemről ez nem siránkozás volt, egyszerűen leírtam amit tapasztalok. Attól, hogy ilyen még használom és együtt élek minden pozitív/negatív tulajdonságával. Nekem meg egyébként azzal van tele a hócipőm, hogy sokan védik a JS-t, hogy nem is rosszul felépített nyelv, miközben a saját 4 primitív típusát is összekeveri (lsd.: object vs. array). Ettől még lehet benne nagyon jó dolgokat is fejleszteni csak nagyon kell figyelni a hülyeségeire.
- A hozzászóláshoz be kell jelentkezni
"a saját 4 primitív típusát is összekeveri (lsd.: object vs. array)"
Hogy mi?
Undefined, Null, String, Number, Boolean, Object és Symbol, ezek vannak. Ez se nem 4, se nem tartalmazza az Arrayt. A legtöbb nyelvben a list/array amúgy is referencia típus, szóval nem értem, miért baj, hogy a js array egy Object.
- A hozzászóláshoz be kell jelentkezni
boolean, number, string, object, én még ezeket tanultam anno. Sokáig nem volt világos, hogy az array akkor most array, vagy object, ezt javították az ECMA5-ben, erre gondoltam.
A null és az undefined szintén nem tudom mióta primitív típus, de hiszek a linkelt dokumentációnak.
ja és WAT :)
- A hozzászóláshoz be kell jelentkezni
Szerintem annyi a gond, hogy túl könnyű csomagokat feltenni. Ha az ember pl. a Debian hivatalos csomagtárolójába akar bekerülni, ott igencsak értéket kell letenni. Egy PPA sem triviális még, sok dologra kell gondolni (telepítő scriptek, függőségek, mittudomén). Az Androidot is szidják, hogy túl könnyű appot írni, sok a fingós app, stb., de azért ott is van egy szint, amit meg kell ugrani, hogy az ember a Play store-ba bekerüljön.
Erre jön a kő egyszerű JS, NPM és GitHub kombó, ami már annyira faék egyszerű és moderálatlan, hogy a hülye is azon élvezkedik, hogy futószalagon százszámra ontják magukból a leftpad és hasonló szintű 1-soros (!) libeket. Fel nem fogom, hogy mire jó ez. Persze nyilván az is hülye valamennyire, aki ezeket használja.
Ha ezen át tudunk ugrani, azért nagyon sok a hasznos lib is, amik egy elég jó ökoszisztémát adnak.
A nyelvnek meg sok hibája van, és habár sokat próbáltak javítani rajta, azt a hibát is elkövették, hogy a régi szar dolgokat is bennehagyták. De ezen is felül lehet kerekedni, nem kell használni ezeket. Döntsd el a projekt elején, hogy prototype és stb. bizergálás helyett ES6-ot használsz (nagyon régi böngésző megcélzása esetén meg transplie ES5-re).
Tehát összességében jó dolgokat ki lehet hozni belőle, ha csak az értelmes részhalmazát használod (illedve további segítség lehet TypeScript és hasonlók használata).
- A hozzászóláshoz be kell jelentkezni
Ez nem véletlenül van így. Az async
/await
szintaxist használva egészen kényelmes a Promise-ok hibakezelése.
Javaslom a témában ezt a cikket, különös tekintettel erre a szekcióra.
alias killall='echo "Wenn ist das Nunstück git und Slotermeyer? Ja. Beiherhund das Oder die Flipperwaldt gersput." | espeak -vde' #That's not funny.
- A hozzászóláshoz be kell jelentkezni
Szerintem meg logikus. Talán egy diagram jobban szemlélteti, mi történik.
- A hozzászóláshoz be kell jelentkezni
De van az úgy, hogy az ember elfelejti elkapni a hibát, vagy épp egy .catch() fut hibára. Az már egész jó, ha a konzolba kiírja a böngésző, még jobb, ha a window.onerror is meghívódik, de ez vajon szabványos-e? Persze aki azt se tudja, mi az a hibakezelés, és csak a happy path létezik számára, az reménytelen, ilyen is van.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni