せめて、Javaらしく

1デフォルトの名無しさん
Javaでプログラムしているのに、C・C++、VBではこうするんだ!とか
今まで構造化でうまくいっているとかでJavaで気持ちの悪いコードを
書く人をよく見かけます。
Sunの書き方やIBMの書き方に完全に従えと言うつもりはありません。
せめて、Javaらしく書いて欲しいです。
2マイク ◆yrBrqfF1Ew :04/11/03 15:02:38
世界の中心で2chの閉鎖を叫んだけもの
3デフォルトの名無しさん:04/11/03 15:15:00
「今までうまくいっているから」とか言うやつに限って、今まで納期どおりに予算内で大きなバグなく完了したプロジェクトに関わったことがなかったりする。
4デフォルトの名無しさん:04/11/03 15:29:13
具体的に気持ちの悪い例をだせ
5デフォルトの名無しさん:04/11/03 15:34:00
具体的厨あらわる
6デフォルトの名無しさん:04/11/03 15:38:50
定義厨と似たようなものかね
7デフォルトの名無しさん:04/11/03 15:39:00
あれもこれもやろうとして巨大なメソッドを書くやつはいるな
8デフォルトの名無しさん:04/11/03 15:44:04
愚痴はマ板で
9デフォルトの名無しさん:04/11/03 15:46:12
>>6
定義厨って、定義をもちだすやつだね。
具体的厨は、自分が理解できないときに具体例を出せと言い出す
10デフォルトの名無しさん:04/11/03 15:48:52
>>9
えーーだって本当に知りたいじゃん
>>1みたいな経験なくてさ
11デフォルトの名無しさん:04/11/03 15:59:22
>>10
幸せだね。
すべてのメソッドがstaticだったときにはびっくりだよ。
12デフォルトの名無しさん:04/11/03 16:07:56
>>11
そりゃすごいな・・・・

あ、でも一人ノーツしか経験ないやつでどうしようもねーのいたな
スコープが全然わかんねぇの。VBのスコープすら区別できない
ま、こいつにはプロジェクトは割当ないんで何もおきてないけどな
13デフォルトの名無しさん:04/11/03 16:13:42
死に至るバグ、そして
14デフォルトの名無しさん:04/11/03 16:15:19
OOPごころを、君に
15デフォルトの名無しさん:04/11/03 16:26:33
>>11
メソッドだけならいいだろ。
すべての変数がstaticだったときにはマジどうしようかと思った。
16デフォルトの名無しさん:04/11/03 16:30:48
>>15
逆に、全ての変数が final だったらカッコイイ。

関数型のスタイルだね。
17デフォルトの名無しさん:04/11/03 16:39:02
静止したVMの中で
18マイク ◆yrBrqfF1Ew :04/11/03 17:22:50
瞬間、誹謗中傷重ねて。
19デフォルトの名無しさん:04/11/03 17:29:46
何言ってるかわかんねぇ
漫画?
20デフォルトの名無しさん:04/11/03 17:40:03
21デフォルトの名無しさん:04/11/03 18:09:26
あ、アニメなのね
22デフォルトの名無しさん:04/11/03 19:40:36
ということは、削除依頼だしとけよ、ってことだな。
23デフォルトの名無しさん:04/11/03 20:12:07
終わる世界
24デフォルトの名無しさん:04/11/03 20:12:40
1はアニパロのつもりはなかったかもしれんが
2によってスレの流れが決まった典型例だね。
25デフォルトの名無しさん:04/11/03 20:17:48
アニオタほんと多いな
俺が気づかないだけで、アニメネタがもっとあるんだろな
26マイク ◆yrBrqfF1Ew :04/11/03 22:56:39
アニメは正直どうでもいいが
早期の閉鎖は望まれるな。
27デフォルトの名無しさん:04/11/03 22:59:24
見知らぬ変数
28デフォルトの名無しさん:04/11/04 12:11:43
バグ、逃げ出した後
29デフォルトの名無しさん:04/11/04 12:47:55
エヴァのタイトルをプログラム関係の言葉にこじつけるスレになりました。
・・・マ板逝け。
30デフォルトの名無しさん:04/11/04 14:23:58
第壱話 使徒、襲来
31デフォルトの名無しさん:04/11/04 14:33:39
第弐話 見知らぬ、マルチプラットフォーム
32デフォルトの名無しさん:04/11/04 14:36:00
第参話 重い、AWT
33デフォルトの名無しさん:04/11/04 14:45:10
第四話 デスマ、逃げ出した後
34デフォルトの名無しさん:04/11/04 14:45:24
くっせーーーーーーーーーwwwwww
チンカス臭がプンプンするぜwwwwwwwww
35デフォルトの名無しさん:04/11/04 14:48:29
第伍話    Sun、Servletのむこうに
36デフォルトの名無しさん:04/11/04 14:51:12
第六話 決戦、第3会議室
37デフォルトの名無しさん:04/11/04 15:05:04
第拾六話   死に至るAWT、そして
38デフォルトの名無しさん:04/11/04 17:21:06
第七話 人の造りしもの
39デフォルトの名無しさん:04/11/04 18:18:33
>>34
おまえも相当の使い手だなw
40デフォルトの名無しさん:04/11/04 18:58:13
最終回
もとコボラー・それぞれの時間経過
41デフォルトの名無しさん:04/11/04 20:53:03
第拾弐話 マルチプラットフォームの価値は
42ロス級原潜NY ◆tcoxttj3uA :04/11/09 23:52:22
J2| JMX technology defines standard connectors (JMX connectors) that allow
J2| you to access JMX agents from remote management applications. JMX
J2| connectors using different protocols provide the same management
J2| interface. Hence a management application can manage resources
J2| transparently, regardless of the communication protocol used. JMX agents
J2| can also be used by systems or applications that are not compliant with
J2| the JMX specification but which support JMX agents.

