オブジェクト指向になってないJavaコードを晒せ!
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGでプログラム組んでると勘違いしてるヤシが
多すぎる。そんなコードを晒して、オブジェクト指向
プログラミングを勉強しなおそう!
0013デフォルトの名無しさん
NGNGcomp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
compActionPerformed();
}
} );
protected compActionPerformed() {
}
みんなコレに統一しれ
0014デフォルトの名無しさん
NGNG.NETならdelegateで綺麗に書けるのに・・・なんて無様なんだろう
0015デフォルトの名無しさん
NGNGまあ、匿名クラス使ってある程度ごまかせるんだけどね。
ちなみに、C# でも来年登場するバージョンから匿名デリゲートがかけるようになる。
0016デフォルトの名無しさん
NGNG俺としては、無名クラスを使ってる時点で気持ち悪い。
00178
NGNG1++はi++の間違いです。堪忍して・・・
このコードですが、
また別のところでは配列の0〜100をまた別の目的に使ってたり、あるところでは
200番から使ってたり、しかもそれを規定するのがコメントだけだったりと、
見るもおぞましいことになってました。
ちなみにこれを書いたやつに
public class XXX000{
private int hogeID;
private String name;
...;
public int getHogeID(){
return hogeID;
}
public void setHogeID(int hogeID){
this.hogeID = hogeID;
}
...;
}
という風にしないかと言ったら「なんでそんな面倒なことをする必要があるんだ?」と
返されました。思わず絶句・・・。
0018デフォルトの名無しさん
NGNG富士痛とかいったらそんなコードのほうが標準な気が..
ところで
String x_value[1000];
なんてJavaで書けたのか..
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGValueObjectで、17やられたら1000往復ウマー
00218
NGNG(;゚Д゚)書けません・・・String[] x_value = new String[1000]でした。やべぇよ俺。
>>19
常に1000個必要な訳じゃないんです。使っている場所によっても違いますが、
実際に使っているのは多くてその半分くらいです。サイズは問題じゃないか。
だいたい、こんなことをしたいならこんなけったいなクラスを定義せず、
String[] x = new String[1000];
でいいと思うんですけどね。
ちなみに、上記のコードに初期化のメソッドはなく、使用する側で初期化するように
なってます。たとえばこんな風に。
for( int i = 0; i < 1000; i++ ){
x.setValue(i, "");
}
上限を1000から変えたいときはどうするんだろうと思いました。
0022デフォルトの名無しさん
NGNG>x_value
つーかこういうハンガリアン記法チックは汚いでしょ。
0023デフォルトの名無しさん
NGNG>>8
中途半端なOOPより、そっちのほうがまだましかも。
機能を増やすときにあのクラスのオブジェクトの
あのメソッドを呼ばないといけないから・・・と
後先考えずに関連を増やされたJavaプログラムは
参照関係がぐちゃぐちゃで
書いた本人以外には理解不能なプログラム
だった。
0024デフォルトの名無しさん
NGNGのようにするのは美しくないけど、実際にはコレで開発効率があがるのも事実
だいたいResultSetだって>>8のようになってんだし、これでいいと思うが
00258
NGNG悪いコードになるかどうかどうかと、オブジェクト指向か否かという
話は直行しているでしょ。
いいOOP=いい非OOP>そこそこのOOP=そこそこの非OOP>>>>>悪いOOP=悪い非OOP
>>24
こういう「手抜き」は、最初こそ楽に思えても、開発行程が進むにつれて
ボディブローのようにじわじわと効率を落としていくものだと思っている
んですが、違いますか?つか、前の仕事ではそう感じました。
0026デフォルトの名無しさん
NGNGこういうコードはオブジェクト指向じゃないね。
クラスの責務なんかあったもんじゃないから。
ま、どこまでのコードがOOPであるかというのは
人によって見解はわかれるとおもうけど。
0027デフォルトの名無しさん
NGNGクラスはRDBのスキーマから生成して、ResultSetからBeanへの値設定処理は
リフレクションでやれば、そんなに面倒ではなくなります!
と主張してみるとか。だめ?
0028デフォルトの名無しさん
NGNGとくに一つのメソッド内でコネクション確立、ログイン、クエリー実行、
データ取出しを同時にやっているコードは。
J2EE使ったほうがすっきりするんですかねぇ?
0029デフォルトの名無しさん
NGNG差分プログラミングしてるコードじゃないの?
0030デフォルトの名無しさん
NGNG軽い気持ちでJ2EEという言葉を口にしてはならない。
0031デフォルトの名無しさん
NGNGオブジェクトを引数でわたすことばっかりやって
メッセージパッシングをうまくつかってないコード。
0032デフォルトの名無しさん
NGNG具体例をだせ。
0033OO厨 ◆ILBKrPMSho
NGNGこれは、オブジェクト指向なJavaのコード
http://pc2.2ch.net/test/read.cgi/tech/1021881540/242-244
0034デフォルトの名無しさん
NGNG33が示すような小規模なコードに適用しても無意味。
ちょっとしたテキストフィルタ程度ならOOでないほうがよっぽどいい。
8のあれって、テーブルの内容をコンソールに表示するだけのプログラムで使うなら
使い回しが効いて悪くないだろ。
問題なのは、大きい業務システムを非OOで乗り切ろうとする馬鹿野郎。
規模に応じて方法論を使い分けろってことだね。
0035デフォルトの名無しさん
NGNG>こういう「手抜き」は、最初こそ楽に思えても、開発行程が進むにつれて
>ボディブローのようにじわじわと効率を落としていくものだと思っている
まったくその通り。
最初のうちは見かけ上サクサク進むんだけど、
ボリュームが増えてきたりあとで変更入ったりすると柔軟に対応できなくて、
自分の書いたコードすら理解できなくなって破綻するか(PGが出社しなくなるとか)、
パフォーマンスがことごとく落ちるか(受注会社がこんなものですと開き直る)になる。
そのような「手を抜かないで最初からしっかり作っておけばよかったのに・・・」
ってシステムの見直しを発注本から依頼されて、そういうのを何度も改善したことあるよ。
共通していえるいるのは、先のこと(保守性)を考えていないということ。
そのときだけ動きゃいいと思い込んでる。ある意味正しい教育を受けれなかったそのPG
もかわいそうなんだけど。
0036デフォルトの名無しさん
NGNG言いたいことはわかる気がする。抽象データ型として
オブジェクトを使って、作り方は機能分割のプログラム
のことだろ?最初っからそう割り切って書いてくれるなら
まあ、それもいいとするが、本か何かで読んだのかしらんが
部分的にOOにやってるプログラムが一番たちが悪い。
0037デフォルトの名無しさん
NGNGhttp://page5.auctions.yahoo.co.jp/jp/auction/e22909695
ヤフオク出品したよ
1円スタートでマジお勧め!
「10日でおぼえるJSP/サーブレット入門教室」翔泳社
0038デフォルトの名無しさん
NGNG0039山崎渉
NGNG0040山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0041山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0042デフォルトの名無しさん
NGNGもう、難しいな俺には・・・
携帯アプリのソースって非OOなもの多いよな
いまはサイズ大きいから大丈夫か?
0043デフォルトの名無しさん
NGNGアクセス権がほとんどpublicでprovateやprotectedなメソッドやフィールドが殆どない。
もともとアルゴリズム教育やC言語やTeXが得意な学者が書いた本って感じだな。
0044デフォルトの名無しさん
NGNGpublic class XXX0010data{
private String hogeID,name,birthday;
public String getValue(String hogeID,String name,String birthday){
this.hogeID=hogeID;
this.name=name;
this.birthday=birthday;
}
public String getName(){
return name;
}
・・・各getter
}
使用例
Map x = new HashMap();
ResultSet rs = st.executeQuery("select * from T_510");
int i = 0;
while(rs.next()){
XXX0010data data=new XXX0010data(rs.getString("hogeID"),rs.getString("name"),rs.getString("birthday"));
x.put(rs.getString("hogeID"),data);
}
004544
NGNGListのネスト?
配列をListに収納?
List で入れて返すときに毎回2次元配列に変換?
プリミティブ変数の可変長配列は、
List a=new ArrayList();
a.add(new Double(0.1));
とかするのは出し入れが面倒だ。。
0046デフォルトの名無しさん
NGNG直感的にOOになってないなーとはわかるが、
ここがこーだからといいにくいんだよねー。
ま、漏れの技術力が低いのが原因だとおもうが。
こういうのって技術雑誌とかに特集されてたりしないもんなの?
0047_
NGNG0048デフォルトの名無しさん
NGNGんな、手で書かなくても済むコードのコーディング・スタイル気にしても、
しゃーないやん。(ツール生成コードを手でメンテさせる糞現場もあるらしいけど(w)
0049デフォルトの名無しさん
NGNG誰だよこんな糞コード吐くツール作った奴は…
0050デフォルトの名無しさん
NGNG0051_
NGNG0053デフォルトの名無しさん
NGNG必死だなw
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGカプセル化が充分にされていれば問題ありません
それを書き直す時間もありません
ツッパシレ!!
0059山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0061山崎 渉
NGNG0062デフォルトの名無しさん
NGNG複素数の項を見たのだが
public double real;
public double imag;
public static Complex sin(Complex x){
//略
}
となっている記述が気に入らなかった。
これじゃ「C言語による最新アルゴリズム辞典」のときの構造体
そのまんまや。
private double real;
private double imag;
getReal(){ return real; }
getReal(){ return imag; }
public Complex sin(){
//略
}
になっていないのが気に入らなかった。
0063山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
■ このスレッドは過去ログ倉庫に格納されています