Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

このコードってレベル高い?

package jisakukurass;
import jisakukurass.ApplicationSystem;
public class Jisakukurass{
public static void main(String[] args){
new ApplicationSystem();
}
}

14

回答

79005

閲覧

14件の回答

評価

0

ネーミングセンスのレベルは高いな。

評価

0



package名称

class名称

意味のないオブジェクト作成

評価

0

難しい?という意味であれば、
レベルは高くないと思いますよ?
コンストラクタで何かしてるんだろうかとか考えます。

評価

0

>意味のないオブジェクト作成
意味があるかないかは、コンストラクタの中身を知らなきゃ言えないな。

評価

0

new ApplicationSystem();



ApplicationSystem.process();

戻り値を保存しないのであれば、コンストラクタである必要がない。


static void でOK

GC発生までごみが大きく残る。

評価

0

"kurasu"じゃなくて"kurass"とあるのがサイコーだな。

評価

0

>戻り値を保存しないのであれば、コンストラクタである必要がない。
善し悪しの話であれば、最初からそう書けばいい。

>GC発生までごみが大きく残る。
まるでstaticメソッドにはムダがないような言い方だなあ。

評価

0

>戻り値を保存しないのであれば、コンストラクタである必
要がない。

↑これは誤り。ステートを保持しないといけないケースで
は、クラスメソッド process で代用するようなことはでき
ない。

たとえば、ApplicationSystem クラスが JFrame のサブクラ
スだったら…と考えてごらんよ?

評価

0

「Javaでは**便宜上**ひとつ以上のクラスにエントリポイント static void main を実装することができる」だけなんだよね。main をクラスに実装するということは、そのクラスのデザインを汚すということでもある。なぜなら、クラスがエントリポイントを持つことは、そのクラスの裁量を超えているから。

ApplicationSystem クラスに static ApplicationSystem createInstance メソッドを設けるのは裁量の内。インスタンスを生成する簡易メソッドを提供しているだけだから。このメソッドのシグネチャを static void main(String[] args) にしてしまうとクラスの裁量を超えてしまう。「アプリケーションを開始しインスタンスを生成する」という役割を担ってしまうからね。「アプリケーションを開始する」というのはクラスの裁量を超えている。

でも、仕様上、エントリポイントを誰かが持たなければならない、じゃあエントリポイントを持つ汚いクラスは分離しよう、とまで考えた結果なら「レベルの高いコード」かもね?

評価

0

何を持って「レベル」と言うかね。

評価

0

>> ApplicationSystem クラスが JFrame のサブクラス

view制御 と logic制御  を同一 Javaクラスに記載している場合ですね。
しかも処理を全部コンストラクタに書いてある場合。


再利用の観点からは大きく外れてますよね。
それはオブジェクト指向の考え方ではないです。

評価

0


> view制御とlogic制御を同一Javaクラスに記載している場合ですね。
> しかも処理を全部コンストラクタに書いてある場合。

なんか勘違いされているね。インスタンスを生成した後でもユーザーによって何か作用ができるステートを持った存在の例として JFrame を挙げました。

あなたは、きっと、インスタンス変数に代入していない=インスタンス生成後に何もしない、と考えてしまったんですよね? だから、クラスメソッドで十分という発想になってしまった。

JFrame のような GUI ならば画面に表示されるので、インスタンス生成後にユーザーが作用することもできますし、UIスレッドが生成されれば、main メソッドが終了してもアプリケーションは終了しません。

「インスタンス変数に代入していないから、その後、何もできない」、「main メソッドの終了とともにアプリケーションが終了するから意味がない」というのは GUI アプリケーションの場合は成立しないです。

再利用の観点から大きく外れているとかオブジェクト指向の考え方ではないというのは私には何を言っているのか理解できませんでした。すみません。

評価

0

ほう。w。

手続きを”すべて”コンストラクタに書いている時点で及第点ですが。。。
↑うちが問題にしてるのはここだが


中国人のほうがましだね。

評価

0

あのぅ…、GUIインスタンス生成後にユーザーが作用することができるというのを無視されてしまったようですね。それともイベントドリブンって知らないのかな…。

GUIアプリケーションならコンストラクタでコンポーネントの生成と表示だけおこなえばいいでしょ。実際の処理(手続き)なんかはボタン押下時のリスナーで処理できるんだから。なにを理由に、手続きすべてがコンストラクタに書いてあると言っているのか私には理解できません。

・処理を全部コンストラクタに書いてる
・再利用の観点から大きく外れている
・オブジェクト指向の考え方ではない

こんな短いコード断片から、よくこんなことが言えるものですねえ。

それと「及第点」ならいいんじゃないですかww

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。