/ / Konwencja nazewnictwa metod ObjC w tym przypadku? - iphone, cel-c, ios, metody, konwencje nazewnictwa

Konwencja nazewnictwa metod ObjC w tym przypadku? - iphone, cel-c, ios, metody, konwencje nazewnictwa

Mam klasę, która reprezentuje egzamin, może rozpocząć / zresetować / wstrzymać egzamin, więc metody wyglądają następująco:

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

Ale o ile wiem, jeśli nazwa metody kończy się jakimś rzeczownikiem, powinna mieć argument dla tego rzeczownika, coś takiego jak:

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

Ale w tym przypadku klasa nosi nazwę „Exam”, więc kiedy ta klasa jest używana, ludzie wiedzieliby, że obiekt jest egzaminem, więc wydaje się, że lepszym sposobem nazwania jest:

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

więc mogę użyć jako:

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

który wygląda lepiej niż:

[exam startExam];

lub

[exam examStart];

Ale to wygląda ZBYT ogólnikowo i czuję się ryzykownieponieważ NSObject (lub jakakolwiek superklasa) może mieć metody o tej samej nazwie dodane w przyszłości, na przykład obiekt Java Object ma notification, notifyAll, wait, a subclass nie powinna nadpisywać ich do innych celów. Czy jest to również prawdą w przypadku celu C?

Jaka jest więc najlepsza konwencja nazewnictwa w tym przypadku?

Dzięki!

Odpowiedzi:

1 dla odpowiedzi № 1

start / pauza / reset należą do klasy Exam. Więc chciałbym:

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

Kiedy używam obiektu klasy Exam Po prostu przeczytałem to w swojej głowie:

[myExam start];

Dla mnie ma więcej sensu niż to:

[myExam startExam];

Jeśli chodzi o ten, który ma parametr wejściowy:

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

PS: Ale widziałem, jak robię to, co sugerował Dirk.


1 dla odpowiedzi nr 2

W celu C nikt nie spodziewałby się metody startExam podjąć jakąkolwiek argumentację. To byłaby metoda startExam: (zwróć uwagę na końcowy dwukropek). Są to różne metody, możesz nawet mieć obie w tej samej klasie. Więc poszedłbym na startExam.


0 dla odpowiedzi № 3

Ale to wygląda ZBYT ogólnikowo,

Nie dla mnie to nie "t. Słowo" egzamin "w twoich metodach jest zbędne, biorąc pod uwagę modele obiektowe egzamin. Jeśli widzisz kod

[myExam start];

co jeszcze zaczyna się poza egzaminem?