Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas siis ikkagi õigesti treppida? märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele 1, 2, 3  järgmine
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
AMD
HV veteran
AMD

liitunud: 29.07.2003




sõnum 02.01.2007 13:55:36 Kuidas siis ikkagi õigesti treppida? vasta tsitaadiga

Kuidas siis see kõige õigem treppimine välja näeb?
Kas üldse on olemas see "kõige õigem"?
1.
if(true){
   // kood
}

2.
if(true) {
   // kood
}

3.
if(true)
{
   // kood
}

4.
if(true)
   {
   // kood
   }

5.
if(true){
   // kood
   }

Või on veel mõni "õigem" treppimismeetod olemas?

_________________
From now on, the forum is owned by AMD.That means that you are NO LONGER allowed to talk about, or even mention *ntel.


viimati muutis AMD 09.01.2007 21:13:13, muudetud 1 kord
Kommentaarid: 335 loe/lisa Kasutajad arvavad:  :: 145 :: 3 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 02.01.2007 14:21:19 vasta tsitaadiga

Õige on järgida projekti tegemisel kokku lepitud standardit. Kui enda jaoks otsid õiget siis pole erilist vahet millist kasutad, peaasi et sa sellest kinni pead.

Mina kasutan üldjuhul Sun'i ettekirjutusi Java kohta. Ehk siis antud juhul
if (true) {
  //code
} else {
  //more code
}
Muidugi selline lihtne blokk ei ütle suurt midagi. Palju huvitavamaks lähevad asjad siis kui tulevad mängu switch/case, exceptionid, ülipikad read, hunniku parameetritega funktsioonid jne.
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
conquer
HV vaatleja
conquer

liitunud: 09.07.2005




sõnum 02.01.2007 15:50:23 vasta tsitaadiga

Ise kasutan:

if(true)
{
   //kood
}
else
{
   //kood
}

kuna see tundub mulle kõige arusaadavam. Kuid ega sel vist olulist vahet pole mida sa kasutad.

_________________
http://www.hv.ee - brauseril põhinev mäng!
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Nitro
HV kasutaja
Nitro

liitunud: 02.03.2004




sõnum 02.01.2007 15:57:10 vasta tsitaadiga

C++ puhul trepin sedasi (õigemini palju treppimisest teeb juba IDE ära):

if (toValik == 1)            // ::Jätka::
          {
                   valik = toValik;
          }
         
if (toValik == 2)           // ::Lõpeta::
          {                   
                   clrscr();
          }
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 02.01.2007 16:27:21 vasta tsitaadiga

Esiteks olen 100% nõus Ho Ho'ga - kõige parem on kasutada mingit kindlat standardit, peaasi, et kui mingit stiili kasutad, siis teed seda ühtlaselt kogu projekti ulatuses.

Aga kui siiski arutada erinevaid C-laadsete keelte treppimisstiile, siis tegelikult on seal kaks peamist komponenti mida vaadata:
1. Kuidas on loogelised sulud asetatud.
2. Mitut tühikut on treppimiseks kasutatud; kas kasutatakse tab-e.
(See, kas loogelise sulu ette või võtmesõna järele jäetakse tühik, pole vast antud kontekstis oluline.)

Mulle meeldib see lähenemine, mille Steve McConnel võtab esimesele küsimusele raamatus "Code Complete". Ta vaatab kõigepealt seda, kuidas on treppimine lahendatud C-st erinevates keeltes. Näiteks Basicu puhul taolisi treppimisvaidlusi eriti ei esine, lihtsalt pole eriti palju mõistlikke treppimise variante. Tüüpiline if-bloki kood on selline:

if condition then
    doSomething
end if


Kuna selline stiil töötab ilma igasuguste probleemideta mitmetes keeltes, siis soovitab ta kasutada võimalikult sarnast stiili ka C-laadsetes keeltes, ehk siis sedasi:

if (condition) {
    doSomething();
}


Arvatavasti on ülaltoodud stiil ka kõige levinum.

Üks oluline asi, mis ta välja toob, on kasutatava stiili lihtsus. Näiteks PEAR'i standardi kohaselt tuleb funktsioonid treppida nii:

function (parameters)
{
    doSomething();
}


