3

テーブルビューで同様のジャンルのオーディオ トラックを表示する最初の iPhone アプリを作成しました。ユーザーは、mp3 をストリーミングする iPod のようなコントロールを使用して、オーディオ トラックを再生できます。

私のコードはすべて、RootViewControllerCustomCell.

RootViewControllerClassは大規模です。ほとんどすべてのコードを 1 つのクラスに詰め込むのは設計が悪いと思いますか?

最初は、View Controller が 1 つしかないので、これは理にかなっていると思いました。RootViewControllerより良いコーディング規則を実践するために、クラスをより小さな特定のクラスに分割したいと思います (これが正しい実践であると仮定しますか?)。

RootViewController個々のクラスに分離する予定のコンポーネントは次のとおりです。

  • DataSource- サーバーからデータをプルします。tableView のデータを変更および整理します
  • TopChartsView- ビューにオーディオ トラック (データソース) を変更するためのボタンが含まれています。
  • GenreChange- ジャンル別に dataSource をフィルタリングするためのボタンがビューに含まれています
  • AudioPlayerControls- iPod のコントロールに似たビューにボタンが含まれています

クラスを正しく編成していますか? クラスを機能別に編成するのは理にかなっているようです。ただし、理想的な設計でクラスがどのように相互作用するかを理解するのは困難です。

クラスをリンクするためにプロトコルと委任を使用しますか?

4

2 に答える 2

1

iOS アプリの設計は、主に MVC デザイン パターンに関するものです。つまり、モデル、ビュー、およびコントローラーを分離することになります。あなたの場合、DataSourceロジックを別のファイルまたはファイルに入れます(それはあなたのモデルです)。これにより、後で別のView Controllerで同じロジックを再利用することも容易になります。多くのコードが存在する場合は、UITableView をサブクラス化することもできます。

プロトコルとデリゲートは、クラスを接続する優れた方法であり、優れた設計で非常に頻繁に使用されます。あなたのアプリケーションには多くのビュー コントローラーがないため (私が見る限り)、それらを使用する機会はあまりありません。間違っていたら訂正してください ;)

于 2012-08-13T16:14:44.007 に答える
0

これは、特に iOS よりもオブジェクト指向プログラミングに関するものであり、OO-Design のいくつかの概念に慣れておく必要があると思います (本当に興味がある場合) が、私の観点からは、そうする必要はありません。最初に質問に答えるには:

ほとんどすべてのコードを 1 つのクラスに詰め込むのは設計が悪いと思いますか?

そう言う人も…

クラスを正しく編成していますか?

あなたが提供した情報では、わかりにくいです。

クラスをリンクするためにプロトコルと委任を使用しますか?

必ずしも。

しかし: コードが正常に動作する場合、そのコードに取り組むのはあなただけであり、コードをライブラリとして再利用したり、そこから完全なクラスを取得したりする予定はありません (つまり、コピー & ペーストのみを計画している場合) )、それを行うためだけにすべてをリファクタリングする必要はありません。

とはいえ、先に進みたい場合、またはライブラリなどを作成する予定がある場合は、オブジェクト指向について学ぶことをお勧めします (時には面白いこともあります)。Objective-C を使用しているため、 Apple のドキュメントからのこのドキュメントは、学習の良い出発点になる可能性があります。

そして: OO プログラミングについて少し読んで (さらに重要なことに) 時間をかけて他の人のコードを読むと、独自のコードを整理することがいつ、どのように役立つかがわかります。

于 2012-08-13T16:52:38.393 に答える