Globaalit muuttujat

käyttäminen

Globaalit muuttujat. Onko niiden käyttäminen järkevää vai ei. Olen kuullut jonkun sanovat että niitä ei missään nimessä pitäisi käyttää (puhuttiin sulautetusta laitteen koodista).

Kertokaapa omia kommentteja.

8

912

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • olet kuullut

      globaalien muuttujien käyttöä pitää välttää viimeiseen asti. Ne aiheuttavat ongelmia erityisesti isoissa ohjelmissa, sekä niissä, jotka käyttävät säikeitä.

      Pikkuohjelmissakaan ei kannata opetella niiden käyttöä.

      • Lauri.

        Mutta itseasiassa juurikin sulautetuissa noita globaaleja muuttujia käytetään. Syynä on tosin muistin puute sekä tehokkuus (nopeus). Eli niitä käytetään siis lähinnä pakon edestä.

        Mutta kuten sanottu, niin itseään ampuu jalkaan todella pahasti, jos globaaleja muuttujia käyttää..


      • kaikki globaaleina eikä mit...
        Lauri. kirjoitti:

        Mutta itseasiassa juurikin sulautetuissa noita globaaleja muuttujia käytetään. Syynä on tosin muistin puute sekä tehokkuus (nopeus). Eli niitä käytetään siis lähinnä pakon edestä.

        Mutta kuten sanottu, niin itseään ampuu jalkaan todella pahasti, jos globaaleja muuttujia käyttää..

        käytin viime projektissa tahalleen kaikki globaaleina eikä mitään ongelmia pitää ne hallinnassa.


      • tiedä mitään
        kaikki globaaleina eikä mit... kirjoitti:

        käytin viime projektissa tahalleen kaikki globaaleina eikä mitään ongelmia pitää ne hallinnassa.

        ohjelmien teosta, trolli.


      • erillinen header muuttujille
        tiedä mitään kirjoitti:

        ohjelmien teosta, trolli.

        ei ole trolli vaan ihan tosi

        erillinen header muuttujille jne.

        helvetin helppoa


      • Balle Ramstedt

        Jaa, enpä tiedä... esim. linuxin kernel (= iso ohjelma) sisältää aika läjän globaaleita muuttujia. Selaa vaikka tuolta:
        http://lxr.linux.no/linux-bk v2.6.11.5/
        esim säikeet:
        http://lxr.linux.no/linux-bk v2.6.11.5/kernel/fork.c

        Nyrkkisääntö lienee että jos on paljon (yli 2) keskinkertaista kokkia, niin on parempi välttää globbeja (heh). Mutta jos koodarit on huippuja (ja alle 30 kpl) niin globaalit ei haittaa, vaan ne koetaan eduksi (ei tarvitse kehittää API:a joka perkeleen tiedostolle)

        C:ssähän voi tehdä näin:

        foo1.c:

        int bar1; /* globaali */

        foo2.c:

        static int bar2; /* private */

        Jolloin bar2 on "privaatti" eli näkyy vain foo2.c sisäisessä koodissa.

        Tilanne on aika ristiriitainen - aloittelijoita neuvotaan "älä käytä", mutta (laiskuuttaan?) gurut käyttää.

        Lisäksi sääntö "älä koskaan käytä globaaleja" aiheuttaa harmaita hiuksia kokemattomien ajukuupassa (koska eivät osaa (eikä ole opetettu) vaadittavia tekniikoita, kuinka tehdä homma ei-globaalina).


      • Balle Ramstedt
        erillinen header muuttujille kirjoitti:

        ei ole trolli vaan ihan tosi

        erillinen header muuttujille jne.

        helvetin helppoa

        Ja vielä helpompaa kun käytät static-vipua .c filuissa.


      • CBurner
        erillinen header muuttujille kirjoitti:

        ei ole trolli vaan ihan tosi

        erillinen header muuttujille jne.

        helvetin helppoa

        En tiedä miten olet nimennyt muuttujasi että ne erottaa locaaleista, paikallisista muuttujista.

        Yksi tapa on tehdä yksi globaali structi header fileen, eli:

        typedef struct
        {
        void * whatever1;
        void * whatever2;
        int statemachine;
        int index;
        } appl_t;

        appl_t appl;

        Jolloin koodissa nämä globaalit muuttujat näyttävät tältä 'appl.statemachine = ...' ja erottuvat helposti paikallisista muuttujista. Lokaalit nimet voivat olla samat kuin globaalit:

        if (...) appl.index = index;


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Minkähän takia ns. persuille ei tunnu työ maistuvan?

      Vaikuttavat olevan joutoväkeä syystä tai toisesta  – työttömiä tai työeläkeloisia. Muiden rahoilla pötköttelevää väkeä,
      Maailman menoa
      83
      4433
    2. Olit ihan

      Kiihkona silloin. Sen näki ja lähes tunsi. Ei tainnut olla kaukana et olisit vetänyt lähellesi jos siihen olisi hetki tu
      Ikävä
      24
      3088
    3. Miksiköhän vasemmistossa on niin paljon ns. tapatyöttömiä ja muita köyhiä?

      Tokihan Minja Koskela oli sitä mieltä, että ei terveenkään ihmisen ole pakko tehdä töitä, sitä neuvoa moni vassu noudatt
      Maailman menoa
      39
      2854
    4. Trump huonommassa kunnossa kuin Usasta virallisesti sanotaan?

      "Terveys on vakaa mutta ei normaali".Uskallan melkein sanoa,että Trumpin terveydentilaa kaunistellaan.Myös se että se nu
      Maailman menoa
      116
      2625
    5. Kyllä on Vasemmistoliitosta Koskelan johdolla tullut todellinen ääripuolue

      se on niin tulipunainen kuin olla voi, ja selvästi haluaa jatkuvasti eripuraa, ja repiä kansaa kahtia. Siinä on jo vuod
      Maailman menoa
      17
      2499
    6. Suomen veroaste 5 %-yks liian matala

      Palauttamalla kokonaisveroaste 1990-luvun tasolle saadaan hyvinvointivaltion palvelut rahoitettua ilman velan ottoa.
      Maailman menoa
      112
      2248
    7. Oletko keskustellut kaivatustasi muiden

      Kanssa lähiaikoina? Jos, onko keskustelu ollut positiivista tai negatiivista? Vaikuttaako keskustelut mielipiteeseesi ka
      Ikävä
      38
      2201
    8. Kaipaamasi miehen nimi?

      Ja maakunta tai kaupunki?
      Ikävä
      13
      2124
    9. MTV: Harvinainen haastattelu! Vappu Pimiä kommentoi vihdoinkin uutta TTK-juontajaa

      TTK-juontajaspekuloinnit käyvät edelleen kuumana. Kenet sinä haluaisit uudeksi TTK-juontajaksi? Kommentoi alle! Lue,
      Suomalaiset julkkikset
      14
      2015
    10. Yleveron tuotto siirrettävä S-ryhmälle

      Yleisradio on mukana kansanmurhassa. Tuollaista ei voi tukea verovaroin. S-ryhmä on ainoa selkärankainen iso toimija S
      Maailman menoa
      28
      1717
    Aihe