Conseil nommage méthodes

Bonjour !


 


J'ai fait une petite classe qui permet de gérer les messages envoyés aux objets. Elle permet de n'envoyer que 1 message à  un objet, sur une période de n secondes, en prenant soit le premier arrivé soit le dernier arrivé.


 


Je pensais en faire un pod, mais je ne suis pas très content avec le nom de mes méthodes. Est-ce que certains d'entre vous auraient des idées de meilleur nom ?


 


Je crois qu'en anglais, on parle de debouncing dans un des cas d'utilisation (cf. par exemple LVDebounce)


 


Merci !



/**
This method fires the selector unless it is blocked.
*/
+ (void)fireTarget:(id)target
selector:(SEL)aSelector
blockFiresDuring:(NSTimeInterval)seconds;



/**
This method fires the selector after the given time interval
and block any call that would be done during this interval.

The selector can have arguments.

The blocking does not depend on the argument: if the same `(target, aSelector)`
is called with different arguments, the blocking will still happen.

To prevent this, you can condition the blocking to the equality of the `blockingFlag`.
That means that same `(target, aSelector)` will be blocked if they are
called with the same blockingFlag.

*----*

So, this debouncing with arguments.
*/
+ (void)waitAndBlockThenFireTarget:(id)target
selector:(SEL)aSelector
arguments:(NSArray *)arguments
delay:(NSTimeInterval)delayInSeconds
withBlockingFlag:(NSString *)blockingFlag;






/**
This method removes the previous action that was forecast by a new one.
The comparison of the actions is made only depending on `target` and `aSelector`.
During the delay given, the next calls to this method will again remove the previous calls.

If `resetingTheDelay` is set to YES, the `delayInSeconds` will be started again.

If not, the previous delay will be used.
*/
+ (void)fireAndCancelPreviousCallsWithTarget:(id)target
selector:(SEL)aSelector
arguments:(NSArray *)arguments
withDelay:(NSTimeInterval)delayInSeconds
resetTheDelay:(BOOL)resetingTheDelay;


Réponses

  • PyrohPyroh Membre

    Ah l'Obj-C et ses fonctions aussi longues qu'une rédaction de 3eme... Un ingénieur Apple a ironisé pendant une session WWDC (2015 pour les archéologues) en disant que tant que le nom de fonction rentrait dans un slide keynote c'était pas trop long. Il présentait une fonction qui tenait sur 2 lignes ½.


     


    Quoi qu'il en soit je te propose ce naming là  :



    + (void) fire: (SEL)selector
    onTarget: (id)target
    blockDuring: (NSTimeInterval)seconds;

    + (void)scheduleFire: (SEL)selector
    onTarget: (id)target
    withArguments: (NSArray *)arguments
    delay: (NSTimeInterval)
    identifier: (NSString *)identifier;

    + (void)forceFire: (SEL)selector
    onTarget: (id)target
    withArguments: (NSArray *)arguments
    delay: (NSTimeInterval)
    resetDelay: (BOOL)resetDelay;
  • colas_colas_ Membre
    Merci pour ses bonnes suggestions.


    Pour distinguer les méthodes 2 et 3 peut être je vais utilisé un truc rappelant FIFO et LIFO (méthode de de remplissage d'une queue).
  • Tu as oublié la méthode FINO (First In, Never Out) certains l'appellent la méthode "Poubelle".


  • colas_colas_ Membre

    @Pyroh


     


    J'ai un peu tenu compte de tes propositions.


    Pour moi, la longueur de la méthode n'est pas très grave mais j'aimerais que ce qu'elle fait soit clair, explicite.



    + (void)ifNotBlockedFireNow: (SEL)selector
    onTarget: (id)target
    blockingDelay: (NSTimeInterval)blockingDelay;


    + (void)ifNotBlockedFireAfterDelay:(SEL)selector
    onTarget:(id)target
    arguments:(NSArray *)arguments
    blockingDelay:(NSTimeInterval)blockingDelay
    identifierForBlocking:(NSString *)blockingFlag;

    + (void)cancelPreviousCallsAndFireAfterDelay:(SEL)selector
    onTarget:(id)target
    arguments:(NSArray *)arguments
    withDelay:(NSTimeInterval)delayInSeconds
    resetTheDelay:(BOOL)resetTheDelay;

    Merci de tes idées !


  • PyrohPyroh Membre

    Y'a pas de quoi ! Elles sont bien comme ça.


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