トップページ⇒tech
66コメント15KB

せめて、Javaらしく

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Javaでプログラムしているのに、C・C++、VBではこうするんだ!とか
今まで構造化でうまくいっているとかでJavaで気持ちの悪いコードを
書く人をよく見かけます。
Sunの書き方やIBMの書き方に完全に従えと言うつもりはありません。
せめて、Javaらしく書いて欲しいです。
0002マイク ◆yrBrqfF1Ew NGNG
世界の中心で2chの閉鎖を叫んだけもの
0003デフォルトの名無しさんNGNG
「今までうまくいっているから」とか言うやつに限って、今まで納期どおりに予算内で大きなバグなく完了したプロジェクトに関わったことがなかったりする。
0004デフォルトの名無しさんNGNG
具体的に気持ちの悪い例をだせ
0005デフォルトの名無しさんNGNG
具体的厨あらわる
0006デフォルトの名無しさんNGNG
定義厨と似たようなものかね
0007デフォルトの名無しさんNGNG
あれもこれもやろうとして巨大なメソッドを書くやつはいるな
0008デフォルトの名無しさんNGNG
愚痴はマ板で
0009デフォルトの名無しさんNGNG
>>6
定義厨って、定義をもちだすやつだね。
具体的厨は、自分が理解できないときに具体例を出せと言い出す
0010デフォルトの名無しさんNGNG
>>9
えーーだって本当に知りたいじゃん
>>1みたいな経験なくてさ
0011デフォルトの名無しさんNGNG
>>10
幸せだね。
すべてのメソッドがstaticだったときにはびっくりだよ。
0012デフォルトの名無しさんNGNG
>>11
そりゃすごいな・・・・

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

関数型のスタイルだね。
0017デフォルトの名無しさんNGNG
静止したVMの中で
0018マイク ◆yrBrqfF1Ew NGNG
瞬間、誹謗中傷重ねて。
0019デフォルトの名無しさんNGNG
何言ってるかわかんねぇ
漫画?
0020デフォルトの名無しさんNGNG
エヴァンゲリオン。
http://that3.2ch.net/test/read.cgi/gline/1074600994/l50
0021デフォルトの名無しさんNGNG
あ、アニメなのね
0022デフォルトの名無しさんNGNG
ということは、削除依頼だしとけよ、ってことだな。
0023デフォルトの名無しさんNGNG
終わる世界
0024デフォルトの名無しさんNGNG
1はアニパロのつもりはなかったかもしれんが
2によってスレの流れが決まった典型例だね。
0025デフォルトの名無しさんNGNG
アニオタほんと多いな
俺が気づかないだけで、アニメネタがもっとあるんだろな
0026マイク ◆yrBrqfF1Ew NGNG
アニメは正直どうでもいいが
早期の閉鎖は望まれるな。
0027デフォルトの名無しさんNGNG
見知らぬ変数
0028デフォルトの名無しさんNGNG
バグ、逃げ出した後
0029デフォルトの名無しさんNGNG
エヴァのタイトルをプログラム関係の言葉にこじつけるスレになりました。
・・・マ板逝け。
0030デフォルトの名無しさんNGNG
第壱話 使徒、襲来
0031デフォルトの名無しさんNGNG
第弐話 見知らぬ、マルチプラットフォーム
0032デフォルトの名無しさんNGNG
第参話 重い、AWT
0033デフォルトの名無しさんNGNG
第四話 デスマ、逃げ出した後
0034デフォルトの名無しさんNGNG
くっせーーーーーーーーーwwwwww
チンカス臭がプンプンするぜwwwwwwwww
0035デフォルトの名無しさんNGNG
第伍話    Sun、Servletのむこうに
0036デフォルトの名無しさんNGNG
第六話 決戦、第3会議室
0037デフォルトの名無しさんNGNG
第拾六話   死に至るAWT、そして
0038デフォルトの名無しさんNGNG
第七話 人の造りしもの
0039デフォルトの名無しさんNGNG
>>34
おまえも相当の使い手だなw
0040デフォルトの名無しさんNGNG
最終回
もとコボラー・それぞれの時間経過
0041デフォルトの名無しさんNGNG
第拾弐話 マルチプラットフォームの価値は
0042ロス級原潜NY ◆tcoxttj3uA NGNG
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
0043デフォルトの名無しさんNGNG
>>1
うちのバイト先にそういうのがいる。
どこにでもいる。
C/C++経験者に見られる職人プログラマの現象だ。

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

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

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

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

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

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

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


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

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

こんなことする奴は職人とはいわない。ただの馬鹿だよ。
0048デフォルトの名無しさんNGNG
可読性を損ねるだけじゃん
同じ記述多そうだし
0049デフォルトの名無しさんNGNG
問題は、俺って出来るじゃんって勘違いしている困ったチャンを
どうすれば更生できるのかってところなんだけど、誰か教えて栗。
0050デフォルトの名無しさんNGNG
そいつが書いたのと同じ機能で1/10のコード量のプログラムを1/100の時間で作って見せる。
0051デフォルトの名無しさんNGNG
仕様追加に笑顔で応える
0052C++職人NGNG
JAVAとは違うんだよ!JAVAとは
0053デフォルトの名無しさんNGNG
と、ダブルゼータ時代にドムに乗りながら言ってる感じか。
0054デフォルトの名無しさんNGNG
>53
せめてゲルググ……(漏れ的にはドワッジ)
0055デフォルトの名無しさんNGNG
0056ワタルNGNG
javaアップレットでホームページを作っているのですがどうしてもリンクの張り方がわかりません。
どなたかわかる方がいらっしゃいましたら教えてください。
0057デフォルトの名無しさんNGNG
いま参加しているプロジェクトはほとんどstaticだよ。
0058デフォルトの名無しさんNGNG
風呂釜洗うやつでしょ。
そんなのでプログラム組めるの?
0059デフォルトの名無しさん2005/04/16(土) 22:49:45
お疲れ様です。
『せめて、JAVAらしく』ということで、書き込みと質問をしたいと思います。

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

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

0060デフォルトの名無しさん2005/04/16(土) 22:54:09
>59
メモリリークってことはまぁ99%ないとして
作法としては、その「二つの値」を持つクラスを作って
メソッドからはそのインスタンスを返すのが上品かと思われ。
とはいえ、状況にもよりますわな。
0061デフォルトの名無しさん2005/04/16(土) 23:16:37
成否は例外で返す。
0062デフォルトの名無しさん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) = ... とかで値を受け取れるようにしてくれ。
0063デフォルトの名無しさん2005/05/22(日) 12:14:31
controlというパッケージにControlというクラスを作ってそれをnewさせると
control.Control control = new control.Control();
となったけど普通だよね
0064デフォルトの名無しさん2005/05/22(日) 12:50:08
import control.*;

したら

Control control = new Control();

になるよ
0065デフォルトの名無しさん2005/06/13(月) 01:01:42
SQLJ使っている人いる?
0066デフォルトの名無しさん2005/06/18(土) 23:07:24
昔仕事で使った。面倒だった。
■ このスレッドは過去ログ倉庫に格納されています