13. Hyvä ohjelmointitapa (osa 1)

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
Ohjelman perusrakenteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Ohjelman perusrakenteet
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
String-vertailusta ja Scannerin käytöstä (1/2)
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
11. Javan toistorakenteet
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
2. Lisää Java-ohjelmoinnin alkeita
Aakkosnumeerinen tieto Tarkoittaa kaikkea muuta tietoa paitsi laskentaan tarkoitettuja lukuja Muuttujan tietosisältö on siis tekstitietoa Muuttujan tietotyypiksi.
Visual Basic -ohjelmointi
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
Valintarakenne valintarakenne alkaa aina kysymyksellä eli ehdolla ehto tarkoittaa, että muuttujan sisältöä verrataan toisen muuttujan sisältöön tai vakioon.
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö.
String-vertailusta ja Scannerin käytöstä (1/2)
5. Kapselointi.
1. Omat operaatiot.
7. Hyvä ohjelmointitapa..
13. Loogiset operaatiot.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
5. HelloWorld-ohjelma.
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö
7. Näytölle tulostaminen
Aakkosnumeerinen tieto
19. Tietovirrat.
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
15. Lohkot.
12. Javan toistorakenteet
13. Pakkaukset.
4. Attribuutit.
7. Hyvä ohjelmointitapa..
7. Näytölle tulostaminen
5. HelloWorld-ohjelma.
13. Loogiset operaatiot.
12. Javan toistorakenteet
3. Attribuutit.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

13. Hyvä ohjelmointitapa (osa 1)

Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen – tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin tekijänsä ymmärrettävissä. Pitkän ja monimutkaisen ohjelman ymmärtäminen voi olla vaikeaa vaikka ohjelma on tehty hyvin. Huonoa koodia ei välttämättä ymmärrä edes koodin tekijä!

Yleistä Hyvää ohjelmointitapaa noudattamalla saadaan aikaiseksi ymmärrettäviä ja hallittavia ohjelmia. Perusasioita: Nimeä tunnukset järkevästi. Kommentoi riittävästi ja oikeissa paikoissa. Sisennä koodia. Käytä vakioita. Rivitys: käytä välirivejä ja vältä liian pitkiä rivejä. Lisää ohjeita kurssin edetessä.

Nimeä järkevästi Tunnusten (nimien) tulee olla järkeviä. Nimestä tulisi voida päätellä esimerkiksi mitä tietoa muuttuja sisältää. Usein järkevä nimi on yhtä kuin riittävän pitkä nimi. Noudata nimeämiskäytäntöäsi johdonmukaisesti. Vakiintuneita käytäntöjä Javassa: Muuttujien nimet alkavat pienellä kirjaimella. Luokkien nimet alkavat isolla kirjaimella. Vakiot kirjoitetaan isoin kirjaimin.

Kommentoi Kommentit kannattaa kohdistaa erityisesti koodin keskeisiin osiin ja vaikeasti ymmärrettäviin osiin. Pitemmässä ohjelmassa ei tarvitse kommentoida kaikkea. Ohjelman alkuun kannattaa kirjoittaa kommentti, josta käy ilmi mitä ohjelma tekee ja kuka ohjelman teki. /* * Ensimmäinen harjoitustyö: Muutetaan suomenkielinen viesti * morsekoodiksi ja päinvastoin. * * Lausekielinen ohjelmointi, syksy 2009, Jorma Laurikkala, jpl@cs.uta.fi. * Viimeksi muutettu 16.10.2009 15:11:45. */ public class Morse { … }

Sisennä Sisennys auttaa hahmottamaan kokonaisuuksia. Sisennyksellä osoitetaan lauseiden looginen ja/tai kieliopillinen yhteenkuuluvuus. Välilyönnein (harjoitustöissä) tai tabulaattorilla: Kukin sisennyksen taso 2-4 välilyöntiä. Sekä tavalliset lauseet että kommentit samalle tasolle. Huomaa, että tabulaattorilla sisennettäessä koodi näyttää melko varmasti erilaiselta muissa editoreissa. Välilyöntejä ja tabulaattoreita ei saa käyttää sekaisin.

Sisennä Käytännössä kaikkien koottujen lauseiden sisältö sisennetään. Tasot: ohjelman, main-operaation, ohjausrakenteen, sisemmän ohjausrakenteen koottu lause jne. Myös ohjausrakenteeseen liittyvä yksittäinen lause sisennetään. Ole johdonmukainen sisennyksissä: kullakin tasolla aina sama määrä sisennystä. Esim. while (jatketaan) { // Tulostetaan System.out.println(…); … // Päivitetään lippumuuttuja. if (…) { jatketaan = false; } else jatketaan = true;

Sisennä if (valinta == LISAA) { Sisäkkäiset if-else-rakenteet esitetään joskus tilanpuutteen vuoksi siten, että sisemmän lauseen if- osan otsikkorivi kirjoitetaan ulomman lauseen else-osan otsikkoriville. Tällöin rakenteen otsikkorivit ja koottujen lauseiden sisältö alkavat samalta tasolta. Esim. if (valinta == LISAA) { // Lisätään. ... } else if (valinta == HAE) { // Haetaan. else { // Virhe.

Käytä vakioita Vakioiden tunnus kirjoitetaan ISOIN KIRJAIMIN. Esim. final String LOPPU = "Ohjelma lopetettu. Kiitos käytöstä!"; Vakiot määritellään yleensä ohjelman alussa. Helpottavat ohjelmien ylläpitoa, esimerkiksi tilanteissa, joissa arvo on suojattava muutoksilta, sama arvo esiintyy ohjelmassa useassa kohtaa ja ohjelmaa käytetään näppäimistöltä annettavilla komennoilla.

Rivitys Osoita lauseiden looginen yhteenkuuluvuus kootun lauseen sisällä välirivejä käyttämällä. // Erota lauseita näin: while (jatketaan) { // Luetaan syöte. System.out.println(…); int luku = In.readInt(); // Tulostetaan } Älä siis sisennä eri tasoille kootun lauseen sisällä, ellei kyseessä ole sisemmän kootun lauseen sisältö. // Ei _koskaan_ näin: while (jatketaan) { // Luetaan syöte. System.out.println(…); int luku = In.readInt(); // Tulostetaan } Pitkät rivit ovat vaikeaselkoisia ja näkyvät vain osin pienessä ikkunassa: katkaise rivit noin 80 merkin kohdalta, mikäli mahdollista.