2

これは単なる意見の質問ですが、私は議論を引き出したくありません。オブジェクトをインスタンス化する必要がある場所まで、クラスにすべての作業を行わせることが良い習慣か悪い習慣かについて、専門家からのフィードバックが欲しいだけです。すべてがうまくいけば、クラス内で、アプリケーションにあるものは何でも次のステップを実行します。問題が発生した場合は、クラス内でもエラーを発行する関数を作成します。

私はこれをすべてmagic__constructメソッドで行い、すべてのプロパティはプライベートです(または何かを拡張する必要がある場合は保護されています)...私がしないゲッターとセッターを除いて、ほとんどのメソッドもプライベート/保護されていますすべてがクラス内で行われるため、とにかく多くを使用します。

たとえば、ログインクラスがあり、インスタンス化するときにユーザー名とパスワードのパラメーターを入力するだけで、すべてが__constructで発生します。このクラスを使用して、スクリプトで何もする必要はありません。また...私の登録クラスでも同じです..パラメータをもう一度入力するだけで、クラスがすべてを実行します。スクリプトを使用してクラスを操作する必要はまったくありません。

良い習慣か悪い習慣か?私はプロになりたいし、そのようにコーディングを始めたいのですが、多分私はそれをやっていますか?

4

4 に答える 4

3

おそらく比較的役に立たない議論を引き起こす可能性があるため、これを閉じることに投票しました.

とにかく、コンストラクターには 2 つの大きな理論があります。シングル ステージとマルチ ステージです。あなたはシングルステージをやっています。多くの人がシングルステージを主張しています。しかし、それは悪い習慣だと思います。なんで?

テストが難しくなるからです。テストを書くとき、オブジェクトの個々の機能をテストしたい..しかし、コンストラクターがすべてを行うと、それは不可能になります。

また、後で別の目的でオブジェクトを再利用することも難しくなります。オブジェクトは、コンストラクターでの 1 つの余分なメソッド呼び出しを除いて、必要なすべてのことを実行できます。そのため、少し書き直して、少なくとも 2 か所で呼び出し方を変更する必要があります。

本当の答えは、自分のプロジェクトの範囲内で、自分が最もやりやすいことをすることです。

于 2012-08-03T14:29:32.203 に答える
2

このメソッド__constructは、オブジェクトのみをインスタンス化 (インスタンス化のために値を検証/準備) する必要があり、それ以外は何もしません。それで全部です。クラスがコンストラクターですべての作業を行うのは論理的ではありません。

編集: グッドプラクティス:

Application app = new Application(context); // create application
app.run(); // run it

悪い習慣:

new Application(context) // create & run application
于 2012-08-03T14:31:58.527 に答える
1

[ちょうど私の 2 セント]

正直に言うと、説明した内容に関数を使用することもできます。

クラスを関数/機能のコレクションとして使用しているようです。

これで問題ありません。コードはより構造化されますが、実際には OOP の機能を使用していません。

OOP の真の力は、関数を概念的にバンドルできるという事実だけではありません (これは、概念に関連する関数を保持する適切なインクルード ファイルを使用して行うこともできます)。既存のクラス。

私の意見では、OOP に不快感を感じたとしても、完全に OOP に移行することを強いられる必要はありません。OOP で実行されるすべてのタスクは、手続き型アプローチでも実行できます。そして多くの場合、より平凡なタスクでは、手続き型アプローチの方がプログラミングが速く、オブジェクト指向と同じくらい明確です。

于 2012-08-03T14:31:04.697 に答える
0

この質問は、「整数または浮動小数点を使用する方が良いですか」という行に沿っています。まぁ、状況次第ですね。

機能するものと「標準」とは同じではありません。メソッドが機能し、デバッグと保守が簡単な場合は、使用するのに最適なソリューションです。

于 2012-08-03T14:24:47.193 に答える