« Style Code » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
Aucun résumé des modifications
Ligne 24 : Ligne 24 :
...
...
}
}



int is_valid()
int is_valid()
Ligne 35 : Ligne 36 :




</source>


= Seb F.=

<source lang=cpp>
/** -*- mode: c++ ; c-basic-offset: 3 -*-
* @file ByteInput.h
* @author S.
* @date Nov 2007
*
* @brief Comme son nom l'indique
*
* @copyright // Informations sur la licence, etc.
*
* Puis détails.
*
* Conventions :
*
* - ClasseToto = ClasseToto.h + ClasseToto.cpp
* (Ni plus, ni moins, sauf bien entendu si le .cpp est inutile).
* - Le nom du fichier est exactement le nom de la classe.
* - Identifiants : convention "CamelCase"
* - Tous les identifiants de types utilisateurs commencent par des majuscules.
* - Les constantes (pré-processeurs ou non) et valeurs de types énumérés sont
* en majuscules. Mots séparés par "_".
* - Un "#endif" indique par un commentaire la condition concernée.
* - MAIS : "Avoid using the preprocessor whenever possible. [Stroustrup]"
* (Perso, j'adhère.)
* - Commentaire à la Javadoc (compatible avec Doxygen)
* - Les données membres commencent par un underscore.
* int _depth;
* - Encapsulation (systématique).
* - Un accesseur en lecture a le même nom que la donnée au "_" près.
* Pas de getDepth() mais depth();
* - Une accesseur en écriture aussi. (Pas de "set"qqchose)
* Pas de setDepth(int ) mais depth(int );
* - Les méthodes inline ne sont pas définies dans le corps de la
* définition de classe mais en fin de .h (pas de code au sein
* de la définition de classe).
* - Indentation : variante K&R, cf. indentExample()
* - Dans la mesure du possible, respecter 80 colonnes max.
* (Indenter en fonction.)
* - Ecriture "aérée" : espaces entre les opérateurs et les opérandes, à
* l'intérieur des parenthèses, etc.
* (Plutôt Java que C++, donc sans doute à ne pas adopter.)
*/
#ifndef _BYTEINPUT_H_
#define _BYTEINPUT_H_

#include "ByteInputFD.h"

#if defined(_IS_UNIX_) && defined(_HAS_GZIP_)

template< typename Type >
class ByteInputGZip : public ByteInputFD {

public:
/**
* @param input Tous les paramêtres sont commentés.
*
* @return Ligne
*/
ByteInputGZip( ByteInput & input );

/**
* Le commentaire décrit au présent de l'indicatif ce que fait la fonction
* ou méthode.
*
* @param buff Tous les paramêtres sont commentés.
* @param n Tous les paramêtres sont commentés.
*
* @return ...
*/
bool read( char *buff, size_t n );

inline void indentExample( int & a );

~ByteInputGZip();

inline ByteInput & in();

private:

ByteInputGZip( const ByteInputGZip & other );

protected:

ByteInput & _in;
int _pidReader; /**< PID of the Stream input reader */
int _pidGZip; /**< PID of the GZip process */
};

/*
* Definitions of inline methods
*/

ByteInput & in()
{
return _in;
}

/*
*
*/

void indentExample( int & a )
{
int i;
for ( int i = 0; i < 100; ++i ) {
if ( i % 2 ) {
std::cout << i
<< " est un nombre congru à 1 modulo 2 ";
} else {
std::cout << i
<< " est un nombre pair inférieur à 100 ";
}
}
}

#endif // defined(_IS_UNIX_) && defined(_HAS_GZIP_)

#endif // _BYTEINPUT_H_
</source>
</source>

Version du 6 novembre 2009 à 08:32

Guillaume D. (CGAL like)

<source lang=cpp> /**

  • Nom des classes, type, et paramètres templates avec 1ère lettre majuscule
  • (tout le reste 1ère lettre minuscule)
  • des _ entre les mots
  • variables membres commencent par m
  • variables paramètres commencent par a
  • constantes en majuscules
  • indentation : { et } sur la même colonne que le dessus et à
  • l'intérieur décalage (type ANSI)
    • /

template <Type> class Object_toto { public:

  Object_toto(const Object_toto& atoto)
  {
     ...
     code
     indenté
     ...
  }


  int is_valid()
  {}

private:

  Type mdata;
  static const int MA_CONSTANTE;

}


</source>


Seb F.

<source lang=cpp> /** -*- mode: c++ ; c-basic-offset: 3 -*-

* @file   ByteInput.h
* @author S.
* @date   Nov 2007
* 
* @brief  Comme son nom l'indique
* 
* @copyright  // Informations sur la licence, etc.
*
* Puis détails.
*
* Conventions :
*
*  - ClasseToto = ClasseToto.h + ClasseToto.cpp
*    (Ni plus, ni moins, sauf bien entendu si le .cpp est inutile).
*  - Le nom du fichier est exactement le nom de la classe.
*  - Identifiants : convention "CamelCase"
*  - Tous les identifiants de types utilisateurs commencent par des majuscules.
*  - Les constantes (pré-processeurs ou non) et valeurs de types énumérés sont
*    en majuscules. Mots séparés par "_".
*  - Un "#endif" indique par un commentaire la condition concernée.
*  - MAIS : "Avoid using the preprocessor whenever possible. [Stroustrup]"
*    (Perso, j'adhère.)
*  - Commentaire à la Javadoc (compatible avec Doxygen)
*  - Les données membres commencent par un underscore.
*      int _depth;
*  - Encapsulation (systématique).
*  - Un accesseur en lecture a le même nom que la donnée au "_" près.
*      Pas de getDepth() mais depth();
*  - Une accesseur en écriture aussi. (Pas de "set"qqchose) 
*      Pas de setDepth(int ) mais depth(int ); 
*  - Les méthodes inline ne sont pas définies dans le corps de la 
*    définition de classe mais en fin de .h (pas de code au sein 
*    de la définition de classe).
*  - Indentation : variante K&R, cf. indentExample()
*  - Dans la mesure du possible, respecter 80 colonnes max.
*    (Indenter en fonction.)
*  - Ecriture "aérée" : espaces entre les opérateurs et les opérandes, à 
*    l'intérieur des parenthèses, etc.
*    (Plutôt Java que C++, donc sans doute à ne pas adopter.)
*/
  1. ifndef _BYTEINPUT_H_
  2. define _BYTEINPUT_H_
  1. include "ByteInputFD.h"
  1. if defined(_IS_UNIX_) && defined(_HAS_GZIP_)

template< typename Type > class ByteInputGZip : public ByteInputFD {

public:
  
  /** 
   * @param input Tous les paramêtres sont commentés.
   * 
   * @return Ligne 
   */
  ByteInputGZip( ByteInput & input  );
  /** 
   * Le commentaire décrit au présent de l'indicatif ce que fait la fonction
   * ou méthode.
   * 
   * @param buff  Tous les paramêtres sont commentés.
   * @param n     Tous les paramêtres sont commentés.
   * 
   * @return ...
   */
  bool read( char *buff, size_t n );
  inline void indentExample( int & a );
  ~ByteInputGZip();
  inline ByteInput & in();

private:

  ByteInputGZip( const ByteInputGZip & other  );

protected:

  ByteInput & _in;
  int _pidReader;		/**< PID of the Stream input reader */
  int _pidGZip;		/**< PID of the GZip process */

};

/*

*  Definitions of inline methods
*/

ByteInput & in() {

  return _in;

}

/*

* 
*/

void indentExample( int & a ) {

  int i;
  for ( int i = 0; i < 100; ++i ) {
     if ( i % 2 ) {

std::cout << i << " est un nombre congru à 1 modulo 2 ";

     } else {

std::cout << i << " est un nombre pair inférieur à 100 ";

     }
  }

}

  1. endif // defined(_IS_UNIX_) && defined(_HAS_GZIP_)
  1. endif // _BYTEINPUT_H_

</source>