/ Convention de nommage de la méthode / ObjC dans ce cas? - iphone, objective-c, ios, méthodes, conventions de nommage

Convention de nommage de la méthode ObjC dans ce cas? - iphone, objective-c, ios, méthodes, conventions de nommage

J'ai un cours qui représente un examen, il peut démarrer / réinitialiser / suspendre l'examen, les méthodes ressemblent à:

- (void)startExam;
- (void)resetExam;
- (void)pauseExam;

Mais pour autant que je sache, si le nom de la méthode se termine par un nom, il devrait avoir un argument pour ce nom, quelque chose comme:

- (void)startExam:(Exam *)exam;

Mais dans ce cas, la classe est nommée "Examen". Ainsi, lorsque la classe est utilisée, les gens savent que l'objet est un examen. Il semble donc que le meilleur moyen de nommer est:

@interface Exam : NSObject
- (void)start;
- (void)reset;
- (void)pause;
@end

afin que je puisse utiliser est comme:

Exam *exam = [[[Exam alloc] init] autoreleased];
[exam start];

qui a l'air mieux que:

[exam startExam];

ou

[exam examStart];

Mais cela semble TROP générique, et je me sens risquécomme NSObject (ou une super classe quelconque) peut avoir des méthodes du même nom ajoutées ultérieurement, par exemple, Java Object a notify, notifyAll, wait, et la sous-classe ne doit pas écraser celles-ci à d'autres fins. Est-ce aussi vrai dans l'Objectif C?

Alors, quelle est la meilleure convention de dénomination dans ce cas?

Merci!

Réponses:

1 pour la réponse № 1

start / pause / reset appartient à la classe Exam. Donc j'irais pour:

@interface Exam : NSObject
- (void)start;
- (void)reset;
- (void)pause;
@end

Quand j'utilise un objet de la classe Exam Je viens de le lire dans ma tête:

[myExam start];

Pour moi, c'est plus logique que ça:

[myExam startExam];

Quant à celui qui a un paramètre d'entrée:

- (void)startWith:(Exam *)exam;

PS: Mais je me voyais faire ce que Dirk avait suggéré.


1 pour la réponse № 2

Dans l’objectif C, personne ne s’attend réellement à ce que la méthode startExam prendre un argument que ce soit. Ce serait la méthode startExam: (notez les deux points finaux). Ce sont des méthodes différentes, vous pouvez même avoir les deux sur la même classe. Donc, j'irais pour startExam.


0 pour la réponse № 3

Mais cela semble trop générique,

Pas pour moi, ça ne marche pas. Le mot "examen" est redondant dans vos méthodes, étant donné que l'objet modèle est un examen. Si vous voyez le code

[myExam start];

quoi d'autre part en dehors de l'examen?