Pakkohan tästä oli jo oma aihe tekasta kun on tullut viime aikoina nähtyä näitä väittelyitä ja suosituksia. Lähtisin siitä, että asiasta kiisteleminen on turhaa enkä ketään lähtisi neuvomaan kumpaa käyttää, mutta koska tästä olisi tullut ilman pientä ranttia kovin lyhyt postaus niin listaan kumminkin oman valintani perustelut.
Käytän siis aina välejä saadakseni sorsan tasan siihen muotoon kuin haluan - tabien kanssa rivejä ei saa tasattua tarkasti (melko tarkasti kumminkin ilmeisesti? Ehkä en vain tiedä paremmin). Tabi (merkkinä) vie toki vähemmän tilaa kuin välit, mutta aikamoisen paketin saa kirjottaa ennen kuin tällä on väliä, varsinkin kun tiedostojen pakkaus on keksitty. Tabien avulla saa toki jokainen sorsan tahtomaansa muotoon, mutta tätä tarkoitusta varten useat editorit (vim, emacs, kuulen'ma) sisältävät tabify-
ja detabify
-komennot, joilla voidaan nopeasti vaihtaa tabeista väleihin ja toistepäin (toiminnasta en osaa sanoa). Ja välit näyttävät selkeämmiltä kuin tabit kun on Notepad2:ssa Show Whitespace päällä :). Ts. olen vain tottunut käyttämään välejä.
tl;dr sama se.
EDIT: Viksailtu jonni verran.
Tabin suuri salaisuus on, että sen voi jokainen säätää haluamakseen editorin asetuksista. Näin ei tarvitse tuskailla, että hyi kun on taas sen näköistä koodia, kuin tsuriga haluaa. ;) Rivejähän ei kuulu pätkiä turhaan ja sisennyksiä tulee luonnollisesti yksi lisää aina blokkia vaihdettaessa, joten ainakin minun koodini näyttäisi ihan samalta tabeilla tai väleillä. Ja jos siitä on kiinni, että haluaa katkaista koodirivin keskeltä ja haluaa jälkimmäisen puoliskon tiettyyn kohti, niin saahan siinä sitten väleillä tasattua sen blokin perustasoon nähden.
Noin yleisesti koodaustyylinä pidän Linux-kernelin ohjeista. Tähän liittyen suosittelen Google-hakua sanoilla "Linux kernel coding style".
Tabulaattorilla mennään. Itse pidän tabulaattorin "pituutta" kolmessa merkissä. Ei jaksa painella välilyöntiä.
Mielipidehommia mielestäni täysin. Mutta eiköhän tästäkin vielä kunnon kinastelu tulla näkemään :D
C-tyylisessä syntaksissa tabulaattori on ihan hyvä idea, mutta joissain kielissä se ei yksinkertaisesti toimi, koska sisennys ei ole niin "palikkamaista" vaan paljon vaihtelevampaa. Olen tottunut käyttämään aina välejä.
Itse olen tabulaattoriin tykästynyt ainakin C-, C++- ja Python-käytössä, sen kun jokainen saa haluamansa pituiseksi ja on lyhempi painellakin (vaikka esim. Katenhan saa sisentämään automaattisesti, hyvin kätevää).
Käytän QBees 2 merkin tabeja. QB muuten tallentaa tabit välilyönneiks. (x)htmlläs välilyöntiä tai en sisennä.
Edit: Ei sillä oo niin paljo väliä kumpaa käyttää.
Sisennys muuttui taannoin aikaisemmasta neljästä välilyönnistä kahteen firman koodausstandardien mukaan ja näyttäähän tuo fiksummaltakin. Tabeja vastaan ei sinällään ole mitään ja asianmukainen editori muuttaakin ne välilyönneiksi niin halutessani, mutta joskus on joutunut aukomaan tabeilla sisennettyä koodintynkää jossain Windowsin muistiossa ja aika hirveätähän sitä on katsella ja editoida.
Edit: Eikä sitä välilyöntiä tarvi painella, tabulaattori sisentää halutun määrän välilyöntejä kunnon editoreissa.
Itse olen vakaa tabulaattorin kannattaja.
Mites jos haluaa sisentää useamman rivin kerral välilyönneillä? Itse olen aina käyttänyt tabia. Ja tabin pituus riippuu aina vähän mistä suunnasta tuulee ja kummalla jalalla on noussut sängystä :)
ajv kirjoitti:
Mites jos haluaa sisentää useamman rivin kerral välilyönneillä? Itse olen aina käyttänyt tabia. Ja tabin pituus riippuu aina vähän mistä suunnasta tuulee ja kummalla jalalla on noussut sängystä :)
Käytännössä kaikki editorit joita olen vähänkään täysipäisesti käyttäneet ovat tukeneet "tab to spaces" toimintoa, joten tuo ei ole ongelma...
Tabi paljon parempi, toimii jokaisessa ohjelmassa samalla tavalla, eli yks deleten painallus poistaa yhden sisennöksen, eikä vain neljäsosaa...
JTS kirjoitti:
Käytännössä kaikki editorit joita olen vähänkään täysipäisesti käyttäneet ovat tukeneet "tab to spaces" toimintoa, joten tuo ei ole ongelma...
Näinpä tuntuu olevan. Notepadin lisäksi löysin koneeltani yhden IDEn, jonka editori ei tukenut.
Ja mitä T.M. tuossa sanoi on myös yksi syy, jonka takia TABIT eikä välit! :)
Duunissa ja kotona sama käytäntö TAB.
T.M. kirjoitti:
Tabi paljon parempi, toimii jokaisessa ohjelmassa samalla tavalla, eli yks deleten painallus poistaa yhden sisennöksen, eikä vain neljäsosaa...
ajv kirjoitti:
Ja mitä T.M. tuossa sanoi on myös yksi syy, jonka takia TABIT eikä välit! :)
Kunnon editori asianmukaisilla plugineilla tietysti tunnistaa myös nuo välilyöntisisennykset ja poistaa deletellä niin halutessaan kaikki sisennykseen tarkoitetut välilyönnit.
Aina ei ole tarjolla "kunnon editoria" vaan joku paska IDE :)
Edit: Tulee mieleen yksi IDE, jonka editori siis nimenomaan muuttaa aina tabit välilyönneiksi ja deletellä/backspacella lähtee pois vain yksi merkki. Onneksi sentään shift-tab toimii :)
Hmm, itse käytän kyllä sisennyksien poistoon shift+tabia, paljon kätevämpi kuin deletellä/backspacella riehua, voi jopa epäsisentään monta riviä kerralla.
Välejä käyttäessä vois olla hankala jos delete poistas monta kerralla kun yrittää tasata rivejä (ellei sitten tasaus ole juurikin tabikohdassa, kyllä aivan). Välien käyttööni voi toki vaikuttaa se, että koodaan lähinnä PHP:tä noudatellen PEARin koodausohjeita, joissa sisennykseen käytetöön neljää väliä. Melkein tässä alkaa kallistua tabeihin itekin, jos vaikka Eclipsessä olisi nätimmät tabi-merkit.
Juu, puhuinkin tuossa innoissani läpiä päähäni :) Editorista löytyy kyllä tuo ominaisuus, että deletellä saa pyyhittyä sisennykset, mutta toki itsekin käytän sisennysten pienentämiseen shift+tab -yhdistelmää.
tsuriga kirjoitti:
jos vaikka Eclipsessä olisi nätimmät tabi-merkit.
Eiks pitkä tyhjä oo hyvä tabimerkki? :P
Oon tottunu käyttää whitespaceja, näyttää nykyisessä editorissa tältä.
Ääni välimerkeille.
Kun koodi on sisennetty noilla (ja vieläpä oikein(tm)), niin voi olla
varma että katsoja näkee sen niin kuin tarkoitettu. Monissa työpaikoissa
missä olen ollut, code convention nimenomaan kieltää tab:n käytön sisennykseen.
Itse itseäni selventäen, vastasin siis Blazen viestiin - tabit on noita nuolia ja välit noita pisteitä. Emminä kyllä kieltoa allekirjoittaisi, kun helppohan noita on vaihtaa ja lähes yhtä hyvinhän tabeillakin saa muotoiltua, skaalautuvuus jopa parempi. Luettavuus ei toki pitäsi olla ongelma hyvin kirjoitetussa koodissa. Jostain luin jotain perusteluita tabien kieltämiselle, että softa rikkoo ne (olikohan jotain SVN:ään liittyvää...), ja aina ei voi softaa vaihtaa. (meni vähän mutu-harhailu-arvailuksi tämä viimeinen "argumentti" kun en tarkemmin muista aikaa ja paikkaa).
Tabit ja Shift-tabit varsinkin jos joutuu sohlaamaan kymmeniä rivejä pitkien kappaleiden kanssa.
Aika vaihtaa parempaan editoriin jos joudut aina käsin hakkaamaan tabit :). Useammalla riville jakaessa voin kuvitella joutuvani tuommoiseen tilanteeseen, mutta muuten autoident toimii kuin junan vessa.
Paras vastaus tähän on välimerkit, jotka syntyvän tabia painamalla. Ei ole kiva napsutella välimerkkejä sisentämiseksi, kun voi yksinkertaisesti painaa tabia, joka piirtää kauniit neljä välimerkkiä. Useimmat tätä toimintoa hyödyntävät ohjelmat osaavat samalla kumota tabeja shift+tab-yhdistelmällä, joten ongelmia ei ole! Notepad++ \o/
tgunner kirjoitti:
Paras vastaus tähän on välimerkit, jotka syntyvän tabia painamalla. Ei ole kiva napsutella välimerkkejä sisentämiseksi, kun voi yksinkertaisesti painaa tabia, joka piirtää kauniit neljä välimerkkiä. Useimmat tätä toimintoa hyödyntävät ohjelmat osaavat samalla kumota tabeja shift+tab-yhdistelmällä, joten ongelmia ei ole!
Tuotahan me välilyöntien kannattajat ollaankin tässä koko ketjun ajan mainostettu :)
Tabeissa on se hyvä puoli, että lähdekoodia katsova voi itse määrittää sisennyksen leveyden, mutta tabit eivät siitä huolimatta anna katsovalle mahdollisuutta tarkastella koodia omalla, henkilökohtaisella sisennystyylillään. Lisäksi joillekin ohjelmoijille mieluisa "rivit enintään n merkkiä" -periaate hajoaa tabien vuoksi.
Gwaur kirjoitti:
- - joillekin ohjelmoijille mieluisa "rivit enintään n merkkiä" -periaate - -
Ja se ännähän on tietenkin 80 merkkiä !
Ei merkkimäärällä ole väliä, sillä tabulaattori romuttaa koko ajattelun, vaikka tabi syvimmältä olemukseltaan yhden merkin mittainen onkin. Tavallisestihan ne näytetään leveämpänä. :P
tgunner kirjoitti:
Gwaur kirjoitti:
- - joillekin ohjelmoijille mieluisa "rivit enintään n merkkiä" -periaate - -
Ja se ännähän on tietenkin 80 merkkiä !
Ehei, se n on 79! Noh, ehkä tuo 80 on se ehdoton raja... josta siitäkin joutuu välillä lipsumaan, kun ei ole mistä rivin katkaisi.
Täytyy tunnustaa, että tabeja ja välilyöntejä tulee kirjoitettua sekaisin. Pitäisi jaksaa konffailla se välilyönti joka editoriin. Tosin mitään isompaa ei random-editoreilla tule kirjoitettuakaan. Välilyöntejä suosin siitä syystä, että niillä koodi näyttää kaikissa editoreissa samalta. Johtuu osaltaan siitäkin, että tykkään kahden välilyönnin sisennyksiä käytellä, joka taas johtuu tuosta tavasta kirjoittaa 80 merkin levyisiä rivejä.
80 merkkiä on kiva raja vielä nykyäänkin ihan siksi, että tuota noudattamalla mahtuu useampikin koodiliuska vierekkäin näytölle :)
Ehdottomasti välit, vieläpä niin että toimii tabilla ja sit 2 merkkiä per tabin painallus. Luokkien väliin 3 riviä tyhjää, luokan nimet OnJotain ja funktioiden on_jotain. Tässäpä koodaustyylini pythonille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.