Kumpi parempi:
a)
IF THEN DO:
.......
END.
b)
IF THEN
DO:
.......
END.
Omasta mielestä tuo b-vaqihtoehto on niin hirveä, ettei pahemmasta väliä.....
a)
IF THEN DO:
.......
END.
b)
IF THEN
DO:
.......
END.
Omasta mielestä tuo b-vaqihtoehto on niin hirveä, ettei pahemmasta väliä.....
Vastaukset 28
Vanhimmat
Basic on paras koska...
1. "IF" loppuu aina "END IF" ja "FOR ITEM = 1 TO"... loppuu "NEXT", tai "NEXT ITEM". }-merkki on moniselitteinen.
2. Basicissa ei tarvita //kommentti tai /*kommentti*/ vaan 'kommentti riittää. Kaikissa ohjelmointikielissä pitäisi olla paremmat kommenttimerkinnät, ainakin sallia richtext-muoto.
Mitä ideaa tuollaisessa end iffissä on?
Jos tilillä on rahaa, käy kaupassa
Lopeta jos.
Järjetöntä.
if (jotain) {
tee mitä käsketään;
}
Kun silmukka on vaikka 100 riviä pitkä ja niitä on monia sisäkkäin, tietää mikä lohko loppuu mihinkin.
Voi sen tehdä näinkin...
if (jotain) {
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
} //if loppuu
...mutta tämä tapa on huono.
if -lauseke loppuu kun lauseke loppuu. Kun ehto ei täyty jatketaan matkaa, ei siinä mitään loppujossitteluja tarvitse. Tämähän on yhtä itsestään selvä asia kun se että laskeminen aloitetaan nollasta.
Sisäkkäisissä lausekkeissa kannattaa käyttää sisennystä.
if (jotain) {
for ($i = 0 ; $i
"ei siinä mitään loppujossitteluja tarvitse. Tämähän on yhtä itsestään selvä asia"
Ei tarvitsekaan mutta visuaalisuus on aina vaan eduksi. Olen jopa sitä mieltä että välihuomautuksetkaan eivät olisi haitaksi:
if (jotain) {
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
//if jatkuu...
tee mitä käsketään;
tee mitä käsketään;
tee mitä käsketään;
} //if loppuu
Vähän kuin "kuuntelette nyt radio-ohjelmaa Kenguru". Basic on mielestäni tässä parempi. Siinä on myös "END FUNCTION". HTML:ssä ja XML:ssä on myös alku- ja lopputagit, eikä turhaan.
Riippuu tietysti ohjelman koosta...
Seuraavaksi vaadit varmaan että koodiin pitäisi saada kuviakin jotta se olisi mukavan visuaalista katsella.
Huh hah hei, sisennyksessä ja editorin värikoodauksessa on visuaalisuutta ihan riittämiin.
Kommentointi on tietenkin hyvä asia, mutta se nyt on eri asia kuin visuaalisuus.
En ymmärrä mitä sinä merkintakielien lopetustagit tähän sekoitat. Vaikka sama se, if-lausekkeen lopettavan } -merkin voidaan ajatella vastaavan merkintäkielien lopetustagia.
Mutta kerro minulle kun en tunne tuota VB:tä (siitä te kai puhutte), pitääkö siinä olla jotain end-juttuja lausekkeissa? Välttämättömiä vai vapaaehtoisia?
"Pitääkö siinä olla jotain end-juttuja lausekkeissa? Välttämättömiä vai vapaaehtoisia?"
Välttämättömiä monirivisissä "iffeissä". Yhden rivin iffeissä ei tarvita mitään.
Annatko jonkun esimerkin.
Basicissa (tai sen ideassa) ohjelmalohkoihin suhtaudutaan vähän eritavalla. If:t ja For:t edustavat monimutkaisempia rakenteita ja mitään olioiden peritymisiä ei ole tai ainakaan niitä ei paljon käytetä. Rakenteita on yleensä vähemmän; siksi kai niiden pitää olla näkyvämpiäkin. Aikaisemmin Basicissa käytettiin jopa suoria hyppykäskyjä, GOTO:ja ja niistä on ollut paljon keskustelua.
"End If" kertoo enemmän kuin "}"
If a = b Then
Print "Totta"
End If
"End If" tarkoittaa siis SEKÄ lohkon loppua, ETTÄ koko If-rakenteen loppua.
"if-lausekkeen lopettavan } -merkin..."
"}"-merkki tarkoittaa lohkon loppumista, ei jossittelun.
En oikein vieläkään ymmärtänyt mitä mieltä endiffien käytössä on.
Muuten, silloin kun minä kävin koulua niin silloin opeteltiin juuri tuota muinaista basiccia jossa kirjoitettiin rivinumerot joka rivin alkuun ja käytettiin goto-lauseita.
Silloin sanottiin, että basic pitää opetella jos vähänkin aikoo olla tietokoneiden kanssa tekemisissä. No, ensinnäkin olen ollut paljon ja lisäksi jonninverran ohjelmoinutkin mutta mihinkään en sitä silloin opetettua basiccia ole koskaan tarvinnut :)
Oikeastaan kuulemma hyvä vain ettei sitä aikoinaan jaksanut, basicin opetteleminen ensimmäiseksi kieleksi jättää kuulemma pahat ohjelmointivammat joista on vaikea päästä myöhemmin eroon.
Molemmat ovat yhtä kehnoja minusta. Omassa suosikkikielessäni ei ole mitään DO- ja END-pelleilyjä. On vain if then ja else.
do {
echo $i;
} while ($i > 0);
Silmukatkin ovat ihan syvältä. Rekursio se ohjelman tiellä pitää.
Mitä eroa noissa kahdessa oikein on?
IF THE FOLLOWING CONDITION IS TRUE (tähän ehto) THEN DO THE FOLLOWING THING(S)
MY NAME IS (lohkon nimi)
(tähän lause)
END BLOCK (lohkon nimi)
Lähdekoodin layaout-kysymykset ovat ikuisuuskysymyksiä. Tärkeimpiä puolia on se, että ollaan johdonmukaisia ja koko samaa koodia käsittelevä organisaatio noudattavat samaa käytäntöä.
Minusta tärkeintä on luettavuus. Luettavuutta helpottamaan käytännöt on kehitetty. Minusta johdonmukaisin käytäntö on esim. Symbianin noudattama (siis mitä myös Nokia käyttää):
http://www.forum.nokia.com/info/sw.nokia.com/id/577f818 8-14b6-44f2-997e-28724145e726/S60_Platform_Cpp_Coding_C onventions_v2_0_en.pdf.html
Sen mukaan C :ssa sisennetään näin:
if ( iPointer->Method() > KOurMaxValue )
...{
...iCounter ;
...variable = iTable[a] iOffset;
...}
Tämän näkemyksen mukaan aaltosulut ovat lohkon alku ja loppu, eli osa lohkoa, joten ne sisennetään samalle tasolle, mutta omalle rivilleen. Luettavuus on todella hyvä.
Samalla logiikalla:
b)
IF THEN
...DO:
...Operaatio1();
...Operaatio2();
...END.
(S24-editori poistaa white spacen, joten korvasin sisennykset ..... pisteillä.)
Näyttää minun silmissäni hyvältä.
"Luettavuus on todella hyvä."
Kieltämättä.
Mutta Basicissapa käytetään yleisesti tätä:
Function Tee()
....If Then
........Teejotain
....Else
........Teejotainmuuta
....End If
End if
Minusta tämä on parempi enimmissä tapauksissa. Hahmottaa rakenteen lopunkin.
paras on kyllä ehdottomasti näin:
if(iPointer->Method() > KOurMaxValue) KOurMaxValue) {
...iCounter ;
...variable = iTable[a] iOffset;
}
tekee koodista tosi tunkkaisen näköistä
if(iPointer->Method() > KOurMaxValue) {
iCounter ;
variable = iTable[a] iOffset;
}
Mielestäni oikein kaunista.
»S24-editori poistaa white spacen, joten korvasin sisennykset ..... pisteillä.»
Tämä foorumi tosiaan jättää huomioimatta useamman kuin yhden välilyönnin, mutta hyväksyy tabulaattorit silti täysin. Ja teen sisennykset aina tabulaattorilla.
t: Höpö.
void main()
{
main();
main();
main();
main();
}
Tuohan on täysin sopusoinnussa Symbian käytännön kanssa:
Function Tee()
....If Then
........Teejotain
....Else
........Teejotainmuuta
....End If
End if
//========================
void my1Class::Tee1()
...{
...if(reallyTrue1)
......{
......op1();
......op2();
......}
...else
......{
......op3();
......op4();
......}
...}
eli ihan hyvä, vaikkei kaikille kelpaakaan.
void main() {
main();
main();
main();
main();
}
Minusta sulut pitää ehdottamasti olla samassa linjassa ehtolauseen/funktiomäärittelyn kanssa, eli:
if(....)
{
...käsky1;
...käsky2;
}
Näin näkee missä kyseinen ehto/funktio alkaa ja loppuu.