IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C# Discussion :

Questionnement sur le typage de retour des Methodes


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut Questionnement sur le typage de retour des Methodes
    Bonjour a tous,

    Je suis actuellement entrain de me poser une question existentielle sur une façon de procéder proprement pour répondre au problème suivant :

    J'ai codé une dll utilitaire en C# me facilitant la tache pour tout un tas de chose.
    Celle ci commence à dater et se trouve être utilisée dans la quasi totalité de mes projets depuis 5 ans.
    J'y ais (presque) toujours apporté un soin particulier quand a la conception et à l'étude de l'API afin de ne pas me retrouver avec des problème incompatibilité entre versions de DLL et version des Soft
    L'idée étant de pouvoir utiliser la dernier version de cette DLL quelle que soit cette ayant été utilisée pour la compilation initiale.

    Mais voila, j'y ait presque fait toujours attention, et je me retrouve aujourd'hui avec le problème suivant :

    J'ai une classe Abstraite A possédant une méthode abstraite M1 qui possède le prototype suivant :
    Cette classe est ensuite hérité par des classes spécialisées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    abstract void M1(string p1);
    Et malheur à moi, je ne sais pas pourquoi je n'avais pas prévu et pourtant c’était plus que prévisible que cette méthode doive retourner un Boolean, et ce même si je ne l'ai jamais utilisée jusqu’à aujourd'hui.
    Mais voila, aujourd'hui j'ais besoin de ce retour et mon problème est le suivant :

    Trouver la solution la plus élégante pour que disposer de cette méthode avec retour sans que l'utilisation de cette DLL avec des projets plus ancien ne nécessite de recompilation. Sachant que si je modifie simplement le type de retour la méthode ne sera plus du tout utilisable avec toutes ces anciennes applications.

    Pour l'instant la solution que j’entrevoie naïvement serait de laisser cette méthode dans l'état et d'en créer une nouvelle qui pourrait avoir la tête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    abstract Boolean M1_Avec_Retour(string p1);
    Obligeant ainsi tous les appels avec un retour vers cette méthode.
    ou de re-compiler tous les projets avec la nouvelle DLL plus propres, mais relativement long, sachant que je n'ai pas trop de temps a consacrer à ces anciens projets, mais n'ayant pas envie de laisser des horreur pareils a mes futurs collègues je me demandais donc si vous aviez en tête une solution
    plus clean à mon problème.

    Merci d'avance pour les idées qui pourraient germer de vos esprits moins insalubres que le mien.

    Cordialement
    Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
    "J-C Van dam"

  2. #2
    Membre habitué
    Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 99
    Points : 152
    Points
    152
    Par défaut
    J'aurai aussi rajouter une nouvelle méthode. C'est simple et ça ne t'oblige pas forcement à re-compiler tous tes anciens projets si ceux-ci n'utilise pas cette nouvelle méthode. Niveau compatibilité, tu n'auras ainsi pas à retoucher ton code sur tes anciens projets, chose que tu devras faire en cas de changement de signature de M1.
    Cette réponse vous a aidé ?
    Problème résolu ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Ne pas oublier de signifier aux futurs développeurs (même si c'est toi en théorie) que la vieille version est obsolète.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    using System;
     
    public sealed class App {
       static void Main() {      
          // The line below causes the compiler to issue a warning: 
          // 'App.SomeDeprecatedMethod()' is obsolete: 'Do not call this method.'
          SomeDeprecatedMethod();
       }
     
       // The method below is marked with the ObsoleteAttribute.  
       // Any code that attempts to call this method will get a warning.
       [Obsolete("Do not call this method.")]
       private static void SomeDeprecatedMethod() { }
    }

Discussions similaires

  1. Convention sur les codes de retour des scripts
    Par NewTone dans le forum Linux
    Réponses: 0
    Dernier message: 19/11/2009, 00h54
  2. [PDO] problème sur le format de retour des requete
    Par DeeVoiD dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/01/2009, 13h24
  3. Heritage et type de retour des methodes
    Par belfo dans le forum C++
    Réponses: 20
    Dernier message: 23/12/2006, 23h51
  4. des difficultés sur des methodes
    Par bambi98 dans le forum UML
    Réponses: 4
    Dernier message: 12/12/2006, 09h32
  5. Réponses: 12
    Dernier message: 30/06/2006, 16h46

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