Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 898
    Points : 44 200
    Points
    44 200

    Par défaut [ARTICLE] Documentation du code Transact SQL

    Bonjour à tous et bonne année !

    Voici un des nombreux articles que je viens de publier sur mon site corporate (http://mssqlserver.fr/) et je voudrais vos commentaires :
    http://mssqlserver.fr/?p=258
    Il s'agit de la façon de documenter le code Transact SQL à l'aide de cartouches, mais aussi pour la correction du code.

    Si vous avez des remarques à faire elles sont les bienvennues.

    Merci
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  2. #2
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2003
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2003
    Messages : 581
    Points : 565
    Points
    565

    Par défaut

    Bonjour,

    Quelques remarques :
    - J'aime beaucoup la partie INPUTS qui définit les paramètres. Je commente en général directement dans le code, au niveau des paramètres, et l'avoir séparé dans le cartouche est une bonne idée
    - Ne faudrait-il pas aussi définir dans le cartouche l'éventuel domaine de l'input s'il est plus restreint que le type de manière à ne pas avoir besoin de lire le code pour connaître les préconditions ?
    - Une bonne partie de ce qui est présent dans ces cartouches n'est-elle pas redondante avec l'utilisation d'un contrôle de source ? Et avec un gestionnaire de bug lié au contrôle de source ? Dans ce cas, on peut alléger le cartouche.

  3. #3
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 898
    Points : 44 200
    Points
    44 200

    Par défaut

    Citation Envoyé par Monstros Velu Voir le message
    Bonjour,

    Quelques remarques :
    - J'aime beaucoup la partie INPUTS qui définit les paramètres. Je commente en général directement dans le code, au niveau des paramètres, et l'avoir séparé dans le cartouche est une bonne idée
    - Ne faudrait-il pas aussi définir dans le cartouche l'éventuel domaine de l'input s'il est plus restreint que le type de manière à ne pas avoir besoin de lire le code pour connaître les préconditions ?
    - Une bonne partie de ce qui est présent dans ces cartouches n'est-elle pas redondante avec l'utilisation d'un contrôle de source ? Et avec un gestionnaire de bug lié au contrôle de source ? Dans ce cas, on peut alléger le cartouche.
    L'idée est de pouvoir lire et parser le cartouche par un outil adapté.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 3 495
    Points : 5 782
    Points
    5 782
    Billets dans le blog
    1

    Par défaut

    Comme Monstros Velu, la partie "correction du code" me semble très (trop ?) redondante avec un gestionnaire de source.

    L'outils dont tu parles qui doit être capable de parser les cartouches pourrait aussi bien interroger le log d'un git par exemple afin de récupérer les modifications de code et leurs commentaires.

    En effet, dans une version 1, 2, 3, tout va bien.
    Mais après quelques années de bons et loyaux services, et 4 refontes complètes de l'algo, tu vas avoir 2000 lignes de commentaires (donc 1900 lignes de code commenté) pour au final 15 lignes de code exécuté.

    Pour le cartouche, ça me plaît bien.
    Personnellement, je serais parti sur une syntaxe existante, comme celle de .NET, à base de XML

    Il suffit simplement de remplacer les /// par --- :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    --- <summary>
    --- Substracts two integers and returns the result.
    --- </summary>
    --- <returns>
    --- The difference of two integers.
    --- </returns>
    --- <remarks>
    --- The result is absolute
    --- </remarks>
    --- <example>
    --- <code>
    --- set @c = dbo.substract(4, 5);
    --- print @c; -- Displays "1"
    --- </code>
    --- </example>
    --- <param name="a">An integer number.</param>
    --- <param name="b">An integer number.</param>
    create or alter function SubStract
    (
        @a   integer,
        @b   integer
    )
    returns integer
    begin
       return abs(@a - @b);
    end
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 898
    Points : 44 200
    Points
    44 200

    Par défaut

    Le principe dans les grands projets est que quand il y a n modif on passe à une nouvelle release. Ce pourquoi il existe la notion de version.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    août 2005
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : août 2005
    Messages : 5 189
    Points : 12 053
    Points
    12 053

    Par défaut

    Citation Envoyé par SQLpro Voir le message
    L'idée est de pouvoir lire et parser le cartouche par un outil adapté.

    A +
    Chez le client chez qui je travaille actuellement on utilise le versioning de TFS et le cartouche que tu décris (à peu de choses prêt). L'information est redondante parce qu'au départ il n'y avait pas d'outil de versioning mais avec la pratique je me suis aperçu que l'équipe de dev SQL en place (incluant moi) utilisait volontiers l'historique du cartouche dans les procédures avant de passer par TFS (plus rapide ? L'habitude?)

    Sur le principe je suis d'accord, c'est redondant et on peut alléger. La plupart des outils de versioning proposent d'ailleurs de récupérer l'historique en cas de migration.

    ++

  7. #7
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 898
    Points : 44 200
    Points
    44 200

    Par défaut

    C'est surtout pour fournir un template à tous ceux de mes clients qui développent sans outil de versionnement !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  8. #8
    Membre éprouvé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    septembre 2016
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 543
    Points : 1 010
    Points
    1 010

    Par défaut

    2 remarques :
    1- Ajouter le relecteur du code
    2- gestion du code mort

    1- Relecture du code
    J'essaie de faire comprendre que l'auteur est le plus mauvais relecteur de son propre code.
    Quelque soit sa compétence.
    Du coup inscrire le relecteur est un acte responsabilisant. (qui retarde la mise en prod, comme les tests )

    2- gestion du code mort
    La conservation du code mort pose effectivement le problème de la durée de conservation et du volume.
    Je fais comme tout le monde, je développe suivant un cahier des charges précis que je peux consulter dans la gestion de projet afférente... ou presque
    Quand le code a été modifié par différentes personnes, pour différentes parties, pour différents objectifs l'imbrication de tout ça fini par rendre la lecture du code mort insupportable.

    Petit exemple d'un cycle de modification :
    Acte 1 : La procédure utilise plusieurs curseurs et du sql dynamique
    Acte 2 : Certains curseurs sont fusionnés en 1
    Acte 3 : Ajout de Print
    Acte 4 : Abandon des curseurs pour des boucles unitaires (select i=count(*) from ... puis boucle)
    Acte 5 : Remplacement des Print par des raiserror (pour suivre l'avancée en temps réel)
    Acte 6 : Remplacement de l'ensemble par une instruction merge avec CTE et fonctions analytiques
    Avec un peut d'imagination (ou d'expérience) selon le niveau de compétence de chacun des rédacteurs et son style d'écriture on imagine vite l'aspect polymorphe (donc difficilement appréhendable) de la lecture du code.

    Ce qui me gène le plus dans la proposition ce sont les balises début et fin de modification.
    C'est pas toujours aussi "chirurgical" que dans l'exemple fourni.
    Et ça c'est sans compter avec l'ajout/suppression des hints et autres fadaises.
    Le savoir est une nourriture qui exige des efforts.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/09/2007, 22h19
  2. [JDBC][Access] Transaction SQL sur MS Access?
    Par Twofy dans le forum JDBC
    Réponses: 2
    Dernier message: 19/08/2004, 14h46
  3. Transact Sql : Conversion de variable
    Par lord_paco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/08/2003, 13h25
  4. Conversion de SQL à Transact-SQL
    Par sebioni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/07/2003, 11h59
  5. - fonction Transact-SQL...
    Par korrigann dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/05/2003, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo