ES6 Promise -> ujabb lib dependency a hasznalhatosaghoz

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 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!

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

É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.

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 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.

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 :)

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).

--

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.

--