Javaプラットフォ~ムの為の、JavaOne!? :-| Javaらしい、JMX
43デフォルトの名無しさん:04/11/11 23:39:14
>>1
うちのバイト先にそういうのがいる。
どこにでもいる。
C/C++経験者に見られる職人プログラマの現象だ。

その程度ならいいものの、ある会社の社員が書いたコードを
もらうことになった。そのコードをみるや燦々たるスパゲティコード。

職人は工場やロボットを使うのを嫌いすべて手作りに拘る、
それはそれでよい結果をもたらす場合もあるが
大規模開発では迷惑。後継者の身になって考えていないコードが多すぎる。
おきまりと思えるくらいコメントはろくに書いていない。
変数名やメソッド名、クラス名のネーミングはセンスが悪く、わかりずらい。

メソッド一つあたり無駄に1000行は軽く超える。
メソッドはほとんどがstatic。カプセル化はろくにしておらずインスタンスフィールドはほとんどがpublic。
44デフォルトの名無しさん:04/11/11 23:41:06

そして継承の使い方がわかってない。
「継承=単なる再利用」と勘違いして新しいクラスを作るたびに既存のクラスを継承して
無駄をしている。コードを見ただけでデザインパターンをひとつも知らないことがわかってしまう。
それどころかテスト用に作ったとするクラスまでわざわざ継承している。
テストするならJUnitやCactus, MockObjectくらいは使って欲しいし
本番用コードにテスト用コードを混在させないで欲しい。
同じパッケージであっても別ディレクトリに置くようにするくらいはして欲しい。
しかもその継承したクラス名はスーパークラスの名前の語尾に番号を付けただけのネーミング。
それが1,2,3,4と番号付けされているのだから最悪。しかもそのコーダはその「番号=バージョン番号」
にもしているという始末。CVSとかのバージョン管理システムくらいは導入してほしい。

例外処理も当然いい加減。殆どがExceptionで処理か無視して外にthrowsしている。

コード内にはゴミが多い。使われていない変数、途中から使われなくなった変数が続出する。

コードをEclipseで表示させると1万もの警告がリストアップされる!
使われていない変数、一度も使用されていないimportされたクラス、パッケージ、
Javadocコメントが書かれてないことによる警告、staticフィールドへの非間接的アクセス、
正常に完了されていないfinallyブロック。


リファクタリングするだけでも大変だ。
下手にリファクタリングするとかえって壊れる可能性もありリスクもでかい。
45デフォルトの名無しさん:04/11/12 02:07:12
>>43-44
それは精神的にかなりこたえそうな状況だな…。
俺は長い行数のメソッドを読むのが非常に苦手で遅いんだが
こういうの書く奴らって長い行数が得意だと自慢するんだよな。
46デフォルトの名無しさん:04/11/13 01:17:47
場合によっては長くなってしまうコードもある。
例えばどんなに抽象化を行ってもそれに伴う例外処理などでメソッドが長くなってしまう
コードなどがあるが、それでも100行を超えることはないな

