Nom des constantes locales en Objective-C

Bonjour ! (ou re ;-)


 


Quand dans une classe (dans le .m) je crée une constante



CGFloat const myConst = 5 ;

et que cette constante n'est pas exposée dans le .h, est-ce qu'il vaut mieux que je lui ajoute un préfixe (mon trigramme, plus éventuellement quelques lettre liées à  la classe) ? 


 


C'est assez dangereux car dans des classes graphiques, on peut imaginer qu'il va y avoir pas mal de constantes width, etc.


 


J'ai l'impression que c'est le cas et c'est chiant :/ (pour ça, swift est bien !)


 


Quelles sont vos pratiques ?


 


Merci


 


Réponses

  • samirsamir Membre

    La convention des constantes ( conventions Apple) suit celle des nom de fonctions :


     


    1. ça commende par le même préfixe que les classes.


    2. La première lettre après le prefix est en majuscule.


     


    https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.pdf

  • AliGatorAliGator Membre, Modérateur
    juin 2014 modifié #3
    Recherche dans les forums, j'en ai déjà  parlé maintes fois.

    En résumé :

    1) Pour les constantes publiques (visibles par d'autres classes) :
    - déclarées dans le .h avec le mot clé "extern" (extern NSString* const MyClassBlablaKey)
    - définies dans le .m (NSString* const MyClassBlablaKey = @Youhou)
    - préfixées avec le nom de la classe à  laquelle ils sont liés (MyClassXXX)
    ---> en bref, comme le fait Apple (exemple "UIApplicationDidFinishLaunchingNotification", etc), et comme c'est expliqué dans les Coding Guidelines Apple


    2) Pour les constantes privées (connues que du fichier .m)
    - déclarées et définies dans le .m(rien dans le .h)
    - utilisation du mot clé "static" (static NSString* const kMyClass = @Youhou)
    - pas besoin de les préfixer avec un nom de classe, grâce au "static" justement. Mais par convention et pour la lisibilité, préfixer le nom de "k" par exemple (kMyConstant), ou alors mettre des noms tout en majuscules (MY_CONSTANT) pour clairement indiquer que c'est une constante

    Pour plus de détails, voir mes autres messages ;)
  • C'est le static qui me manquait !!


  • Du coup est-ce que ça marche aussi pour les enum ?


     


    Merci !


  • AliGatorAliGator Membre, Modérateur
    Même principe.
Connectez-vous ou Inscrivez-vous pour répondre.