Centerlink (Talk | contribs) (Created page with "/ / Väärin") |
(Updating to match new version of source page) |
||
(39 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | <languages /> | |
+ | Tämä dokumentti kuvaa kdelibs-koodin suositellun koodaustyylin. Kukaan ei pakota käyttämään tätä tyyliä, mutta on suositeltavaa käyttää muodoltaan yhtenäisiä lähdekooditiedostoja. | ||
− | ''' | + | <span class="mw-translate-fuzzy"> |
+ | '''Lyhyesti: Kdelibs-koodaustyyli noudattaa Qt 4 -koodaustyyliä.''' | ||
+ | </span> | ||
− | == | + | == Sisennys == |
− | * | + | * Ei sarkainmerkkejä |
− | * 4 | + | * 4 välilyöntiä yhden sarkainmerkin sijasta |
− | == | + | == Muuttujaesittely == |
− | * | + | * Jokainen muuttujaesittely uudella rivillä |
− | * | + | * Jokainen uusi sana muuttujanimessä alkaa isolla kirjaimelle (niin kutsuttu kamelityyli) |
− | * | + | * Vältä lyhennyksiä |
− | * | + | * Käytä hyödyllisiä nimiä. Ei lyhyitä nimiä, paitsi: |
− | ** | + | ** Yksimerkkiset muutujanimet voivat ilmaista laskureita ja tilapäisiä muuttujia, joiden tarkoitus on ilmeinen |
− | ** | + | ** Muuttujat ja funktiot (metodit) alkavat pienellä kirjaimella |
Esimerkki: | Esimerkki: | ||
Line 21: | Line 24: | ||
QString prtxt, errstr; | QString prtxt, errstr; | ||
− | // | + | / / Oikein |
KProgressBar *downloadProgressBar; | KProgressBar *downloadProgressBar; | ||
QString progressText; | QString progressText; | ||
Line 27: | Line 30: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == Tyhjemerkki == |
− | * | + | * Käytä tyhjiä rivejä ryhmälauseissa |
− | * | + | * Käytä vain yhtä tyhjää riviä |
− | * | + | * Käytä yhtä välilyöntiä jokaisen avainsanan jälkeen |
− | * | + | * Käytä yhtä välilyöntiä ennen osoitin- ja viitemerkkejä '*' tai '&', mutta ei niiden jälkeen |
− | * | + | * Ei välilyöntiä tyyppimuunnoksen jälkeen |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
− | // | + | / / Väärin |
QString* myString; | QString* myString; | ||
if(true){ | if(true){ | ||
} | } | ||
− | // | + | / / Oikein |
QString *myString; | QString *myString; | ||
if (true) { | if (true) { | ||
Line 47: | Line 50: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == Aaltosulkeet == |
− | + | Perussääntönä vasen aaltosulje tulee samalle riville kuin lauseen alku. | |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
− | // | + | / / Väärin |
if (true) | if (true) | ||
{ | { | ||
} | } | ||
− | // | + | / / Oikein |
if (true) { | if (true) { | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Poikkeus: Funktiototeutuksissa, luokka-, struct-rakenne- ja nimiavaruusesittelyissä on aina avaava aaltosulje aloitusrivillä. | |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
void debug(int i) | void debug(int i) | ||
Line 76: | Line 79: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Käytä aaltosulkeita jopa silloin kun ehdollisen lauseen runko sisältää vain yhden rivin. | |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
− | // | + | / / Väärin |
if (true) | if (true) | ||
return true; | return true; | ||
Line 87: | Line 90: | ||
qDebug("%i", i); | qDebug("%i", i); | ||
− | // | + | / / Oikein |
if (true) { | if (true) { | ||
return true; | return true; | ||
Line 97: | Line 100: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == Switch | + | == Switch-lausekkeet == |
− | Case | + | Case-nimiöt ovat samassa sarakkeessa kuin switch-lause |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
switch (myEnum) { | switch (myEnum) { | ||
Line 115: | Line 118: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Yritä pitää rivit lyhyempinä kuin 100 merkkiä lisäämällä rivinvaihtoja tarvittaessa. | |
− | + | ||
− | == Qt | + | == Qt includes-lauseet == |
− | * | + | * Jos lisäät #includes-rivin Qt-luokkiin, käytä sekä moduulinimeä että luokkanimeä. Tämä sallii sovellusten käyttää kirjastokoodia ilman liiallisia kääntäjän include-polkuja. |
− | + | Esimerkki: | |
<syntaxhighlight lang="cpp-qt"> | <syntaxhighlight lang="cpp-qt"> | ||
− | // | + | / / Väärin |
#include <QString> | #include <QString> | ||
− | // | + | / / Oikein |
#include <QtCore/QString> | #include <QtCore/QString> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == Artistic | + | == Artistic-tyylinen (astyle) automaattinen koodimuotoilu == |
− | + | Voit käyttää [http://astyle.sourceforge.net/ astyle] (>=1.23) koodin muotoiluun tai sen testaamiseen, että olet noudattanut tätä dokumenttia. Suorita seuraava komento: | |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
astyle --indent=spaces=4 --brackets=linux \ | astyle --indent=spaces=4 --brackets=linux \ | ||
− | --indent-labels --pad | + | --indent-labels --pad=oper --unpad=paren \ |
--one-line=keep-statements --convert-tabs \ | --one-line=keep-statements --convert-tabs \ | ||
--indent-preprocessor \ | --indent-preprocessor \ | ||
− | `find -type f -name '*.cpp' | + | `find -type f -name '*.cpp'-or -name '*.cc' -or -name '*.h'` |
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Käyttäessäsi astyle (>=2.01) -muotoilua sinun on suoritettava seuraava komento: | |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
astyle --indent=spaces=4 --brackets=linux \ | astyle --indent=spaces=4 --brackets=linux \ | ||
− | --indent-labels --pad-oper --unpad-paren \ | + | --indent-labels --pad-oper --unpad-paren --pad-header \ |
--keep-one-line-statements --convert-tabs \ | --keep-one-line-statements --convert-tabs \ | ||
--indent-preprocessor \ | --indent-preprocessor \ | ||
− | `find -type f -name '*.cpp' | + | `find -type f -name '*.cpp' -or -name '*.cc' -or -name '*.h'` |
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Liittyvä kuoriskripti voidaan löytää unixille kohteessa [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/astyle-kdelibs kdesdk/scripts/astyle-kdelibs] ja windows-käyttöjärjestelmälle kohteessa [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/astyle-kdelibs.bat kdesdk/scripts/astyle-kdelibs.bat]. | |
− | == Emacs | + | == Emacs- ja Vim-skriptit == |
− | + | Hakemisto "scripts" kdesdk-moduulissa sisältää muiden hyödyllisten asioiden lisäksi joitakin hyödyllisiä lisäyksiä Emacs- ja Vim-tekstieditoreille, jotka tekevät KDE-koodin muokkaamisen niillä helpommaksi. | |
=== Emacs === | === Emacs === | ||
− | + | Hakemisto [http://websvn.kde.org/trunk/KDE/kdesdk/scripts/kde-emacs kde-emacs] sisältää näppäinsidosjoukon, makrot ja yleistä hyödyllistä koodia. Se on sekä GNU Emacs- että XEmacs-yhteensopiva. | |
− | + | Kde-emacs -käytön aloittamiseksi lisää seuraava .emacs-tiedostoosi: | |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
Line 164: | Line 166: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Monia asetuksia voidaan muuttaa muokkaamalla "kde-emacs"-ryhmää <tt>M-x customize-group</tt> -kautta. | |
− | + | Tarkista lisätietoja varten, mukaanlukien mitä ovat näppäinsidokset ja mitä lisäasetuksia voisit lisätä .emacs-tiedostoosi, itse tiedosto <tt>kde-emacs.el</tt>. | |
=== Vim === | === Vim === | ||
− | + | Voit löytää kohteesta [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/kde-devel-vim.vim kdesdk/scripts/kde-devel-vim.vim] vim-skriptin, mikä auttaa sinua pitämään koodaustyylin oikeana. Sen lisäksi, että oletuksena käytetään kdelibs-koodaustyyliä, se automaattisesti käyttää oikeaa tyyliä Solid- ja kdepim-koodille. Jos haluat lisätä sääntöjä muille hankkeille, lisää ne vapaasti SetCodingStyle-funktioon. | |
− | + | Skriptin käyttämiseksi sisällytä se {{path|~/.vimrc}}-tiedostoosi kuten tämä: | |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim | source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim | ||
Line 177: | Line 179: | ||
− | + | Urs Wolfer aloitti dokumentin. Joitakin tämän dokumentin osia on otettu Zack Rusinin lähettämästä Qt-koodaustyylidokumentista kohteesta kde-core-devel. | |
[[Category:Policies]] [[Category:C++]] | [[Category:Policies]] [[Category:C++]] |
Tämä dokumentti kuvaa kdelibs-koodin suositellun koodaustyylin. Kukaan ei pakota käyttämään tätä tyyliä, mutta on suositeltavaa käyttää muodoltaan yhtenäisiä lähdekooditiedostoja.
Lyhyesti: Kdelibs-koodaustyyli noudattaa Qt 4 -koodaustyyliä.
Esimerkki:
/ / Väärin
KProgressBar *prbar;
QString prtxt, errstr;
/ / Oikein
KProgressBar *downloadProgressBar;
QString progressText;
QString errorString;
Esimerkki:
/ / Väärin
QString* myString;
if(true){
}
/ / Oikein
QString *myString;
if (true) {
}
Perussääntönä vasen aaltosulje tulee samalle riville kuin lauseen alku.
Esimerkki:
/ / Väärin
if (true)
{
}
/ / Oikein
if (true) {
}
Poikkeus: Funktiototeutuksissa, luokka-, struct-rakenne- ja nimiavaruusesittelyissä on aina avaava aaltosulje aloitusrivillä.
Esimerkki:
void debug(int i)
{
qDebug("foo: %i", i);
}
class Debug
{
};
Käytä aaltosulkeita jopa silloin kun ehdollisen lauseen runko sisältää vain yhden rivin.
Esimerkki:
/ / Väärin
if (true)
return true;
for (int i = 0; i < 10; ++i)
qDebug("%i", i);
/ / Oikein
if (true) {
return true;
}
for (int i = 0; i < 10; ++i) {
qDebug("%i", i);
}
Case-nimiöt ovat samassa sarakkeessa kuin switch-lause
Esimerkki:
switch (myEnum) {
case Value1:
doSomething();
break;
case Value2:
doSomethingElse();
// fall through
default:
defaultHandling();
break;
}
Yritä pitää rivit lyhyempinä kuin 100 merkkiä lisäämällä rivinvaihtoja tarvittaessa.
Esimerkki:
/ / Väärin
#include <QString>
/ / Oikein
#include <QtCore/QString>
Voit käyttää astyle (>=1.23) koodin muotoiluun tai sen testaamiseen, että olet noudattanut tätä dokumenttia. Suorita seuraava komento:
astyle --indent=spaces=4 --brackets=linux \
--indent-labels --pad=oper --unpad=paren \
--one-line=keep-statements --convert-tabs \
--indent-preprocessor \
`find -type f -name '*.cpp'-or -name '*.cc' -or -name '*.h'`
Käyttäessäsi astyle (>=2.01) -muotoilua sinun on suoritettava seuraava komento:
astyle --indent=spaces=4 --brackets=linux \
--indent-labels --pad-oper --unpad-paren --pad-header \
--keep-one-line-statements --convert-tabs \
--indent-preprocessor \
`find -type f -name '*.cpp' -or -name '*.cc' -or -name '*.h'`
Liittyvä kuoriskripti voidaan löytää unixille kohteessa kdesdk/scripts/astyle-kdelibs ja windows-käyttöjärjestelmälle kohteessa kdesdk/scripts/astyle-kdelibs.bat.
Hakemisto "scripts" kdesdk-moduulissa sisältää muiden hyödyllisten asioiden lisäksi joitakin hyödyllisiä lisäyksiä Emacs- ja Vim-tekstieditoreille, jotka tekevät KDE-koodin muokkaamisen niillä helpommaksi.
Hakemisto kde-emacs sisältää näppäinsidosjoukon, makrot ja yleistä hyödyllistä koodia. Se on sekä GNU Emacs- että XEmacs-yhteensopiva.
Kde-emacs -käytön aloittamiseksi lisää seuraava .emacs-tiedostoosi:
(add-to-list 'load-path "/path/to/kde-emacs")
(require 'kde-emacs)
Monia asetuksia voidaan muuttaa muokkaamalla "kde-emacs"-ryhmää M-x customize-group -kautta.
Tarkista lisätietoja varten, mukaanlukien mitä ovat näppäinsidokset ja mitä lisäasetuksia voisit lisätä .emacs-tiedostoosi, itse tiedosto kde-emacs.el.
Voit löytää kohteesta kdesdk/scripts/kde-devel-vim.vim vim-skriptin, mikä auttaa sinua pitämään koodaustyylin oikeana. Sen lisäksi, että oletuksena käytetään kdelibs-koodaustyyliä, se automaattisesti käyttää oikeaa tyyliä Solid- ja kdepim-koodille. Jos haluat lisätä sääntöjä muille hankkeille, lisää ne vapaasti SetCodingStyle-funktioon.
Skriptin käyttämiseksi sisällytä se ~/.vimrc-tiedostoosi kuten tämä:
source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim
Urs Wolfer aloitti dokumentin. Joitakin tämän dokumentin osia on otettu Zack Rusinin lähettämästä Qt-koodaustyylidokumentista kohteesta kde-core-devel.