The page has been modified since the last reload. Refresh now?

There are {{ pendingUpdatesCount() }} pending paragraph updates.

 

Ohjelmointi 1 kurssin koodauskäytänteet

Ensisijaisesti tällä kurssilla pyritään käyttämään C#-koodauksessa tyypillisiä käytänteitä, jotka löytyvät tästä linkistä. Seuraavassa joitakin pääkohtia, tarkemmin asiasta löytää alla olevista linkeistä.

{}

Vaikka periaatteessa skandeha (å, ä ja ö) saakin käyttää muuttujien nimissä ja tiedostojen nimissä, niin niiden käyttöä kannattaa välttää, koska erilaiset merkistöjärjestelmät sotkevat asioita vielä pitkän aikaa.

1. Tiedostot ja luokat

  • tiedoston nimi sama kuin luokan nimi, tällöin DoxyGen dokumentin teko onnistuu ilman kikkailuja
  • luokan nimi alkaa aina isolla kirjaimella (ja siis myös tiedoston, esim. class Laivanupotus on tiedostossa Laivanupotus.cs)
  • Esimerkkejä luokkien nimistä:
{}
Suomeksi: Laiva
Luokan nimenä oikein: Laiva
Väärin: laiva, LAIVA

Suomeksi: Sierpinskin kolmio
Luokan nimenä oikein: SierpinskinKolmio
Väärin: sierpinskinkolmio, sierpinskinKolmio, Sierpinskinkolmio, 
        Sierpinskin_Kolmio, SIERPINSKIN_KOLMIO, SIERPINSKINKOLMIO
{}

2. Muuttujat

  • lokaalit muuttujat (myös parametrit) alkaa pienellä kirjaimella
  • attribuutit alkavat pienillä kirjaimilla
  • sanavälit osoitetaan vaihtamalla kirjain isoksi (camelCase)
{}
Suomeksi: Pituus
Muuttujan nimenä oikein: pituus, l (niinkuin length)
Väärin: Pituus, PITUUS, p (liian monitulkintainen)

Suomeksi: Autoja jäljellä
Muuttujan nimenä oikein: autojaJaljella
Väärin: autoja_jaljella, autojajaljella,
        Autoja_Jäljellä, AutojaJäljellä,
        AutojaJaljella, ...

Suomeksi: Elämälaskuri
Muuttujan nimenä oikein: elamalaskuri
Väärin: Elamalaskuri, ElamaLaskuri, elämälaskuri,
        elämä_laskuri, ...
{}

3. Vakiot

Tällä kurssilla vakiot kirjoitetaan suuraakkosin siten, että sanat erotetaan alaviivalla (_). Näin ne erottaa helposti muuttujien nimistä, jotka alkavat pienellä kirjaimella.

Esimerkki:

{}
const int KUUKAUSIEN_LKM = 12;
{}

4. Aliohjelmat, funktiot ja metodit

Aliohjelmien, funktioiden ja metodien nimet alkavat isolla kirjaimella (PascalCase)

{}
Suomeksi: Piirrä kolmio
Aliohjelman nimenä oikein: PiirraKolmio
Väärin: piirraKolmio, piirräKolmio,
        PiirräKolmio, Piirrä_Kolmio,
        piirrä_kolmio, ...
{}

5. Sulut ja välilyönnit ja tyhjät rivit

  • aliohjelmien loppusulun jälkeen kaksi tyhjää riviä
  • tyhjä rivi kun asiayhteys muuttuu
  • aloittava lohkosulku { omalla rivillään
  • lopettava lohkosulku } samassa sarakkeessa aloittavan lohkosulun kanssa
  • sisennyksessä käytettään välilyöntejä, 4/sisennystaso, ei TAB-merkkiä (erikoismerkit näet esim. Notepad++:ssa View --> Show symbol --> Show all characters)
  • aliohjelmakutsuissa aloittava kaarisulku ( kirjoitetaan kiinni aliohjelman nimeen:
{}
MontakoVapaata(ruudut);  // VÄÄRIN olisi: MontakoVapaata (ruudut);
  • kontrollirakenteiden ehdoissa aloittava kaarisulku ( kirjoitetaan irti kontrollirakenteen avainsanasta:
{}
if (arvo == 0)      // VÄÄRIN olisivat if(arvo == 0), tai if( arvo == 0 )
while (summa < 100) // VÄÄRIN olisi: while(summa < 100)  
{}

6. Kommentointi

  • käytetään XML-muotoista kommentointia jotta saadaan dokumentaatio
  • mielellään testataan kaikki kohtuuvaivalla testattavissa olevat funktiot
  • tekijä- ja versiotieto tiedoston alkuun, esimerkiksi
{}
using System;
using System.Collections.Generic;

/// @author  Antti-Jussi Lakanen, Martti Hyvönen
/// @version 22.12.2011
///
/// <summary>
/// Harjoitellaan vielä taulukoiden käyttöä.
/// </summary>
public class Arvosana
{
// ...
{}

7. Saantimääreet

Kirjoitetaan näkyville kaikki saantimääreet.

  • Attribuuteille private
  • Metodeille private/protected/public sen mukaan mikä on tarkoituksenmukaista
{}

7.1 Esimerkki

{}
#

Please login to interact with this component

using System;

/// @author  Vesa Lappalainen
/// @version 22.12.2011

/// 
/// Laivanupotuspeli.
/// 
public class Laivanupotus // Luokan nimi, siksi alkaa isolla
{ // aloittava sulku omalla rivillä
    private int laivojenMaara = 4;  // attribuutti, siksi alkaa pienellä, kirjoitetaan private

    /// 
    /// Lasketaan montako vapaata ruutua on jäljellä
    /// 
    /// taulukko ruuduista, kussakin
    /// ruudussa 0 = vapaa, muu numero = laivan numero.
    /// vapaiden ruutujen määrän
    ///  // yksikkötesti Comtestin avulla
    /// 
    ///    int[,] ruudut = {{1, 0, 2}, {0, 0, 3}};
    ///    Laivanupotus.MontakoVapaata(ruudut) === 3;
    ///    int[,] ruudut0 = {{1, 4, 2}, {5, 5, 3}};
    ///    Laivanupotus.MontakoVapaata(ruudut0) === 0;
    /// 
///
public static int MontakoVapaata(int[,] ruudut) // funktio alkaa isolla, parametri pienellä { int vapaita = 0; // lokaali muuttuja, aloitetaan pienellä foreach (int arvo in ruudut) { if (arvo == 0) vapaita++; // if:n jälkeen ja == ympärillä tyhjät, sulun jälkeen myös } return vapaita; } // loppusulku samassa sarakkeessa alkusulun kanssa, kaksi tyhjää riviä funktion jälkeen /// /// Lasketaan montako vapaata ruutua jäljellä /// /// ei käytössä /// public static void Main(string[] args) { int[,] ruudut = new int[10, 10]; ruudut[3, 3] = 1; int vapaita = MontakoVapaata(ruudut); // funktiokutsussa sulku kiinni funktion nimessä System.Console.WriteLine("Vapaita " + vapaita); } }
{}

8. String vai string

Maailmalla suositus tuntuu olevan että muuttujat esitellään string ja kun kutsutaan staattista metodia, niin String eli

{}
    public static void Main(string[] args)
    {
        string jono = "kissa";
        int i = jono.IndexOf('s');
        string tulostettava = String.Format("Paikka oli {0}", i);
        Console.WriteLine(tulostettava);
    }
{}
{}