Literálisok
2016-02-15T13:53:48+01:00
2016-02-16T16:17:31+01:00
2022-07-22T00:48:44+02:00
  • Kedves Uram!

    Ott figyelnek a kérdőjelek.... :D

    Üdv.:

    N.
    Mutasd a teljes hozzászólást!
  • De ha itt elírod a kis d nagy D-t, akkor már futatás előtt jelez?? nem ?? getContext2d()

    Nem jelez. Nem is tudna, mivel futás előtt nem tudhatja, hogy az objektumnak van-e getContext2d nevű mezője. Pont úgy, ahogy az előző példámban nem lehetett tudni, hogy az "x" paraméternek van-e "bizgany" nevű mezeje vagy sem.

    Nem ismerem annyira a java scriptet modnom

    Amikor én így vagyok egy nyelvvel vagy technológiával, inkább nem szólok bele a róla folyó beszélgetésbe. Illetve ha mégis, akkor inkább kérdezek, nem állítok az adott témáról. Csak mondom 
    Mutasd a teljes hozzászólást!
  • Ez fordítva történt ám, alig találtam meg, hogy hova tűnt a bölcsességem. Szóval 13:54-ig ez mind a nőikóderes topikban volt.
    Mutasd a teljes hozzászólást!
  • @FBS @Nand-e
    Ha már ilyen szépen kiszerveződött ez a beszélgetés "Literálisok" név alá, ne trollkodjuk szét az erős/gyenge/dinamikus típusosság és interpreted/compiled vitával! 



    Olyan fórum(ok) már van(nak).
    Mutasd a teljes hozzászólást!
  • De ha itt elírod a kis d nagy D-t, akkor már futatás előtt jelez??

    Nincs fordító, a Notepad pedig nem jelez.

    Sima text editorban kalapáltam, rengeteg anyázás árán

    Igen, a JavaScript lényege ma is pontosan ez.
    Mutasd a teljes hozzászólást!
  • Na ja mondom én nem ismerem annyira a javascriptet.  

    De ha itt elírod a kis d nagy D-t,  akkor már futatás előtt jelez??   nem ?? getContext2d()

    Nem ismerem annyira a java scriptet modnom, csináltam korábban javascriptes ezt azt, de régen volt és csak sima text editorban kalapáltam, rengeteg anyázás árán.
    Mutasd a teljes hozzászólást!
  • A szép ezekben a string literálokban, hogy csak futásidőben derül ki, hogy valami nem megy.

    Nem azért, de Javascriptben (meg egyéb dinamikus nyelvekben) egyébként is csak futásidőben derül ki, hogy valami nem megy. Például ez a kód helyes vagy nem?

    function pelda(x) { x.bizgany += 42; }
    Ha így tervezik hívni, akkor nem:

    pelda("teszt");
    de ha így, akkor igen:

    var teszt = {bizgany: 0}; pelda(teszt);
    Szóval én nem érzek olyan nagy különbséget a getContext("2d") meg a getContext2d() között, mert ha a 2d helyett teszem azt 2D-t írsz véletlenül, mindkét változatban futás közben fog csak kiderülni.
    Mutasd a teljes hozzászólást!
  • Hát a [0] -ás nem nagyon lehet megkerülni, ahogy írtad.

    [1] [2]-es meg szimpla hülyeség, de ettől még lehetne a nyelv nagyon jó, vagy nagyon rossz.

    Ez csak egy furcsán megtervezett API, Unity API-ban vannak hasonló gyönönyűrőságek, de ott többnyire meg is van az oka. 
    A szép ezekben a string literálokban, hogy csak futásidőben derül ki, hogy valami nem megy.

    De ebbe belekötni szerintem nem érdemes, ez csak egy nem túl jó API. Ezzel tulajdonképpen csak a felszínt kapargatod. Én nem annyire ismerem a javascriptet, lehet belül is rohad különben, de nem ettől.....
    Mutasd a teljes hozzászólást!
  • Nézd, én hétköznapi átlagos ember vagyok, nem tudok egy katyvaszban hatékonyan (és biztosan jól, mindent átlátva, minden eshetőséget pontosan kézben tartva) dolgozni.
    Arra az asszonykám lenne képes, neki olyan az agya, hogy mindenre tud figyelni, még annál is többre, akármekkora a mérete vagy a káosz benne.

    1./ Bár káosz van körülöttem.
    2./ Még mindig működik az egész.
    3./ A zseni átlát a káoszon (nem kell rendet tartania)

    - Következtetés: én is zseni vagyok?

    Bár speciel minden egy kupleráj és káosz körülöttem (és még élek), de a kódjaimban precíz és igényes vagyok...

    - Új következtetés: csak a programozásban nem vagyok zseni, minden más téren igen?
    Mutasd a teljes hozzászólást!
  • (Gyakorlatilag az egyetlen hely ahol megtűröm a (string) literal-t, az az exception message.

    Akkor te sem vagy egy javascript fan 

    Engem a tipikus JS kódoktól kiráz a hideg: az egész egy hatalmas bugveszély.

    canvas = document.getElementById("myCanvas"); // [0] if (canvas.getContext) { ctx = canvas.getContext("2d"); // [1] ctx.fillStyle = "black"; // [2] ctx.rect(0, 0, 300, 300); ctx.fill();


    [0]: OK, ettől rugalmas a böngésző és a JS kapcsolata, ez talán elkerülhetetlen (legalábbis kegyetlenül megnehezíti a dolgot, ha nincs ilyenféle dinamikus használat.

    [1]: Brrrr!!! Ki tervez ilyeneket??? Szakbarbár!!! [vagy betartja a JS fanok kérését: minél idiótább legyen az API!!!]
          Most komolyan, mibe kerülne egy canvas.getContext2D(); syntaxist alkotni?????
    [2]: Brrrr!!! Megint (mindig!!!!!!! őrület!!!!!)
          Aki ilyet kitalál, az vagy hülye, vagy szakbarbár vagy... idiótáknak/igénytelenpistikéknek tervez!
          Mibe kerülne egy ctx.fillStyle = Colors.Black; használata? Mégha JS "agyú" is, ennek előnyeit (pl. code completition, IntelliSense, típusbiztonság, elírás elleni védelem, sőt gyorsabb és stabilabb kód!) nem vitatható.
          A string alapján kikeresi egy táblában a kódérték konstanst, amit majd használ, ahelyett hogy közvetlenül használná a konstanst? Noooormááális??

    Értem én hogy dinamikus, meg szabadság... de akkor is hülyeség.
    Legalább is ahogy a TS felé lépés jelzi a dolog zsákutcáját (patkolnak ezerrel) lehetne az új API-kat (html5! ekkor már azért látható volt a tendencia... még a prog.hu-n is gyalázták a JS-et, és főként az koncepciótlan tervezése miatt)

    És ezzel a stílusában igénytelen és félrenevelő nyelvvel tanulnak sokan (lehetne javítani rajta, pl. a fenti példáknál láthatóan, legalább tüneti kezeléssel), ha már az alapok el lettek rontva.
    Ez az új kor Basic-je. Komoly tanár nem enged mellé, amíg egy Pascal/C/Java/C# stb... nyelven meg nem tanul programozni.
    Mert csak elrontja a lehetséges profit is!
    Később meg ha profibb, akkor szenved vele... mert nem is érti, hogy lehet ennyire slendrián valami.
    Mutasd a teljes hozzászólást!
  • Ez működik egy embernél, és ezzel nagyjából ki is fújt.

    Örököltem én olyan kódot, amit ilyen ember írt, hibátlanul működött, és ő is gyorsan bele tudott nyúlni.

    Ilyenek voltak benne, hogy 

    if ($a && $cc) $qa = true;
    Ebből kismillió, és nem egy 3 soros függvényben, mint temporary változók.

    Amikor ő elment a cégtől, és nekem kellett átvennem a projektet, az egészet át kellett írnom, spagetti kód volt tele ilyen szemetekkel.

    Ez lett belőle:

    //If user has logged in and there are items in the basket, then let's show //the basket link. if ($User->loggedIn() && !empty($Basket->getItemsCount())) { $this->showBasketLink = true; }
    Teszek rá, ha 2 perccel tovább tart, IDE esetében autocomplettel még csak nem is, ráadásul fél év múlva is tudni fogom, mit csinál az adott kódrészlet.
    Mutasd a teljes hozzászólást!
  • Ennek a helyes neve: profizmus

    A profi tudja miért kell így csinálni és nem a szépség miatt teszi, hanem mert tudja/ismeri a lehetséges mellékhatásokat (következményeket), hogyha nem úgy néz ki a kód, ahogy azt az igényessége-önbecsülése "elvárja".

    Őszintén remélem, hogy nem a profizmusomat kívántad vitatni, de ha mégis, felhívnám a figyelmed a folytatásra...

    Végtelenül sok fejfájást, greppelést, debugolást stb. lehet megspórolni ezzel.

    Mindenesetre - bár eredetileg muszájból szoktam rá a kulturált kód írására, és a nyilvánvaló előnyök miatt tartottam mi mellette - kénytelen vagyok megemlíteni, hogy ismerek kódert, aki a legelemibb kódolási konvenciókat is hajlamos feláldozni a kódírás gyorsaságának oltárán, mégis képes meglepő sebességgel és hatékonysággal karbantartani a kódjait. (Mondjuk vele kizárólag akkor dolgozom együtt, ha maximum interfészek szintjén kell bármit kezdenem a kódjaival.) Lehet úgy is.
    Mutasd a teljes hozzászólást!
  • szerintem ez kulturált kódban úgy néz ki

    Ennek a helyes neve: profizmus

    A profi tudja miért kell így csinálni és nem a szépség miatt teszi, hanem mert tudja/ismeri a lehetséges mellékhatásokat (következményeket), hogyha nem úgy néz ki a kód, ahogy azt az igényessége-önbecsülése "elvárja".

    Bár tény, hogy a "legyen meg tegnapra" kódolási konvenció nagyon rontja a megfontoltságot, átgondoltságot; még profikat is gány munkára tud késztetni 
    Mutasd a teljes hozzászólást!
  • Hali!

    … a konstansok scope-ja túl tág.

    Ez már csak ilyen PHP-ben. 

    Mutasd a teljes hozzászólást!


  • Rosszabb vagyok ám, mint hinnéd... 
     A mintakódodban ugyanis simán belekötnék abba, hogy a konstansok scope-ja túl tág. (Nem ismerem a PHP constant scopeingját, lehet, hogy mindegy, de akkor is a függvényen belül használod a konstanst.) 
    Mutasd a teljes hozzászólást!
  • Hali!

    define("NEGY_EVENKENT_VAN_SZOKOEV", 4); define("KIVEVE_HA_SZAZZAL_OSZTHATO", 100); define("MERT_AKKOR_NEGYSZAZZAL_IS_KELL", 400); function isLeap($year) { return !($year % KIVEVE_HA_SZAZZAL_OSZTHATO) && !($year % MERT_AKKOR_NEGYSZAZZAL_IS_KELL) || ($year % KIVEVE_HA_SZAZZAL_OSZTHATO) && !($year % NEGY_EVENKENT_VAN_SZOKOEV); }




    Csak vicceltem, egyetértek veled.
    Mutasd a teljes hozzászólást!
  • Lehet, hogy csak én vagyok vaskalapos (kódnáci?), de én tuti nem írnék le olyat, hogy 

    változónév = 10; // vagy bármilyen más literális kivéve 0 és (talán) 1
    szerintem ez kulturált kódban úgy néz ki, hogy

    változónév = KONSTANSNÉV; // ahol a konstans nevéből egyértelműen kiderül mire szolgál és miért annyi
    Végtelenül sok fejfájást, greppelést, debugolást stb. lehet megspórolni ezzel. (Gyakorlatilag az egyetlen hely ahol megtűröm a (string) literal-t, az az exception message.)

    Ez a hozzászólás és a rá adott válaszok a moderátor által lett átmozgatva a(z) "Jobb kódot írnak a női programozók, mint a férfiak?" témából.
    Mutasd a teljes hozzászólást!
abcd