web-dev-qa-db-ja.com

オブジェクトを使用せず、入力で静的メソッドを呼び出すだけでJavaプロジェクトを作成していますか?

文書を取得して抽出し、これをデータベースに移動するプログラムを作成しています。私はこれのほとんどを今やっていましたが、自分が作成したクラスのインスタンスを作成していないことに気付きました(バッファーリーダーや配列などの他のインスタンスを作成しました)。

これは悪いですか?データベースに追加されるまでデータ(文字列として格納されている)を操作するために静的に呼び出される関連メソッドのコレクションであるクラスがあるようです。私のテクニックがナイーブまたは悪い形だと考えられている場合、経験豊富なプログラマはこれをどのように行うでしょうか?

5
Dan Savage

この特定の問題については、それはひどいことではありません。あなたがやっていることは、基本的にインポートプロセスをスクリプト化することであり、これはかなり簡単な必須の問題です。 Java多分その仕事に最適なツールではないかもしれませんが、問題ありません。

経験豊富なプログラマは、ファイルとは異なるソースからのデータを支援するために、データベースに送られるデータを表す中間データ構造を作成する場合があります。それらはファイルまたはデータベースを抽象化して、さまざまなインポート/出力ターゲットを持つことができます。ただし、環境やニーズによっては、エンジニアリングが過剰になる場合もあります。

4
Telastyn

オブジェクト指向のポイントは、ユーザー定義のクラスをカウントせず、「more == better」で判断することです。

オブジェクトのインスタンス化は、問題のフィールドに、動作は同じであるがアイデンティティが異なる複数のものが実際にある場合に役立ちます。これがストリームでどのように機能するかを確認しました。あるソースからの読み取りと別のソースからの読み取りです。ストリームの読み取りと書き込みは異なりますが、密接に関連しているため、両方が同じクラスから継承することなどが理にかなっています。これらはすべてOOPイディオムを使用するのに十分な理由です。何かを1回実行するためのロジック、そしてそれを再利用します。ロジックがインスタンス固有のデータ(ソースファイル名など)にバインドされている場合、それらをバンドルする論理的な方法は、データとそれに作用するメソッドからクラスを作成することです。

ただし、問題が小さく、何も繰り返さない場合、つまり、ある場所からいくつかのことを実際に読み取り、1つの変換を実行してから、別の場所に書き込む場合、ほとんど使用されません。それが実際に実行されるステップのリストに過ぎない場合に、それを行うためのオブジェクトとクラスを定義します。 (各フェーズが一度しか呼び出されない場合でも、フェーズを小さなメソッドに分離することは良い考えですが、OOPに厳密に関連しているわけではありません-非オブジェクトでも良いアイデアです言語)

簡単に言うと、自分のクラスを作成しなかったことについて自分を打ち負かさないでください。 doesが最初の問題のクラスに出会ったら、複数のインスタンスを持つクラスを定義するのが理にかなっています。根本的に非動的な問題解決のためのウィンドウドレッシングである場合。

3
Kilian Foth

Javaプログラムをオブジェクトなしで作成することはできません。インスタンス化するものはすべてオブジェクトです。呼び出す静的メソッドは、クラスのClassオブジェクトのインスタンスで呼び出されます。

しかし、はい、静的メソッドだけで単一の大きなクラスを使用することは一般に悪い考えです。それはひどく手に負えなくなります。
プログラムが大きくなるにつれてオブジェクト指向の学習の問題を回避するのではなく、将来的に事態を悪化させるのではなく、創造物がまだ小さく、想像しやすいので、今、頭を包むように努力してくださいあなたの頭の中で。
適切な本をいくつか入手し、誰かに指示を与えてください。問題を永久に回避したり、フォーラムで質問したり、YouTubeのビデオを見たりするだけで問題を解決できるとは思わないでください。

0
jwenting