-muuttujat ja funktioiden sekä metodien nimet aina ENGLANNIKSI
-kommentit PhpDoc (tai Pear) muodossa ENGLANNIKSI jos ne on "implementation free"
-muut kommentit ENGLANNIKSI kielen omilla menetelmillä
-paketoi kaikki loogiset osa-alueet omiin tiedostoihinsa ja anna niille soveltuva "namespace" tai "prefix".. (esim gui, database, core jne)
-tee ohjelmista parametroitavia ja siten ohjattavia "vivuilla"
-tee ohjelmista aina geograafisesta alueesta riippumattomia
-tee ohjelmista aina kieliriippumattomia gui:n osalta (käytä template malleja)
-tee ohjelmiin aina oma virheenkäsittelijä
-tee ohjelmiin aina oma lokinkirjoitusrutiini, jossa parametreillä valittavissa myös "debug" ja "verbose"
-tee ohjelmastasi vapaan lisenssin alainen ja levitä se eteenpäin, jotta muutkin hyötyvät!!!!
...muitakin ohjeita piisaa, mutta muista nuo, että varmistat sen, että koodi on ylläpidettävissä ja myös muunkielisten kuin suomalaisten tekemänä. Maailma on kansainvälinen!
Edit:
-käytä versionhallintaa (SVN on hyvä)
Minustakin tuo on aika pitkä lista vaatimuksia, vähemmälläkin kyllä pystyisi opettelemaan. Tärkeintä oikeastaan on pyrkiä etenemään niin että homma on kivaa. Siten jaksaa opetella ja kokeilla enemmän.
Englantia kyllä suosittelen minäkin koodissa käyttämään mikäli siitä ei ole vaivaa. Ihan alkuun suomenkielinen nimeäminen voi helpottaa erottamaan, mitkä nimivalinnat koodissa ovat omia ja mitkä muualta saatuja, mutta pidemmän päälle silti kannattaa ihan tavan vuoksi kirjoitella englanniksi koodit siltä varalta että joku suomea osaamaton sattuu lukemaan. Tämä helpottaa esimerkiksi internetistä apua kysellessä vastaajia lukemaan koodia.
Versionhallinnan opettelu on myös erittäin hyödyllistä, jos semmoinen kiinnostaa. Itse en oikein osaisi kuvitellakaan ohjelmoivani mitään useamman päivän projektia ilman että pitäisin versiohistoriaa tallessa. Toisaalta tämäkin on semmoinen että alkuun pärjää ilmankin. Työkalut siihen eivät nykyään ole mitään mahdottoman hankalia käyttää, mutta kun ohjelmoinnin aloittaminen muutenkin vaatii sitä huomiota niin tämän jättäisin ehkä siihen vaiheeseen kun rupeaa tuntumaan että samaa ohjelmaa tulee kirjoitettua useampi päivä.
Sori, en halunnut pelotella aloittelevaa, mutta minusta on erittän hyvä, että heti alusta opitaan oikeat (yleiset ja standardit) toimintatavat, sillä jatkossa niiden kitkeminen on todella hankalaa.
Toki "hello world"-tasolla pitääkin kokeilla ja testailla. Se on oikein hyvä malli. Silti helposti siinä jää joitain koodinpätkiä sieltä vanhasta roikkumaan, joten siksi kannustan kovasti koodaamaan siten, että ensin tehdään proto ja sitten siitä "omaan kirjastoon" valmis koodi.
Jos joitain lisäohjeita nyt pikaisesti haluan antaa, niin vielä sen, että kun ja jos koodaat QT:lla tai millä tahansa muulla GUI-frameworkillä, niin pidä se core-koodi erillisenä. Tämä tarkoittaa sitä, että koodaa jokaisesta loogisesta "palikasta" oma ohjelmansa, jota voi ajaa komentoriviltä. (Käytä GNU:n getopt:ia parametrointiin). Koodaa GUI-osuus QT:lla tmv siten, että se kutsuu tekemäsi ohjelman suorittavaa rajapintaa "entry-point funktiota" (jolloin olet luonut oman APIn siihen), jotta homma on siirrettävissä mahdollisimman helposti toiselle alustalle. Tämä mahdollistaa myös sen, että koodi on siirrettävissä linkitettyyn kirjastoon (.so tai .dll) pelkästään exporttaamalla rajapinta ulos.
Jos teet siihen luokan ympärille, niin sitten siihen interface, mutta minä suosin kyllä kovasti Ansi-C toteutusta, joihin sitten kannattaa aina laittaa headeriin tuo cplusplus osio:
#ifndef _MY_HEADER_H_
#define _MY_HEADER_H_
#ifdef __cplusplus
extern "C" {
#endif
..varsinainen header koodi..
#ifdef __cplusplus
}
#endif
#endif /* _MY_HEADER_H_ */
Autan mielelläni alkuun, jos jotain kysyttävää tulee ja voin kaivaa tuon mainitsemani getopt() koodin windows alustaa varten, jotta saat koodista alustariippumatonta. Linukassahan se on GNU-oletuksena kirjastoissa.
Versionhallintaan löytyy ohjeita esimerkiksi täältä:
http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.htmlEdit:
getopt() löytyi täältä:
http://www.greenend.org.uk/rjk/bzr/sftpserver.dev/getopt.cEli tuo vain sitten projektiin mukaan, teet sille prototyypin "getopt.h"
#ifndef _GNU_GETOPT_H_
#define _GNU_GETOPT_H_
#ifdef __cplusplus
extern "C" {
#endif
int getopt(int argc, char *const *argv, const char *optstring);
#ifdef __cplusplus
}
#endif
#endif /* _GNU_GETOPT_H_ */
ja sitten omaan "main.c":n koodi:
#ifdef _WIN
#include "getopt.h"
#endif
Ja näin sinulla on Windows kelpoinen versio koodista, joka hyödyntää getoptia.