9割以上のメソッドが30行以内にはなるし、ならないのは書き方が悪い
47デフォルトの名無しさん:04/11/14 00:16:30
> メソッド一つあたり無駄に1000行は軽く超える。

こんなことする奴は職人とはいわない。ただの馬鹿だよ。
48デフォルトの名無しさん:04/11/14 09:34:32
可読性を損ねるだけじゃん
同じ記述多そうだし
49デフォルトの名無しさん:04/11/15 00:13:42
問題は、俺って出来るじゃんって勘違いしている困ったチャンを
どうすれば更生できるのかってところなんだけど、誰か教えて栗。
50デフォルトの名無しさん:04/11/15 00:42:44
そいつが書いたのと同じ機能で1/10のコード量のプログラムを1/100の時間で作って見せる。
51デフォルトの名無しさん:04/11/15 02:03:35
仕様追加に笑顔で応える
52C++職人:04/11/16 17:25:31
JAVAとは違うんだよ!JAVAとは
53デフォルトの名無しさん:04/11/16 19:13:02
と、ダブルゼータ時代にドムに乗りながら言ってる感じか。
54デフォルトの名無しさん:04/11/16 20:01:13
>53
せめてゲルググ……(漏れ的にはドワッジ)
55デフォルトの名無しさん:04/11/22 16:06:14
56ワタル:05/01/10 04:18:57
javaアップレットでホームページを作っているのですがどうしてもリンクの張り方がわかりません。
どなたかわかる方がいらっしゃいましたら教えてください。
57デフォルトの名無しさん:05/01/10 04:26:01
いま参加しているプロジェクトはほとんどstaticだよ。
58デフォルトの名無しさん:05/01/16 23:03:33
風呂釜洗うやつでしょ。
そんなのでプログラム組めるの?
59デフォルトの名無しさん:2005/04/16(土) 22:49:45
お疲れ様です。
『せめて、JAVAらしく』ということで、書き込みと質問をしたいと思います。

先日、私が作成したプログラムの中で、あるメソッドを作成したのですが、
そのメソッドのなかで、2つの値(boolean,ある条件に該当する値を格納した
Hashtable)を返す必要ができてしまい、やむなく、参照渡しで空のHashtableを
作成したメソッドに渡し、メソッド内でそのHashtableに対して処理を行うことで対
処しました。

ここで、質問なのですが、JAVAでこういう参照渡しを行うことは避けるべきなのでしょうか?
(解析しづらい、下手をするとメモリリークしてしまう?)
皆さんのご意見を聞かせてください。よろしくお願いしますm(__)m。

60デフォルトの名無しさん:2005/04/16(土) 22:54:09
>59
メモリリークってことはまぁ99%ないとして
作法としては、その「二つの値」を持つクラスを作って
メソッドからはそのインスタンスを返すのが上品かと思われ。
とはいえ、状況にもよりますわな。
61デフォルトの名無しさん:2005/04/16(土) 23:16:37
成否は例外で返す。
62デフォルトの名無しさん:2005/05/05(木) 21:53:30
Pair<Boolean, Map> を使う。
というのは冗談だけど、Generics のある昨今、こういうクラスがあってもよいな。
1.6 に入れてくれ。Tuple とかも一緒に。STL と boost を盛大にパクってくれ。

public class Pair<F, S>
{
 public F getFirst() {...}
 public S getSecond() {...}
 public void setFirst(F firstValue) {...}
 public void setSecond(S secondValue) {...}
}

そして、
F f;
S s;
(f, s) = ... とかで値を受け取れるようにしてくれ。
63デフォルトの名無しさん:2005/05/22(日) 12:14:31
controlというパッケージにControlというクラスを作ってそれをnewさせると
control.Control control = new control.Control();
となったけど普通だよね
64デフォルトの名無しさん:2005/05/22(日) 12:50:08
import control.*;

したら

Control control = new Control();

になるよ
65デフォルトの名無しさん:2005/06/13(月) 01:01:42
SQLJ使っている人いる?
66デフォルトの名無しさん
昔仕事で使った。面倒だった。