funktsiooni sisus olevad struktuurid aga esimese näite järgi. Selline asi on vastuolus sellega, et treppimine oleks kogu koodi ulatuses ühesugune.

Üheks halvimaks variandiks loeb ta sellist stiili, kus kood on justkui topelt trepitud:

if (condition)
  {
    doSomething();
  }


Mulle isiklikult on kaunikesti vastumeelne järgmist tüüpi stiil, küllap peamiselt seetõttu, et pole seda ise kunagi kasutanud:

if (condition)
    {
    doSomething();
    }


Teine küsimus on see, mitu tühikut tuleks treppimiseks kasutada. Selle kohta on juba aastast 1983 olemas uurimus, kus võrreldi programmist arusaamist erineva pikkusega treppimiste puhul. Leiti, et parim loetavus oli programmidel, mille kood oli trepitud kahe kuni nelja tühikuga. Kõige madalam arusaadavus oli muidugi treppimata koodil, kuid kohe selle kannul oli kuue tühikuga trepitud kood, olgugi, et mitmed katsealused ise hindasid, et kuus tühikut tundub märksa loetavam.
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 02.01.2007 16:37:42 vasta tsitaadiga

nene kirjutas:
Teine küsimus on see, mitu tühikut tuleks treppimiseks kasutada.
Alati kui võimalik kasutan ise tab'e sest nendega saab igaüks ise vaadata koodi just nii pikalt trepituna nagu talle meeldib. Enda editoris on seadistatud tab'i kuvatavaks laiuseks kaks tühikut.
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 02.01.2007 16:40:16 vasta tsitaadiga

ise kasutan 2 tyhikut ja just tyhikut, mitte tab-e.

reegel mida kasutan on, see, et fail/trepitus peaks nägema kõigis programmides sama välja.
Notebad-iga lahti võttes saab kõige paremini aimu, ainuke asi on see, et osades koodides on enter asendatud selle teistsuguse enteriga mida notebad enteriks ei loe. kuid siiski saab vaadata kas tegu on tab-i v tyhikutega....



if (false){
  //do something
}



kaks tyhikut on siis ka parem kui on väga palju plokke yksteise sees.
Minu jaoks on liiga palju tyhikuid jama, kuna ta venitab koodi liialt laiaks.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
andreie
HV vaatleja
andreie

liitunud: 09.09.2006




sõnum 02.01.2007 17:06:32 vasta tsitaadiga

Kasutada sama treppimist, mis töökaaslasedki. Toimib.

Tabulaatori standardsuurus on 8. Kahjuks ei programmeeri tänapäeval keegi enam quicksort'i, taanduste sügavus läheb suureks ja 8 ei sobi kuidagi. Been there, done that. Neljase astmega saab hakkama ilusasti; PHP-d kribades kasutan astet 2.

