Feed reading - melyik nyelv erre a legalkalmasabb (leghibaturobb)?

 ( carlcolt | 2017. augusztus 9., szerda - 15:47 )

A problema altalanos: van egy feed (pelda kedveert legyen JSON).

Elso 10 alkalommal pl. ugy nezett ki, hogy:

Item {
  xx : 'valami',
  id : 123
  subItem [
    { 
      id: 11,
      name: 'mas'
    },
    {
      id: 14
      name: 'ezismas'
    }
  ]
}

A fejleszto a feed processort megirta. Soha senki nem mondta neki, hogy a subItem lehet ures. Ezert kihagyta hogy if (empty(subItem)). Par nap utan jott az elso ilyen pelda, ahol ez extrem esetben egy daemont is leallithatott (nem kene, nem nalunk, stb., de akkor is). Tegyuk fel, hogy megprobalja beolvasni minden alkalommal a subItem[0]['id']-t (en nem tennem, de egyutt kell vele dolgoznom). De a sokadik esetben mar subItem[0] sincs, sot, subItem sincs, nemhoigy subItem[0]['id']. Legtobb nyelvben ez
1. fatal error
2. exception

Van-e olyan nyelv, ahol ez ilyenkor betesz valami null-t, ''-t, '0'-t, undefined-ot es fut tovabb? (Esetleg van olyan modja, amiben ez fut tovabb)? Bonusz ha logolja ezeket az incidenseket mint warning valahova (akar stderr-re, mig minden mas stdout-ra megy, akar fajlba, mindegy)

(Igen, tudom, legkesobb mikor adatbazisba mentenel megint elojon a gond, de azt most hagyjuk ki, tegyuk fel hogy arra mar van egy normalis "ha nem sikerult akkor log raw data" implementalva)

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A PHP-t pont amiatt nem tartják sokra, mert elég megengedő ilyen esetekben. Legtöbb default telepítésben megy tovább a szkript futása és a logba bekerül egy "Undefined index 0" kezdetű sor.

Array-val megy PHP-ban, object/class-szal (pl stdclass) nem.

Mondjuk erre is van megoldas: json_decode($json, true); es akkor assoc array lesz

Mi a baj azzal, hogy exception és azt elkapja a fejlesztő, csinál valami alapértelmezett üres objektumot és fut tovább minden?
--
openSUSE - KDE user

Gondolom az, hogy ha nem teszi ezt, akkor kevésbé fut tovább minden :)

Jaja, vagy ha el is kapodik az exception, a try blokkban levo kod sem fut tovabb egy rossz index miatt.

én a kotlin felé nézegetnék, valami library-val felparse-olva objektummá, s szigorúan kikötve, hogy minden field nullable.
az utóbbit ki kell erőszakolni code review alatt, vagy másképp, de utána kb. lehetetlen elbaszni, szerintem.

--
blogom

Nem nyelv, de használj protobuf-ot, az minden nyelven szépen lekezeli az üres értékeket, sosem ad vissza nullt.

Amúgy meg a programozó ellenőrizze le, hogy csak olyan mezőbe olvasson bele, ami tuti létezik. Nem a nyelv hibája. Sokkal csúnyább bugokat szülne, ha a nyelv bekamuzna neked valami nem létező üres objektumot a JSON adataid közé. Erre a protobuf esetén is figyelni kell persze.

Uristen, ezert nehogy masik nyelvet keress! O.o Mibe kerul a feed formatumat feldolgozo libet kiegesziteni, hogy az altalad ahitott modon viselkedjen??!

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám

Meglevo dolgokra nem keresnek uj nyelvet. Teljesen uj dolgokrol van szo, es egy gyakori kommunikacios kerdesrol. Kaptal mar kulsos ceg kontaktjatol Java Exceptiont, mikor te csak JS-t meg PHP-t fejlesztesz? ;) Ha igen, egy reszet erted a problemanak. :)

Barmelyik nyelv amelyikben van Optional.

Mondjuk azt is lehet force unboxolni, azellen nem ved...

Szerk: meg mondjuk JSON-nal ez nem igazan mukodik a schema hianya miatt, de normalis leiro nyelvekkel ez is megoldhato.