?
| Nos forums | NwN2.fr | Lyncya | Notre channel IRC |
La Bibliothéque de Neverwinter Nights
La Bibliothéque de Neverwinter Nights
 
 
 
 
 
Bienvenue, connectez vous ou créez votre compte. Changer d'interface
 
Se connecter:
Login:

Password:


 
Neverwinter Nights 2
  Compendium NWN/NWN2
Classe, Warlock
Classes de Base
Classes de Prestige
Forum Joueur NWN2
Forum Concepteur NWN2
Bestiaire (Créatures)
Races
Tests
 - Collector Chaotique Mauvais (bbnwn, 4 nov 2006)
 - Mask of the Betrayer
 - Storm of Zehir
 - Mysteries of Westgate
Mondes
 - Les Artisans du Mitan
 - Les Légendes de Luiren
 - LanceDragon
 - La Bataille pour Cormanthor
 - Man O'War
 - Sendarie Nouvel Âge
Preview
 - 29 Mars 2006 (BBNWN)
 - 2 mai 2006 (Gamespot)
 - 17 Mai 2006 (WarCry)
 - 19 Mai 2006 (NWVault)
 - Designer Diary #1 (Gamespot, 1er Juin 2006)
Interview
 - Dorian Richard (20/02/2006)
 - Ferret Baudoin (22/02/2006)
 - Feargus Urquhart (2 mai 2006)
 - La Lettre Ouverte de Papermonk
 - Chris Avellone (Total Video Games)
Logs IRC
 - Warcry (27/01/2006)
 - NWVault / NWC (3 Juin 2006)
 - NWN2News.net (30 Juin 2006)
Faciliter la diffusion et l'installation de vos créations

 
Communauté
  Forums
Channel #nwnights-fr
Guide IRC
Liens
CEP

 
Fichier
  Tileset
Module
Hakpak
Objets
Portraits
Créatures
Scripts
Tutoriaux
Autres
Wallpapers

 
Editeur
  Tutorial Editeur
Cinématiques
Musiques
Textures
Tutoriaux NWScripts
Scripts

 
Le jeu
  Solution
Sorts
Classes
Dons (feat)
Aptitudes (skill)
Bestiaire
Règles 3e Edition
Jouer en multiplayer

 
Hordes of the Underdark
  Informations Générales
Solution [forum]

 
Shadows of Undrentide
  Preview
Informations générales
Classes de Prestige
'Lisez Moi.txt' de la Démo
FAQ
Nouveaux tilesets
Solution [forum]

 
Divers
  Traductions Logs Irc
Guides divers

 
Présentation
  Généralités
Configuration minimale
Serveur Dédié
Traduction FAQ
Historique (nwn et bioware)
Contrats de Bioware (vf)

 
Site
  Copyrights
Webmasters

 
     
 
Dîtes non aux inutiles protections contre la copie dans les jeux (SecuROM, StarForce, etc) !!
HADOPI - Le Net en France : black-out

8. La « norme »


Tout comme il existe une norme dans le langage humain, par exemple : ne pas mettre d'abréviations dans une lettre de motivation, il en existe aussi avec les langages de programmation.

Cette norme n'est pas forcément à suivre, mais si vous vous en servez, il se peut qu'elle vous facilite la vie, ou encore qu'elle facilite la vie de ceux qui passent après vous.

Cette norme a pour but de fixer quelques règles de codage :


Les variables locales :

Nous avons vu que nous pouvions avoir des variables de divers types, cependant lorsque le code de la fonction est long, on ne sait plus trop qui contient quoi. C'est pour cela que vous devrez préfixer vos noms de variables d'une lettre (ou plus) en minuscule (en général) indiquant le type de la variable.

Type Préfixe(s) Exemple
action a aTuer
effect e eLigtd
event ev evOnClose
float (nombre décimal) f fSecond
int (entier) i iNombre
int (utilisé comme des booléens (true, false)) b bTrue
location l lAller
object o oTemple
string s sPlayerName
struct str strFX
talent t tSkillLock
vector v vVitesse

A savoir aussi pour les noms de variables locales : il est d'usage d'utiliser une suite de majuscules/minuscules pour les nommer par exemple :

sPlayerName

Ce qui représente le nom du joueur.


Les variables globales :

Neverwinter Nights ne nous permet pas de déclarer de vraies constantes, et nous devons utiliser les variables globales comme des constantes. Nous utiliserons aussi les règles usuelles pour les noms de constantes :

Nous utiliserons donc les majuscules et le « _ ».

Par exemple :

int VOLEUR_SKILL = 0;

Indentation :

Votre code doit être indenté pour bien montrer jusqu'où vont les différents blocs. Si on considère ceci :

void main()
{
if ( condition )
{
instruction;
}
else if ( condition )
{
instruction;
}
}

On y perd beaucoup en lisibilité. Imaginez un instant qu'il y ait beaucoup de blocs imbriqués... allez ensuite chercher l'erreur qui empêche le script d'être compilé : vous comprendrez que c'est assez dur de la trouver du premier coup. Cependant, en indentant de deux espaces tel que :

void main()
{
  if ( condition )
  {
    instruction;
  }
  else if ( condition )
  {
    instruction;
  }
}

L'indentation révèle plus facilement les erreurs possibles. Pour les mêmes raisons, évitez le code de ce type-ci :

void main() {
  if ( condition ) {
    instruction;
  } else if ( condition ) {
    instruction;
  }
}

Bien sur, il prend moins de place mais il est moins lisible...


Utilisation des booléens :

Bioware n'a pas inclus de « vrais » booléens dans son script (pourtant, un vrai Booléen prend moins de place mémoire qu'un entier). Un booléen est, dans le cas des NWScript, un entier :

int bTrue = TRUE;

Evitez les syntaxes de condition suivante :

bTrue == 1
bTrue != 1
bTrue == 0
bTrue != 0

Et préférez au choix l'utilisation suivante :

bTrue == TRUE // ou bTrue (ex : if ( bTrue ) )
bTrue != TRUE // ou !bTrue
bTrue == FALSE // ou !bTrue
bTrue != FALSE // ou bTrue

Fonctions

Les variables utilisées dans la fonction doivent être déclarée après la déclaration de la fonction (pour plus de lisibilité) par exemple :

void Foo()
{
  // Déclaration des variables
  int i, j, k, l;
  string s1, s2, s3, s4;
  // autres instructions
}

Aussi, évitez de mettre plusieurs instructions return dans vos fonctions : n'hésitez pas à passer par des variables auxiliaires. Au lieu de :

int Foo()
{
  if ( condition )
     return TRUE;
  else
     return FALSE
;
}

Préférez ceci :

int Foo()
{
  int bReturn = FALSE;

  if ( condition )
     bReturn = TRUE;
  else
     bReturn = FALSE;
    // note ce else n'est pas utile dans ce cas
    // bReturn vaut par défaut FALSE )

   return bReturn;
}








Navigation rapide:
 
 
Revenir à la page d'accueil du site Ajouter la Bibliothéque de Neverwinter dans vos favoris Afficher une version imprimable de la page
  NeverList - Liste ...
Lyncya 3 - La Gue ...
Sarmates!
Le dernier des fi ...
Bonne année
Joyeux Noël 2010
The Witcher 2 en ...

Archives
Rechercher
 
 
Le Site



NwN 2 - Support des Modules Solos


Groupes
Archives
 

:: design by ghaxir :: coding by baldurien :: la bibliothèque de neverwinter :: tous droits réservés ::