Swift: self ou pas self

colas_colas_ Membre
décembre 2016 modifié dans Objective-C, Swift, C, C++ #1

Hello


 


En Swift, quand on accède à  une property, on a plus besoin de mettre self.


Que faites-vous ? 


Gardez-vous le self, histoire de bien voir immédiatement de quoi il s'agit ?


Ou bien, basta le self, Swift n'est pas Obj-C ? 


 


Qu'en pensez-vous ?


 


Colas


Réponses

  • Je garde le self, c'est pratique pour l'autocomplétion.

  • Je garde aussi le self pas uniquement pour l'autocomplétion.

    Sans self on peut penser utiliser une propriété mais enfin de compte on se souvient plus qu'on l'a défini en tant que variable locale ou qu'on l'a reçu en tant que paramètre. Genre d'erreur qu'on voit pas immédiatement et qui peut nous faire perdre pas mal de temps. Avec le self y a pas d'ambiguà¯té possible, donc plus de risque d'erreur, on sait immédiatement si c'est une property. 


  • Joanna CarterJoanna Carter Membre, Modérateur
    décembre 2016 modifié #4

    +1 pour le garder.


     


    En Swift, c'est souvent le cas que l'on veuille vérifier si un property soit nil ou non ; surtout avec les optionals :




    if let monTruc = self.monTruc
    {
    // ...
    }


    ou :




    guard let monTruc = self.monTruc else
    {
    return
    }

    // travailler avec monTruc


    Du coup, après le test, on joue ave monTruc, qui est le let constant et pas le property


  • Je ne l'utilise que dans les cas où il peut y avoir ambiguà¯té (comme les cas pointés par Joanna). Cela permet d'alléger un peu plus le code.


  • Moi je préfère l'utiliser pour les raisons expliquées ci-dessus même si je le fais de moins en moins souvent notamment parce que les guidelines de mon entreprise indiquent qu'il ne faut pas l'utiliser car inutile. D'ailleurs ça va dans le sens de l'esprit d'Apple avec swift car une demande avait été faite pour que le Self soit rendu obligatoire mais refusé. Donc ça signifie bien qu'il est souhaitable de pas l'utiliser quand on en a pas besoin.


  • Pour ma part j'utilise toujours self dans les init et apreÌ€s au besoin pour empêcher au code d'être ambiguë (dans le sens erreur de compilation du terme).


  • @Magiic J'ai l'impression qu'en Java le mot-clé équivalent, this, n'est pas beaucoup utilisé.


    Peut-être qu'ils ont fait ça pour être plus Java-friendly.


     


    Personnellement, je trouve ça mieux de le garder, ça rend le code plus clair. 


  • Joanna CarterJoanna Carter Membre, Modérateur
    Très important de maà®triser le syntax correct de passer self dans les closures, dont c'est obligatoire de l'utiliser
  • @Colas_ c'est exact ! Après je ne sais pas si c'était pour faire plus Java friendly mais pour certains comme toi et moi ça rend le code plus clair et pour d'autres ça le rend plus lourd. Et puis ça rajoute du code "inutile".


     


    Pour les closures tu as raison @Joanna même si en vrai ils auraient pu ne pas le rendre obligatoire, ça été fait seulement pour rappeler le retain cycle.


Connectez-vous ou Inscrivez-vous pour répondre.