Kasutasin ka tükk aega tabulaatorit, kuid läksin tühikute peale üle... ja ausalt öeldes ei tunnegi puudust. Praktikas tabulaatorisuurust muutes või tabulaatoriga vaenujalal olevat tekstiredaktorit kasutades läheb kood käest ära. Samuti näitab diff siis ridu värdjalikult (ja ma kasutan diff'i iga päev, k.a. laupäev ja pühapäev.). Tühikutega neid jamasid ei ole.

GNU utiliitide hulgas on just nimelt programmikoodi vormingu paikakeeramiseks mõeldud "indent". Soovitan tutvuda ja kasutada.

P.S. Sekundeerin McConnel'i "Code Complete'is" toodud soovitustele.

_________________
Unix survives only because everyone else has done so badly.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 02.01.2007 19:20:18 vasta tsitaadiga

Täpselt nii, nagu soovid. Kui kord otsustatud, siis stiili muuta ei tohi.

Enamlevinud variantide puhul on lihtsalt see eelis, et IDE teeb ise treppimist.

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 03.01.2007 00:23:41 vasta tsitaadiga

Supiplex kirjutas:
Enamlevinud variantide puhul on lihtsalt see eelis, et IDE teeb ise treppimist.
Korralikud IDE'd lasevad sul treppimist ja üldist koodi vormindust confida. Eclipse JDT autoformatter on parim mida siiani näinud olen. Kahju et KDeveloperil või Katel midagi sama võimast pole.
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga Online

sõnum 03.01.2007 21:42:20 vasta tsitaadiga

mina trepin alati nii:
if(blablabla){
    //tee midagi
}else{
    //tee midagi muud
}


Alati töötanud ja ple probleeme... Ka ide on selle treppimisega ühel meelel... Kriban muidu peamiselt PHP'd, kui see siin tähtsust omab.

_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
kk001a
HV vaatleja


liitunud: 28.05.2003




sõnum 04.01.2007 17:08:36 vasta tsitaadiga

Kasutage automaatset koodi formattimist. Igasugustel IDE-del on erinavad formaatimise stiilid sisse ehitatud, võtad näiteks rippmenüüst Sun-i stiili ja vaatad milliseks IDE koodi muudab. Milleks vaevata ennast sellega mida arvuti saab automaatselt teha?
tagasi üles
vaata kasutaja infot saada privaatsõnum
tolm
HV kasutaja
tolm

liitunud: 01.01.2005




sõnum 05.01.2007 01:34:18 vasta tsitaadiga

if (true) {
//yadda
} else { /*yadda yadda*/ }


seda küll ainult php-s. kui else väga liiga pikaks venib siis saab too samamoodi nagu if mitmerealisena tehtud.
Kommentaarid: 12 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum
phpzone
HV kasutaja

liitunud: 02.04.2002




sõnum 05.01.2007 11:07:12 vasta tsitaadiga

kas tõesti muud teha ei ole, kui sellise jaburdusega oma pead vaevata?
kasutage korralikku IDE't mis ise koodi formatib.
sa võid ju oma arust superlaheda formattimise välja mõelda, kuid kui teine tegelane korraliku IDE'ga asja laht võtab siis keeratakse asi ikka IDE standardi järgi paika.

saage üle.
lisaks on olemas koodi generaatorid , automaatsed testimised (nant) ,automaatsed dokumenteerijad jne.
need ajad, kus kõik käsitsi nikerdati on möödas.

_________________
One man's constant is another man's variable
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
connor
HV kasutaja

liitunud: 19.02.2003




sõnum 05.01.2007 13:15:32 vasta tsitaadiga

ja siis kui sama asja tegemas on kakskümmend progejat ja kõigi IDE'd peal käivad ongi lõpuks koodist alles üks suur soga mida keegi enam lugeda ei taha.
Põhipoint on ammu välja öeldud - kasutada kokkulepitud standardi, olgu see siis peaprogrammeerija IDE oma või suvaline õhust võetud.
Jaburdusega ei ole kindlasti tegemist.

Või tahab keegi mergida tuhanderealisi faile millel on mustmiljon erinevust tänu treppimisele kuna igal progejal(või IDE'l) on oma "stiil"?
Kommentaarid: 31 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 28
tagasi üles
vaata kasutaja infot saada privaatsõnum
kk001a
HV vaatleja


liitunud: 28.05.2003




sõnum 05.01.2007 14:05:58 vasta tsitaadiga

See jutt pole päris õige, et igal IDE-l oma stiil. Programmeerimiskeeltel on enamasti soovituslikud formaatimise stiilid välja töötatud ja IDE-d kasutavad tavaliselt vaikimisi soovituslikku stiili. Muidugi on parem kui kasutatakse kokku lepitud ja kohustuslikku stiili, aga kui kodanik ise ei tea mis stiili kasutada siis vaikimisi IDE stiil on arvatavasti hea valik. Igatahes on see parem kui ise midagi välja mõelda, ja siis suvalises tekstiredaktoris üritada meeleheitlikult seda stiili järgida. Vaat SEE oleks kindlasti jaburdus.

PS! Kas sa merged mingis programmeerimiskeeles kirjutatud tuhanderealisi faile? See on muide veel üks näide jaburdusest, selliseid faile ei tohiks üldse mergeda vaid neid tuleks kohe refaktoorida!
tagasi üles
vaata kasutaja infot saada privaatsõnum
Urmet
HV vaatleja

liitunud: 29.07.2005




sõnum 05.01.2007 14:52:44 vasta tsitaadiga

jutt ei olnud vist sellest et kas treppima peaks käsitsi, vaid sellest et kuidas kõige kaunim on kellegi arvates. pealegi pole alati miskit hüpper-supper-koodin-sinu-eest-ja-toon-poest-piima IDE't käepärast võtta.
ise kirjutan niivisi. kasvõi notepadi's
if (foo)
{
  bar();
} else
{
  quux();
}

int tere(void)
{
  puts("Tere maailm!");
}


ps.
tuhat(ainsus) rida koodi ühes failis ei tundu veel palju. mitmuse juures kipub kurjaks minema
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
fbrz
HV kasutaja

liitunud: 15.03.2004




sõnum 05.01.2007 14:59:12 vasta tsitaadiga

conquer kirjutas:
Ise kasutan:

if(true)
{
   //kood
}
else
{
   //kood
}

kuna see tundub mulle kõige arusaadavam. Kuid ega sel vist olulist vahet pole mida sa kasutad.

mulle meeldib ka nii kuna annab kõige parema ülevaate - loogelised sulud algavad ja lõppevad samal tasandil ning kõik, mis on nende vahel, on ilusti uuel tasandli + loogelised sulud on samal tasandil if, else või muu expressioniga, mille juurde nad kuuluvad.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
Death
HV Guru
Death

liitunud: 06.09.2003




sõnum 05.01.2007 15:13:17 vasta tsitaadiga

Nene lemmikstiil on identne sellega mis mul välja on kujunenud.
_________________
"To be or not to be?" is a question of when, not if.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 36
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 05.01.2007 16:46:59 vasta tsitaadiga

Urmet kirjutas:
jutt ei olnud vist sellest et kas treppima peaks käsitsi, vaid sellest et kuidas kõige kaunim on kellegi arvates.


"Kaunis" pole siiski päris õige asi mille poole püüelda, kaunis võib olla ka selline kood:
     if(foo)
  {bar();}else{
quux();}int tere
(void){puts("Tere"
);puts(" "); puts(
"maailm!");while
  (5>3){int x=15
     ;x+=1;}}


Hea treppimisstiili juures on olulisim siiski see, et treppimine annaks edasi koodi enda loogikat. Samuti ei tohiks muudatused koodis ei nõuda muudatusi treppimises - näiteks üks eelpooltoodud stiil sellele reeglile ei allu (kui tahame else-osa pikemaks kirjutada, siis peame loogelised sulud ümber asetama):

if (true) {
//yadda
} else { /*yadda yadda*/ }
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga Online

sõnum 05.01.2007 17:47:29 vasta tsitaadiga

btw, ma olen ka else'i nii kirjutanud ühele reale, kui sinna vaid nt üks echo käsk tuleb... muul juhul kirjutan aga nii, nagu if'i... Samas ma nt ei poolda seda, et loogelised sulud on eraldi real... loogeline sulg pole ju eraldi käsk vaid ta on if'i, for'i või mõne muu üks komponentidest, seega ei ole ju mingit põhjust asja järgmisele reale ajada...
_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 05.01.2007 21:07:20 vasta tsitaadiga


if(true) {//{ algab siit, et järgmine rida oleks juba sisene kood
    kood(); //kindlasti peab algama tabiga või tühikutega, et saaks aru, et tegemist on sisemise koodiga
} //samale reale, et oleks näha, kus if lõppeb
else { //else uuele reale, et oleks võimalik eristada erinevaid osasid
    kood2();
}
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga Online

sõnum 05.01.2007 23:27:34 vasta tsitaadiga

täpselt nii, aint ma olen else pannud if'i loogelise sulu lõpuga samale reale kolmel põhjusel:
1: else käib if'iga siiski kokku nagu...
2: else on nii väike sõna, et naljakas teda panna eraldi reale
3: ma olen laisk ja ei viitsi enterit vajutada väga palju

_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt


viimati muutis jnt 06.01.2007 16:27:49, muudetud 2 korda
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 06.01.2007 00:41:15 vasta tsitaadiga

4: ekraaniruum pole raiskamiseks icon_smile.gif
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
fbrz
HV kasutaja

liitunud: 15.03.2004




sõnum 07.01.2007 01:25:42 vasta tsitaadiga

jnt kirjutas:
...seega ei ole ju mingit põhjust asja järgmisele reale ajada...

üks ja minu jaoks piisav põhjus: palju parem ülevaatlikkus ja selgus.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas siis ikkagi õigesti treppida? mine lehele 1, 2, 3  järgmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.