Comment créer et gérer une classe utilitaire ?

Bonjour,



J'ai créer une classe que l'on pourrait qualifier d'utilitaire étant donné qu'elle contient plusieurs méthodes que j'appelle un peu partout dans mon code pour calculer des dates.

J'ai par exemple une méthode qui me calcule la dernière date d'un mois donné par l'intermédiaire d'une autre date :



+ (NSDate)lastDateOfMonthFromDate:(NSDate *date);



Cette classe nommée DateComputations n'a pas d'initialiseur (pas d'appel à  init). J'appelle cette méthode très régulièrement par ce moyen :



NSDate *lastDate = [DateComputations lastDateOfMonthFromDate:...];



Je me demande si c'est tout bonnement une bonne façon de faire, en terme de design et éventuellement de performance.



Des avis ?



Merci d'avance.
Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    Utilise plutôt les catégories pour faire ça, c'est bien plus pratique et limite fait pour ça, l'idée d'une catégorie étant de permettre de rajouter des méthodes à  toi à  des classes existantes, genre rajouter une méthode à  la classe NSDate (pour faire comme si Apple avait déjà  prévu cette méthode).


    @interface NSDate(Utilitaires)<br />
    -(NSDate*)lastDateOfMonth;<br />
    @end<br />
    <br />
    @implementation NSDate(Utilitaires)<br />
    -(NSDate*)lastDateOfMonth {<br />
      // ... ton code ...<br />
    }<br />
    @end<br />
    <br />
    NSDate* d = [uneDate lastDateOfMonth];<br />
    




    La doc Apple sur les Catégories
  • 'AliGator' a écrit:


    Utilise plutôt les catégories pour faire ça, c'est bien plus pratique et limite fait pour ça, l'idée d'une catégorie étant de permettre de rajouter des méthodes à  toi à  des classes existantes, genre rajouter une méthode à  la classe NSDate (pour faire comme si Apple avait déjà  prévu cette méthode).


    @interface NSDate(Utilitaires)<br />
    -(NSDate*)lastDateOfMonth;<br />
    @end<br />
    <br />
    @implementation NSDate(Utilitaires)<br />
    -(NSDate*)lastDateOfMonth {<br />
      // ... ton code ...<br />
    }<br />
    @end<br />
    <br />
    NSDate* d = [uneDate lastDateOfMonth];<br />
    




    La doc Apple sur les Catégories




    Merci pour ta réponse. J'avais effectivement pensé aux catégories. Mais j'ai écarté (peut-être un peu vite) cette solution étant donné que le calcul de date est plus lié à  NSCalendar mais aussi à  NSDateComponents... Peut-être dois-je voir ça avec NSCalendar. Non ?
  • Tu peux aussi créer de "simple" fonctions sans forcément passé par une classe du genre NSStringFromClass, NSLog, etc. Par contre, je rejoins le commentaire d'Ali en ce qui concerne les fonctions fournissant une valeur ajoutée pour une classe donnée.
  • N'hésite pas à  faire des catégories pour ce genre de méthode. Surtout sur NSDate.

    La gestion des dates en Cocoa est certes puissante, mais tu dois facilement passer par 3 à  5 classes différentes chaque fois que tu veux faire un truc pas forcément compliqué.



    Donc rajouter des méthodes via des catégories c'est le top, et c'est fait pour ça.
  • Merci pour vos suggestions. Je vais utiliser les categories et voir ce que cela donne.
Connectez-vous ou Inscrivez-vous pour répondre.