Conventions de codage pour le projet Opale
Historique des versions |
---|
Version 0.1 | 21 Jan 2003 |
First draft |
Version 0.2 | 13 Avr 2003 |
Second draft |
Conventions de codage Java
Méta-règle : . Si une règle est absente du présent document,
se référer aux conventions de codage Java IPSquad version 1.0. Si cette même règle est absente des conventions d'IPSquad
alors se référer aux conventions de codage de SUN.
Si cette règle est aussi absente de ces dernières conventions
de codage alors faites pour le mieux !!!
Les conventions de codage du projet Opale reposent sur les
conventions de codage (version 1.0) d'IPSquad avec les
amendements ou précisions suivantes :
En-tête: Tout fichier contient nécessairement une
entête dont le contenu est :
/*
* OPALE is a scientific library under LGPL. Its main goal is to
* develop mathematical tools for any scientist.
*
* Copyright (C) 2002 Opale Group
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* You can visit the web site http://opale.tuxfamily.org to obtain more
* information about this program and/or to contact the authors by mail
* developers@opale.tuxfamily.org.
*/
Organisation d'un fichier : Chaque fichier contient, d'abord l'entête de
la licence, puis la directive package, puis les imports
relatif à l'API Java, puis ceux relatifs aux bibliothèques
externes utilisées et enfin ceux du projet.
Constructeur par défaut : .
Les objets Opale ont
toujours un constructeur par défaut sauf cas exceptionnel où
il est alors mis en commentaires
Clonage de classes :
Tout objet Java qui hérite de la classe OpaleObject
implémente l'interface Cloneable. En somme, tout objet doit
redéfinir la méthode clone(). Dans les autres cas il est
fortement recommandé d'implémenter Cloneable sauf cas
exceptionnel comme le design pattern du singleton par
exemple.
Variables et calculs.
Les conventions pour les affectations de variables et
expressions calculatoires sont : Toute affection ou
calcul doit être écrit de manière à faciliter la
compréhension des algorithmes utilisés.
Noms des interfaces.
Le nom d'une interface et donc le fichier, commencent nécessairement par un i majuscule.
Accesseurs. Le comportement des méthodes getXXX, où XXX est un attribut de classe, est de renvoyer une référence sur l'attribut.
Lorsqu'on désire renvoyer une copie de l'attribut, le nom de l'accesseur doit être écrit de la manière suivante: cgetXXX ou getCXXX.
Exceptions et assertions.
Lorsque les paramètres passés à une fonction publique sont sémantiquement incorrects, une fonction publique doit lever une exception. Les fonctions publiques ont la responsabilité de passer des paramètres corrects aux fonctions privées. Les fonctions privées utilisent le mécanisme d'assertion, uniquement activé en mode débugage grâce à la classe opale.tools.Debug, de la classe opale.tools.Assert afin de vérifier la cohérence des paramètres. Les fonctions privées ne lèvent pas d'exception.