0

試験を表すクラスがあり、試験を開始/リセット/一時停止できるため、メソッドは次のようになります。

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

しかし、私が知る限り、メソッド名が名詞で終わる場合、その名詞の引数が必要です。次のようになります。

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

ただし、この場合、クラスの名前は「Exam」であるため、クラスが使用されると、オブジェクトが試験であることが人々にわかるため、次のような命名方法が適しているようです。

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

だから私は次のように使用できます:

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

これは次のものよりも見栄えがします:

[exam startExam];

また

[exam examStart];

しかし、これは一般的すぎるように見えます.NSObject(またはスーパークラス)に将来同じ名前のメソッドが追加される可能性があるため、危険を感じます。たとえば、Javaオブジェクトにはnotify、notifyAll、waitがあり、サブクラスはこれらを上書きしないでくださいその他の目的。これはObjective Cにも当てはまりますか?

では、この場合の最適な命名規則は何ですか?

ありがとう!

4

3 に答える 3

1

startExamObjective C では、メソッドが引数を取ることを実際に期待する人は誰もいません。これはメソッドになりますstartExam:(末尾のコロンに注意してください)。これらは異なるメソッドであり、同じクラスで両方を使用することもできます。だから、私は行きstartExamます。

于 2012-06-14T08:25:40.597 に答える
1

start/pause/reset は class に属しExamます。だから私は行きます:

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

クラスのオブジェクトを使用しているときはExam、頭の中でそれを読んでいます:

[myExam start]; 

私にとっては、これよりも理にかなっています:

[myExam startExam];

入力パラメータを持つものについては:

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

PS:しかし、Dirk が提案したことを実行している自分を見ることができました。

于 2012-06-14T08:29:08.053 に答える
0

しかし、これはあまりにも一般的に見えます、

私には違います。オブジェクトモデルの試験を考えると、メソッドの「試験」という言葉は冗長です。コードが表示された場合

[myExam start];

試験以外に何が始まっていますか?

于 2012-06-14T08:31:45.247 に答える