1 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 20:27:10.93 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド ★★Java質問・相談スレッド161★★ toro.2ch.net/test/read.cgi/tech/1364006637/
369 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 15:50:38.71 ] >>368 ここに置いてあるzipファイルの中の「BTree.java」ですよね? ありがとうございます!これを参考にします。
370 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 15:55:43.37 ] >>369 はい、それです。
371 名前:デフォルトの名無しさん [2013/06/28(金) 20:15:07.51 ] JavaScriptは板違い ローカルルール読んでこいよ異常者共
372 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 20:39:57.59 ] 自作クラスの感想などを頂きたいのですが、スレ違いでしょうか?
373 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 20:42:02.65 ] 相談のうちには入る…のかなあ
374 名前:桃白白 ◆9Jro6YFwm650 [2013/06/28(金) 20:49:48.68 ] >>372 いんじゃないの。書いちゃいなよ。
375 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:26:55.04 ] >>374 自分のコードの感想言われたらファビョる奴が良く言うよ
376 名前:372 mailto:sage [2013/06/28(金) 21:27:03.75 ] ソースファイルが6つあるので、こちらにアップしていて遅くなりました。 ttp://sourceforge.jp/users/soremachi/pf/TokenTable/wiki/FrontPage/attach/tokenTable.zip コーディングを補助する目的で作った文字列テーブルです。2ヶ月ほど前にJavaの勉強も兼ねて作りました。 (「TableTest.java」にとりあえずの使い方が書いてあります)
377 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:32:12.78 ] おまいらIdeoneぐらい教えたれよ
378 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:32:33.32 ] sourceforgeねぇ
379 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 21:48:31.18 ] >>376 System.out.println( "Table file : ファイル名を指定してください" ); return false; のようなものは throw new IllegalArgumentException( "Table file : ファイル名を指定してください" ); のようにしておけ false 返しても結局戻り値チェックしないんだし、エラーを無視して実行を続けるより死ぬ方がいい 特別に理由があって死にたくないときは try catch すればいい
380 名前:372 mailto:sage [2013/06/28(金) 22:04:25.51 ] Ideoneにも上げました。Sourceforgeの方は消したいと思います。 ttp://ideone.com/IKjued ttp://ideone.com/1IQ5G5 ttp://ideone.com/zOJYVA ttp://ideone.com/7TUxdz ttp://ideone.com/1kuWqV ttp://ideone.com/9MOKz4 ttp://ideone.com/4QEy30
381 名前:デフォルトの名無しさん [2013/06/28(金) 22:08:09.94 ] ideoneやcodepadは英語サイトだから利用規約や制限事項や禁止事項がわからないし、利用料金や支払い方法もわからん
382 名前:372 mailto:sage [2013/06/28(金) 22:32:42.03 ] >>379 わかりました。 引数のチェックでは throw new IllegalArgumentException を使うのが一般的なんですか?
383 名前:デフォルトの名無しさん mailto:sage [2013/06/28(金) 23:49:28.98 ] メソッドのコメントに //- こういうの流行ってんの?
384 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 01:37:41.96 ] 一個目のファイルしかみてないけど、Javaな人はあれみて何も思わないの? 俺、すげー気持ち悪いんだけど。 setHead, setPrimary, set, file、全部キモい。 addとかappendとかkeyとかindexとかcolumnとかpush_backとかなんかそんな概念じゃないのか? まあ、かろうじてinsertはありなのかもしれないが。
385 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 01:42:53.74 ] あと、列データとかtokenとか、一体どこ経由でこのコードにたどり着いたんだ?
386 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 02:51:57.69 ] 突っ込みどころが多すぎる 列を追加してるのにsetHeadというメソッド addだろ 標準出力するだけのクラス tableを受け取るメソッドかtoStringに書けばいい トリッキーなgetterとsetter 座標指定で十分 同一パッケージから直接変更し放題のフィールド 大事な値をうっかり壊しちゃうかもよ 何でもpublicメソッド エラーメッセージとか外から呼び出すの? 別のクラスに投げるだけなら直接呼び出せ ファイルが閉じられない可能性がある Exceptionでキャッチすんな ...
387 名前:372 mailto:sage [2013/06/29(土) 03:00:41.42 ] >>384-385 insertは、なぜありなんでしょうか?Javaというか、オブジェクト指向に触れて3ヶ月ほどなので、 その概念というのがちょっとわからないです・・・。メソッドの持つ役割とかですか? 列データやtokenなどは、いい加減に書いてしまいました。 ArrayListを入れ子にしているので、行列のフィールドに対するコメント文です。
388 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 05:13:45.52 ] >>387 慣用的に使われる用語とその組み合わせというのがあって、大抵それは求めれば他のソフトウェア 技術や数学用語にちゃんと由来が見つかる。 例えばデータ構造として表(table)という名前を使うのであれば列(column)や属性(attribute)、 行(row)やタプル(tuple)という言葉と組で使うのが慣用的。これらの用語は関係データベースの 世界に由来の一端(全てではない)があって、この世界ではrelation・attribute・ tupleかtable・ column・rowの組で使う(厳密にはこの二つの組は異なる概念なので混ぜるのも良くない)。 あとPrimary、これも元々関係データベースから来た用語だけど、数ある候補キーの中から一つ を選んで主キー(primary key)とするのであって、PrimaryKeyならともかくPrimaryだけでは 意味をなしていない。無難なのはKeyColumnかな。 操作に関してもtableにinsertとはおぉDB的だなぁと思ったらsetと出てきてずっこける。 DB的にupdateとするとややずっこけ感は少ない気がする。 setHeadは三重の意味で良くない。一つは上記の通りheadという名前。二つ目は列の「追加」 なのにsetという用語を使っていること。最後にsetHeadというメソッド名はJava Beansの 規約でtableのheadプロパティの値をセットするメソッドに使う必要があること。
389 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 05:45:43.21 ] 要約:クラス設計がレビューされていないような品質
390 名前:384 mailto:sage [2013/06/29(土) 07:41:48.98 ] >>388 あまりにアレ過ぎて言語化できなかったんだけど、すっきりしたよ。ありがとう。 俺、Javaは初心者なんだけど、Javaな世界ではあんな感じが普通なのかと思ったよ。 誰も何も言わないから。
391 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 08:25:23.88 ] 名付け規約に準ずるのは当然だが、 あまりにしつこい社会主義のようだと、せっかくの創造性がつぶれる もともと日本人には発想性がある人が少ないのに、さらに減ってしまう ジャワみたいにばかみたいに長い名前をつけるのもどうかと思うがな コンパイル後も短いシンボルになってないので、実行時の翻訳にムダな時間がかかる処理系もあるだろう
392 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 08:58:37.24 ] 今のところコード品質に関する指摘は>>386 だけだな 他は識別子の名前についてガヤガヤ言ってるだけで特に耳を傾ける必要はない コーディング規約読めばそれで理解できる話だし
393 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:47:46.80 ] 包含関係がしっかりしていれば長い名前空間も苦にはならないが、そうなっていない StringとStringBufferの区別は本当に必要なのか、とか
394 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:52:19.11 ] なるほど、不変オブジェクトだけで十分、と。
395 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 12:56:03.85 ] 可変オブジェクトだけで十分、っていう意味かもしれないじゃない
396 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 14:25:16.00 ] >>392 名前超大事
397 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 15:39:30.97 ] >>396 チーム開発なのか個人開発なのか ライブラリとして提供するのか 色々シーンあるだろ。個人開発なのに名付け規則に神経すり減らすのはエネルギーの無駄
398 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 15:48:00.90 ] 名前に神経すり減らすんじゃなくて >>397 みたいな奴が妥当な名前を付けられないってだけ
399 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 16:56:30.39 ] 会社の歯車がプログラムの歯車をつくるような環境って事か それは自由がないわな かわいそうだな...
400 名前:372 mailto:sage [2013/06/29(土) 17:19:07.84 ] >>386 別のクラスに投げるだけなら、といのは、ファイル入出力や画面への出力は、 同じクラスにメソッドとして持たせるという意味合いで合ってますか? それとも、ひとつのJavaファイル内に複数のクラスを書くということでしょうか? 何でもpublicメソッドなのは、正直、アクセス修飾子の使い方をわかっていませんでした。
401 名前:372 mailto:sage [2013/06/29(土) 17:58:10.67 ] >>388 知りませんでした。メソッド名は (setHead -> add)、(setPrimary -> setKeyColumn)、(set -> update)、(get -> select) こういう風にすればいいですか?
402 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 17:59:31.16 ] > 正直、アクセス修飾子の使い方をわかっていませんでした ( ゚д゚ )
403 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 18:52:47.47 ] そもそも、コンセプトとして、いわゆるDBのテーブルを想定しているのか、Excelのシート、つまり 二次元のデータの入れ物を想定しているのかがわからない。 そういう意図を表明するという意味で、名前重要。
404 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 18:59:40.27 ] 命名規則に話が集中しているのはそこがあまりにタコだと実装のレビューをしようにも読む方が 無駄な努力を強いられて嫌になるから。Tableクラスだけでもなかなかの忍耐が必要。 一人で書き捨てするコードならともかく、人に読んで貰うなら命名規則や慣用は要尊重。 無知を言い訳したオリジナリティーの発揮は単に有害。初心者こそ模倣から始めるべき。 ・適切なクラス名やメソッド名が解らないのであれば既存のライブラリのAPIから似たような ことをしているクラスやメソッドの名前を探して真似をする。 ・適切なコメントの付け方が解らないのであれば既存のライブラリのソースコードを調べて (クラス名に.javaとつけてググればいくらでもヒットする)真似をする。JavaにはJavaDoc 形式というコメントの付け方が定義されていて、これ以外の独自コメント形式は単に迷惑。 ・適切な変数名が解らなければ既存のライブラリのソースコードを調べて(以下略) 解らなければまず調べよう。 初学者ほど何故か調べない、真似をしない、コンパイル時のエラーメッセージも読まない不思議。
405 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:03:01.06 ] クラス定義時の一般論として ・フィールドは基本private。さらにfinalに出来ないか検討する。Tableのtableなんかは finalに出来る。finalではないpublicは御法度。protectedも慎重に。 ・フィールドの型は特別な事情が無い限りHashMapといった実装クラス名よりもMapと いうインターフェイスを用いた方が一般的に設計の抽象度が上がって実装に柔軟性が出る。 ・データの重複はバグの温床なので避ける。例えばrow_no、row_sizeなんてフィールドが 用意されているけれども、table.size()等で代用できないか検討する。パフォーマンス? それは素直で安全な実装で大敗してから考えるべき。 ・特別な事情がない限りファイルIOは直接手作りしない。例えばTableクラスの場合は write(DataOutput out)、readFields(DataInput in)というDataInput、Outputを使って 読み書きするメソッドを用意するのがお薦め。これだけでTableクラスをファイルに保存 することも、ネット経由で投げることも、Hadoopでビックデータ解析(笑)にも使える。 あるいはJAXBやJacksonを使ってXMLやJSONへマッピングする方法を検討する。 続く。
406 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:05:40.12 ] Tableクラスに関するとりあえずのコメントとして ・カラムの型や名前をバラバラのMapで管理しているのはあまり良くない。素直にカラムの 定義を扱うTableの内部クラスを用意して、 public static class Column{public final int index; public final String name; public final String type;} これのリストをスキーマとして定義する。必要であればルックアップテーブルも。 private final List<Column> schema = new ArrayList<Column>(); private final Map<String, Column> nameToColumn = new HashMap ... スキーマ情報を提供する公開メソッドも用意すると親切だよね。 public List<Column> getSchema() {return Collections.unmodifiableList(schema);} public List<Column> getColumn(int index) {return schema.get(index);} public List<Column> getColumn(String name) {return nameToColumn,get(name);} ・検索結果に一個結果を追加する度にサイズを+1した配列を生成して内容を全件コピーする 凄いコードを見たような気がするのは気のせいだよね・・・素直に可変長であるList を使うべき。返値もListで良い。 ・for(int i...)ではなく拡張for構文を使ってくれた方が読みやすい ・・・この調子で書いていくとどうなるのだろう・・・
407 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:15:00.14 ] お前のレスを読むにもかなりの忍耐が必要
408 名前:372 mailto:sage [2013/06/29(土) 19:31:53.15 ] >>406 スキーマって何ですか?
409 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:56:44.17 ] 自分で調べてから質問しろ
410 名前:デフォルトの名無しさん [2013/06/29(土) 19:58:21.58 ] >>408 構造の定義のことでしょ。 >>406 のコードでは列情報のことっすね。いまTableにはこの列がありまっせーていう情報。
411 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 19:58:31.40 ] >>408 スキーマとは構造のこと。テーブルのスキーマはテーブルの構造のこと。 テーブルのスキーマは一般的には列の定義の集合で、個々の列は名前や型を持つ。 テーブルの構造をスキーマと呼ぶ一方で、具体的なデータが入ったテーブルその ものはインスタンスと呼ぶ。スキーマとインスタンスもDBの世界で使われる言葉。 なのでDBの素養のある人であればtable.getSchema()がカラム定義のリストを返す のは簡単に想像出来る。これが命名規約や慣用の強み。 ただschemaに関しては素直にcolumnList、getColumnListでも良いかもね。 というかこれ以上現状のコードをレビューをするのもしんどいので、一度自分で 色々調べ直して書き直したコードと共に出直してくれないかな。
412 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 20:05:52.52 ] どんな勉強したらこんなに酷くなるの? 参考にしたものがどうしようもないゴミか、372が変な方向に理解しちゃったの? ちょっとjavax.swing.table.DefaultTableModelを見てみなよ
413 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:07:32.53 ] どんなレスを期待してコードを見てくれと言ってるのかわからないが、メソッド名を言われた通りに変えればOK 的なレベルに達してないから。
414 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:20:15.32 ] 詳細設計書なんていらんだろ派がこの板には多いと思うが、こういうコードを見れば 必要な場合もあるということがわかるはず。
415 名前:デフォルトの名無しさん mailto:sage [2013/06/29(土) 22:34:56.88 ] >>414 こういうコードを見ても設計何ソレ なのがJAVAドカタの真髄
416 名前:デフォルトの名無しさん [2013/06/30(日) 00:49:17.69 ] Windowsで無料でJavaを勉強出来る開発環境を教えて下さい
417 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 01:12:40.42 ] JDK + テキストエディタ
418 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 01:23:16.55 ] いるんだよなこういうジジイ発想の奴が Eclipseと答えるのがまっとうな人間
419 名前:372 mailto:sage [2013/06/30(日) 02:14:52.38 ] みなさまのアドバイスを参考に書き直してみました ご指導よろしくお願いします mainクラス ideone.com/paGek6 Tableクラス ideone.com/vLUKre Columnクラス ideone.com/IdrclV
420 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:20:15.16 ] >table.getAttribute(j) これはKUSOコード
421 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:37:58.18 ] クソと言うなら理由も書け
422 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:49:23.64 ] ちゃんと差分を見てあげようよw 初めのに比べたら随分スッキリした。 その分随分機能も削られているけど。 ・Columnがattributeを持つのは変。意味的にここはnameだと思う。 ・せっかくColumnをimmutable(変更不可能)なオブジェクトとして定義しているのに tableにgetTypeやgetAttributeを用意しているのは勿体ない。getColumnで直接 Columnオブジェクトを渡して無問題。table.getColumn(index).getType()みたい に使える。 ・コンストラクタにColumnの配列を渡すようにしたのは好判断だと思う。 後からColumnを追加出来ないようにするだけで他の部分のロジックが単純になる。 ・ただ内部的にはColumnsは配列ではなくListで持っていた方が色々と具合が良い。 Javaの配列はimmutableに出来ない。なので例えば現状のgetAllColumnsはこれを 使って個々のColumnを差し替えることが出来るので安全ではない。 さらにコンストラクタ引数に渡したColumnsの配列は防御的コピーをすべき。 private final List<Column> columnsとして、コンストラクタで this.columns = Collections.unmodifiableList(new ArrayList<Column>(Arrays.asList(columns))); とでもしておくと良い。getAllColumnsでcolumnsをそのままreturnしても無問題。 ・細かいことだけどコンストラクタはTable(Column... columns)の方が使い勝手が良い。 new Table(new Column(...), new Column(...))も、現状通りColumn[] columns = ... としてnew Table(columns)とする使い方も両方使える。 ・insertで入力値の型チェックも実装すると素敵だと思う。 この調子で行くとよいんじゃないのかな。
423 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 02:57:42.08 ] 最初のコードに比べたらだいぶマシになったな 入門以前レベルから初心者レベルまで話が進んだ
424 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:03:45.80 ] > getAllRecords Listの中身を全件配列にコピーする、そんな定番処理は手作りするまえにAPIと して用意されていないか調べるべきだろうね。もちろん存在する。 ListのtoArrayメソッドの使い方を調べてみると良いと思う。
425 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:09:50.58 ] > public final void insert(final Object... record) { finalに出来ないか検討するっていうレスがあったけどここまでする必要ない classにfinalついてるからメソッドのfinalは全部無意味 サブクラス作れないからオーバーライドできないもん 仮引数のfinalはあってもいいけど > for (int i = 0; i < table.getAllRecords().length; i++){ 繰り返しの度に時間がかかるメソッドが呼ばれるけどいいの?
426 名前:372 mailto:sage [2013/06/30(日) 03:31:24.30 ] >>403 DBへの問い合わせ文をメソッドに、データ構造をListにしてみよう、と思って最初は書いていました。 >>404-406 ,410,411 JavaDoc形式のコメント、クラス定義時の一般論や、DataOutput, DataInputのインタフェースやスキーマの利用方法、知りませんでした。 レビューを参考にして、色々調べ直してから出直します。コードをレビューして頂いて自分の無知がよくわかりました。ありがとうございます。 >>412 なにも参考にしないで、自分の欲しい機能を追加していきました。 あと、スレの流れ的に言いにくいのですが、>>408 ,>>419 は、私ではありません。 このレスを書いていて発言する機会を失ってしまいました・・・。
427 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:31:57.59 ] > getAllRecords 仕様をはっきりさせるべきだろうね。今のコードでは確かに新しいレコードの 追加は出来ないけれども、個々のレコードの中の値の書き換えは出来る。 シャローコピーだから。それが嫌ならディープコピーを実装するしかない。 ディープコピーまでは不要、書き換え可能は承知で単にレコードの集合を参照 可能にしたいだけなのであればやはり返値は配列ではなくListにして、 return Collections.unmodifiableList(records);とでもするのが実装も簡単 だし全件コピーに比べてオーバーヘッドも少ない。 mainの中のループもfor(Object[] record: table.getAllRecords()){ ...と でもした方が読みやすい。
428 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 03:36:18.89 ] なんだと〜
429 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 06:11:06.80 ] >>427 ここまでくると異常者だな
430 名前:420 mailto:sage [2013/06/30(日) 07:39:46.72 ] >>421 getAttributeはテーブルクラスのメソッド名として不適切 100歩譲ってgetColumnAttributeなら可。 それにgetXxxx(index)はgetterと紛らわしい
431 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 08:49:45.89 ] getColumnAttribute 冗長な名前使っていてイライラせん? getColAttr じゃいけん?
432 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:12:00.03 ] >>431 そういう省略は好まれない。人によって省略したりしかかったり、またどう省略するかがまちまちだと困る。 スペルアウトするのが原則。
433 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:31:36.34 ] >>432 誰が好まん?
434 名前:デフォルトの名無しさん [2013/06/30(日) 09:45:57.18 ] >>433 コード読む人だろ。ColがColorなのかどうなのか定かじゃないだろ。 そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。
435 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:47:19.17 ] コンストラクタでIO使うのが常識なのか? init(入力ストリーム)ってメソッド作ったら初期化はコンストラクタでやれ コンストラクタで読み込むようににしろって先生に怒られた
436 名前:デフォルトの名無しさん [2013/06/30(日) 09:48:47.57 ] >>435 むしろ非常識でござろうな。IOExceptionをどう処理するつもりなんだ。
437 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 09:51:53.93 ] >>434 >>そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。 さすがジャバラー(笑) 冗長な名前はムダなんだけどなぁ バイトコードを解析した事ある?(笑)
438 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:05:05.10 ] >>432 >そういう省略は好まれない ところでprintlnとconcatはどう思いますか?
439 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:13:11.98 ] >>435 >init(入力ストリーム)ってメソッド作ったら コンストラクターが終わるとオブジェクトは構築されたと見なされる。 initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる。 >>436 コンストラクターでIOExceptionが出ると困るとか どれだけジャバドカタは低脳なんだ。
440 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:35:01.08 ] >>439 >>initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる どういう意味?
441 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:46:01.05 ] 例外処理を当たり前に使うような手合いにはIO例外は外で受ければいいので気にならないんだろう C言語の感覚が強い人はエラーは戻り値で判断するようにしたくなる 例外は文脈が吹っ飛ぶのであまり論理的でないしな コンストラクタ内例外はnewの失敗としては検出できないのでそりゃ躊躇したくもなるだろう
442 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 10:55:32.68 ] >>438 組み込みメソッド名の中には、そういう歴史的な理由経緯の省略がある場合があるが、それはそういうものだと 理解するしかない。 そういうメソッド名を自分が作るクラスに使うのはOKだと思うが、複合名詞を自分のセンスで省略するのは 好まれない。特に、Javaの世界では、スペルアウトするのが好まれる。なぜそうなのかは知らないが、 Javaのネーミングの規範として、スペルアウトしろと言われるのを良く見かける。
443 名前:440 mailto:sage [2013/06/30(日) 10:59:52.32 ] >>441 例えば編集可能な文字列クラス(OreString)を自作したとする。 new直後は中身のデータも文字列の長さも未定義で、 initして初めて長さ0の文字列になるとする。 initする前は「文字列」の概念として不完全な存在だから OreStringというオブジェクトは成り立っておらず、 この設計はおかしい。 この場合、OreStringContextとかOreStringDataとか いうクラス名にするか、 コンストラクターでOreStringを適切な初期状態にする。
444 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:00:32.03 ] Javaは常にTAB一段分のハンデがあるから長い名前は厳しいな
445 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:02:43.78 ] >例外は文脈が吹っ飛ぶのであまり論理的でない ジャバドカタは本当に頭が悪いな。
446 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:06:29.48 ] ここで>>445 に論理的な例外を説明する義務が発生しました ・逃げる ・説明する ・SAVE
447 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:08:53.55 ] ・ギムアップする
448 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:25:27.19 ] >>446 例外は「やりたいことが最後まできちんとできた」か 「やるべきことが全うできなかった」の二つしかない。 後者はcatchハンドラでまとめてエラー処理する。 極めて論理的じゃないか。
449 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:33:48.08 ] スペルアウトってなに? スキルアウトの親戚?
450 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:39:39.18 ] コンストラクタで例外はともかくIOは気持ち悪い インスタンスの構築とデータの読み込みは論理的に別の処理だからコードの上でも分けて欲しい
451 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:42:50.37 ] >インスタンスの構築とデータの読み込みは論理的に別の処理 それはクラスを「処理をするためのデータの集合」 としかとらえられない老害の発想だよ >449 精液を放出することです
452 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 11:54:24.81 ] >>448 try-catchで囲まれた処理が ( A, B, C, ......, J ) と構成されている やりたいことが最後まできちんとできたなら、全てのA-Jは成功している やるべきことが全うできなかった場合を NOT( A, B, C, ......, J ) とすると、君ならA-Jのどれが問題となる処理なのかをどう決定するか そしてそれをcatchに書くことに気持ち悪さはないのか 途中でやめ!で済まされるほど簡単な処理で構成されてるとは限らないんだよ
453 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:03:53.36 ] >>452 >A-Jのどれが問題となる処理なのかをどう決定するか 別のエラー処理をしたいなら A-Jごとにtry-catchすべき
454 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:15:13.20 ] try-with-resource使ってライーしてれば あんま場合分けはいらないけどね。 tryだけ書いてcatchは書かないとかよくやる。
455 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:49:01.53 ] 話が良く見えないが、コンストラクタの引数にストリームを渡すのじゃ駄目なのか?
456 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:55:52.91 ] >>445 ドカタは例外を理解できないのでだめ。 ↓ こんな感じ X x = new X(); try { x.init(sutoriimu); } catch (Exception ex) {//catchしないとコンパイルエラー log.error(ex); }
457 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 12:56:42.05 ] おっと>>455 の誤りでした、すみません。
458 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 13:10:00.67 ] コンストラクタにストリームは継承した時に不便かな ファイルふたつに分けなきゃならんのはめんどくさい
459 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 13:34:19.39 ] DI或いはそれに類する仕組みを使え
460 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 15:37:48.80 ] IOExceptionが出るような処理を static { } イニシャライザ内に書いて欲しくないよなー リソース読み込みなら、まあ譲歩してもいいんだけどさー。
461 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 18:29:51.29 ] >>437 インスタンス名、クラス名、メソッド名は簡略化して短くすることは推奨されていませんよ。 ましてや、インスタンス名はクラス名より短くする必要はないと公式に書いているよ。 もう少しよく使われているオープンソースであったりを読んだ方がいいと思います。 上げられたコードでもっというなれば、 getAllRecords()ではなくて getRecordsAll()ですね〜。 確かに細かいことかもしれないけれど、デザイパターン等しっかり学んでいる人から見ると 「インスタンス名、クラス名、メソッド名等の暗黙の了解・空気」等を感じ取れていないコードは稚拙に見えるのではないかな。 そしてそんなに難しく考えなくても、英語の強みをいかせるように書けばすんなり型にはめられますよ。 例えば、「getAllRecords()」は動詞と目的語が遠いですよね? 今回はたった三つの語の組み合わせなので大したこと無いように感じますが、後ろから修飾していないことに違和感を感じる人は多いと思いますよ。 日本語は頭でっかちに書いた方が美しいですが、英語だと・・・?
462 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 18:31:12.65 ] もちろん変数名等も。 連投失礼しました。
463 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:47:32.41 ] "get all records"と"get records all"をぐぐると・・・
464 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:48:40.12 ] ローカル変数までダラダラ長く書くやつは信用出来ない 経験的に数学出来ないタイプの人間が多い
465 名前:461 mailto:sage [2013/06/30(日) 19:52:11.80 ] ttp://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-tutorials-419421.html ここで入手できるJavaSE6のtutorialの、 [Language Basics]→[Variables]→[Naming]では次のように書かれています。 "When choosing a name for your variables, use full words instead of cryptic abbreviations." 続けて読み進めると、 [Classes and Objects]→[Classes]→[Declaring Member Variables]→[Variable Names]では、 "All variables, whether they are fields, local variables, or parameters, follow the same naming rules ...(略)" と、さらに念押ししてわざわざ最初で触れた[Naming]の項まで飛べるようにまでなっています。 次に、[Defining Methods]→[Naming a Method]では "By convention, method names should be a verb in lowercase or a multi-word name that begins with a verb in lowercase, followed by adjectives, nouns, etc." となっており、先ほどの「getRecordsAll()」に「おや?」っと感じた人はいるかも。 で、この辺りが読むべき空気であると思います。(ttp://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-tutorials-419421.html あと、例えばA,B,Cのシーンクラスがあったとしたら、 SceneA SceneB SceneC のようにA,B,Cを後ろに書くことでOS等がもつ名前順に並び替える機能を活かせます。 もっというと、それぞれがSceneクラスを継承したものであったら、名前順に並び替えるとsuperであるSceneクラスが一番上に来て最高です。 ソースコードが綺麗な人は当たり前のようにやっていたりいなかったり。。。 何はともあれ、ネーミングを短くしちゃう行為は公式で推奨されていませんよ。(しかも言語の基礎としてそれが書かれている・・。) >>464 タイムリーなレスサンクス。勿論ローカル変数に関してもです。
466 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:52:47.27 ] ググったけど、get records allとか言ってる奴皆無なんだけど。 ググり方が悪いのか?
467 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:58:12.68 ] 公式がいつも正しいとは限らない 特にjavaは各方面からボコボコに叩かれるぐらい洗練されてない言語 当然公式が間違えるのは前提として考えるべき
468 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 19:59:36.87 ] もう名前の話はどうでもいいので Iterable 実装してください
469 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:05:12.08 ] >>466 それは後ろにAll置くなら単数系のが合うからかと。証拠にググると皆無ではないよ。 それでも少ないのはプログラムの処理より普段使われている慣用句的に名付けてる人が多いから。 プログラムの意味的にはAllが後ろで単数系のほうがニュアンスとして正しいのでは?
470 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:17:26.52 ] そういや一時期JFrameのgetContentPane()メソッドに疑問もってた なぜJPanelはlまでしっかり書いてるのにgetContentPane()はlを省略しちゃったのさ!って 後ほどpane自体で別の意味があることを知りなるほどと思った
471 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:25:02.10 ] >>470 そんなの考えるまでもなく一瞬で理解できるだろ…w
472 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 20:44:30.18 ] 冗長なシンボル使ってると 自分がバカになった気がする
473 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:03:48.12 ] >>471 英単語自信あったのにpaneなんて単語にこれまで出会わなかった eclipseかbeans使ってりゃ冗長でも苦だとは感じないかな オートコンプリートあるし WIN32APIのような引数なら長い方が俺はましに感じる
474 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:06:13.45 ] 英語に自信があると専門用語も詳しいとか どれだけ自惚れが激しいんだ
475 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:16:29.85 ] 自分の好みを人に押し付けてると 自分がバカになった気がする
476 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:25:13.97 ] スコープをちゃんと短くすれば変数の名前は頭文字や略称で十分 長い識別子かかなきゃわからないならそれは悪いコードになっている証拠
477 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 21:48:50.90 ] 人はそれをコミュ障コードと呼ぶ 名をごまかし人目を避けることで何やってるかわからないようにしてごまかす 昨今のオープンソースやJavaの特性とは真逆 反抗したい精神・素直になれない精神はもはや中二病の延長ですまされるかなあ
478 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:09:39.61 ] カウンターはcountでなくcuntの4文字で おながいします
479 名前:デフォルトの名無しさん [2013/06/30(日) 22:11:50.85 ] >>478 なじぇ?
480 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:27:22.75 ] 本当に下品 神聖なるJavaを汚すと罰があたるぞ!
481 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:29:33.91 ] JAVAが神聖とか冗談でもキモい だが1996年頃はそんな奴が結構居た
482 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 22:45:55.23 ] Javaは、すみやかに普及した。その速度は、異常なくらいだった
483 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:21:17.27 ] >>418 CLASSPATH理解してなかったりするやついるくらいだから、まずはIDE使わない方が勉強にはなるんじゃないか。Javaのどこを勉強するかにもよるけど。
484 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:22:46.96 ] >>482 Java1.2くらいまでは、おもちゃ扱いじゃなかった?
485 名前:デフォルトの名無しさん mailto:java [2013/06/30(日) 23:36:57.83 ] てことはやはりJVMあたりから?
486 名前:デフォルトの名無しさん mailto:sage [2013/06/30(日) 23:53:25.85 ] >>483 ドカタの過半数はclasspathを理解してないんだから 無問題
487 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 01:24:57.01 ] >>478 cntじゃないんだ
488 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 01:39:13.20 ] そこはJVMじゃなくてJITだろ
489 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 02:40:05.19 ] >>486 ドカタ目指すなら勉強は不要だろ。
490 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 02:51:13.36 ] 単語省略するときは、まず母音から削るかな
491 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 03:53:04.59 ] 省略するときは、適当な1文字にしてしまう
492 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 06:20:46.52 ] コントローラにSQLをコピペするだけの簡単な仕事です
493 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 12:25:53.06 ] 1文字変数が許されるのはIteratorとcatch節までだよねー
494 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 13:49:42.09 ] >>493 そうだな、あとはv1,v2...と二文字にするべきだな。
495 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 17:41:52.72 ] コントローラーにSQLってのがまさにドカタの発想だな struts使ったまではいいが、MVCの分離が 理解できなかった典型例
496 名前:デフォルトの名無しさん [2013/07/01(月) 17:46:12.19 ] mp4をmp3に変換する方法ってありませんか? ffmpegだと遅いのでこれ以外でお願いします
497 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 18:20:06.62 ] まず、エンコスレに逝きます
498 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:39:46.53 ] すみません文字列がsplitできるかできないかで判定するにはどうすればいいですか? 例えば String line = "go kyoto"; String verb = line.split(" ")[0]; String place = line.split(" ")[1]; のような場合は問題ないと思いますが、lineがsplitできる保証がないときの判定法が知りたいです。 例えばもしline="go";だった場合、 ArrayIndexOutOfBoundsExceptionがでます。 (スペース" "は無いけれど[0]のsplitはできている?どちらにせよsplitできないと[1]を指定した時点で例外でますよね。)
499 名前:デフォルトの名無しさん [2013/07/01(月) 19:40:31.44 ] >>497 エンコすれ行ってきます
500 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:54:55.93 ] >>498 splitが何を返すか見直してこい
501 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 19:57:45.50 ] >>498 String [ ] result = line.split(" "); してから result.lengthで判定だ。
502 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 20:34:33.81 ] コントローラーにガンガンなんでも入れちゃうのはむしろRailsでよくある症例だと思う。 ぶっちゃげRailsももはやドカタフレームワークだけど。
503 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:02:33.28 ] >>498 StringTokenizerを使う StringTokenizer st = new StringTokenizer(line, " "); if (st.countTokens()>=2) {//分割できる String verb = st.nextToken(); String place = st.nextToken(); }
504 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:20:10.24 ] indexOfでええやん いちいちオブジェクト作るなよ
505 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 21:32:56.21 ] Javaドカは作業ファイルを多用するので、その程度のコストは全く問題になりません
506 名前:デフォルトの名無しさん [2013/07/01(月) 23:27:57.25 ] 長大な文字列の極めて終端に近いところで最初の区切り文字が出てくる場合や最後まで区切り文字が出てこなかった場合 事前検索してからの分割はコスト的にどうなのだろうか
507 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) 23:31:20.42 ] 気にするな パフォーマンスなんか土方には理解出来ない cを使えるようになってからパフォーマンスとか気にすればおけ
508 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 00:29:09.24 ] 土方仕事の実行時間はほぼ全てIOが占めるからね 細かいことはどうでもいいのよ
509 名前:デフォルトの名無しさん [2013/07/02(火) 09:17:43.72 ] \x2022 Windows Internet Explorer ブラウザを終了して続行しろと出て、全く先に進めません。 ブラウザは全部閉じています。 検索して調べたけど、「\x2022 Windows Internet Explorer」 について全然でてこなくてわかりません。 どうすればいいのですか? 環境はWIN7、IE10です。
510 名前:509 mailto:sage [2013/07/02(火) 09:21:19.56 ] 失礼しました。 アップデートが上手くいかないのです。
511 名前:509 mailto:sage [2013/07/02(火) 11:23:19.97 ] 再起動してから試しても、何度やっても途中「\x2022 Windows Internet Explorer 」 ブラウザを閉じろの繰返しだったのですが、先程すんなりと完了できました・・・。 設定など一切変更していないので、何が原因だったかわかりませんが とりあえず完了できたので、お騒がせしてすみませんでした。
512 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 11:40:05.59 ] 何のアップデートなのかも書けないとは 残念な奴だな
513 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 11:49:53.18 ] ごめんなさい、7 Update 21 から25へのアップデートでした。
514 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 12:14:40.58 ] windows 7のうぷだてとな
515 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 14:27:27.68 ] livedoor.blogimg.jp/news23vip/imgs/1/d/1dba13cc.jpg 何が悪いのこれ?
516 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 14:45:51.37 ] >>515 Cジジイの頭が悪い
517 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 16:53:55.65 ] と見せかけた関数型言語マニアなのかもしれない
518 名前:デフォルトの名無しさん [2013/07/02(火) 16:59:00.97 ] mp4とかの動画フォーマットからオーディオを抜き出せるライブラリってないですか?(mp4だけでもいいです) ググってもフリーソフトしか見つかりません
519 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 17:01:46.98 ] 便利なオープンソースやAPIを使えてwebに強いほうが良いに決まってるのに。 そして初めての言語がオブジェクト指向な方が得に決まっている
520 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 17:12:03.44 ] >>518 ffmpeg
521 名前:デフォルトの名無しさん [2013/07/02(火) 19:41:53.19 ] >>520 ちょっと見てみたけど遅いです 直接吸出しできるのってないですか?
522 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:27:02.82 ] >>521 まず、直接吸い出せるツールを見つけてこい
523 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:28:07.51 ] ICカードを扱う無料ライブラリありますか?
524 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:29:36.65 ] >>523 まず正しく質問できるだけの知識をつけてこい
525 名前:デフォルトの名無しさん [2013/07/02(火) 20:48:00.82 ] >>522 ffmpegで設定変えたら速くなりました ありがとうございました
526 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:49:03.13 ] >>523 業務用で住民基本大腸カードを扱うなら LASDECから入手が必用(C++)。 SuicaならたぶんC++向けAPIは提供されているだろう。 SmartOnなどの特定製品もSDKが販売されているだろう(たぶんc++)。 つまりお前のスキルでは無理。 それ以外のカードは無理ゲーに近いけど 意外とAndroidで探した方が行けるかも
527 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 20:55:36.79 ] ICカードは個人には仕様公開しないから働かないと使えないよ
528 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:05:10.74 ] >>527 何のICカードかにもよるが、個人で開発できるよ。
529 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:06:50.07 ] ICカードにJVM移植した「JavaCard」って、あれからどうなったの…
530 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 21:06:56.73 ] それはリバースエンジニアリングだろ 正式な仕様は非公開だよ
531 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) 23:49:41.77 ] >>530 SDK買っても暗号化領域は読めないだろうし、そもそも書き込めない場合が多いだろう。 その意味では、法人でSDKを買っても仕様が全て公開されるわけではない。 逆に、個人でも見ることができる範囲でデータを読むことは出来る。
532 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 01:46:07.84 ] 質問を読めない回答者が多いね 「ICカードを扱う無料ライブラリありますか?」 って質問なんだから、仕様が公開とか非公開とか関係ない ライブラリがあるのかないのか答えろよ
533 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 06:05:15.69 ] >>532 ググれ馬鹿
534 名前:デフォルトの名無しさん [2013/07/03(水) 08:11:16.76 ] 今すぐ手軽にJavaでprintfで文字を表示させるレベルの簡単なプログラムを組みたいのですが Windowsで無料で最短の開発環境を教えて下さい
535 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 08:15:43.27 ] eclipse
536 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 08:27:43.69 ] NetBeansのが手間無しだろ
537 名前:デフォルトの名無しさん [2013/07/03(水) 09:01:31.78 ] 何度もごめん eclipseでC++でいう .cpp と main関数はどう作れば良い?
538 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 09:30:47.98 ] mainを作るチェックボックスをクリックする
539 名前:デフォルトの名無しさん [2013/07/03(水) 10:06:28.46 ] test って名前のプロジェクトを作って その中にパッケージを作って その中にmainって名前のクラスを作るところまでは分かったけど そこからが分からない main関数を作っただけじゃ実行出来ないの? 選択にはメイン型が含まれていません ってエラーが出る
540 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 10:08:11.70 ] main関数が入ったクラスを右クリックして実行ってすると 実行できるよ
541 名前:デフォルトの名無しさん [2013/07/03(水) 15:48:35.13 ] ごめん 自己解決した 付き合わせてすまない
542 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 16:12:25.57 ] ムッキー
543 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:12:27.97 ] メンバの外部からの読み取りはOK、変更は禁止。といった、publicとprotectedの間くらいの設定をしたいです 大量のクラスメンバに対する大量のgetterメソッドを作るのが無駄な気がするので・・・ みなさんどのように対応していますか?
544 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:14:44.88 ] 大量のgetterをIDEのプロパティ自動生成機能で作る 手打ちしなければ全く気にならない
545 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:26:45.85 ] なるほど、ありがとうございます。
546 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 19:28:22.05 ] アノテーションでgetterとかを自動生成するライブラリとかあった気がする 使ったこと無いけど
547 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:25:42.30 ] c++で言うとconst参照みたいなのはJavaには無いのですか?
548 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:26:59.50 ] 無い
549 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) 22:27:50.00 ] ない イミュータブルなオブジェクトを使うとか 防御的コピーするとかしろ
550 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:23:06.78 ] Javaでデータベースを操作するアプリを作ってるのですが質問があります 毎日レコードが追加されるテーブルがあります このテーブルを最新の半年分の情報とそれ以前の情報で別のテーブルに分けて管理する設計って悪い設計ですか? 新しい情報と古い情報は同じサーバーにあり格納するテーブルだけが違います アクセスは新しい情報に集中します
551 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:47:00.49 ] >>550 あまり良い設計だとは思わないけど、実物見ないと何とも言えない。 アプリの形態はWeb? DBMSは何? 一日に何レコード追加されるの? 1レコードあたり、およびトータルのデータ量は? たぶん、適切なインデックスを張るとか、最近のデータだけmemcachedするとか、工夫の余地は色々あると思う。 あと、Javaよりもデータベースのスレで聞いた方かいいような。
552 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 06:53:07.50 ] DB板で聞くべき話だとは思うけどどのRDBMSを使っていてどんなスキーマでどんなクエリ を投げるのか解らないと誰もアドバイス出来ないと思う。 ただし一般論としては、そういうテーブル分割を手作りすると古いレコードの移動とか それに伴いアプリ側で生成するクエリを変更するとか、運用面で余計な手間やバグの 温床を抱えることが多い。RDBMSに詳しくない人が思いつきレベルで分けたのであれば 率直に言ってあまり関わりたくない、そういう設計。 まずはインデックスでどうにかならないか、あるいはシャーディングなどと呼ばれる 機能が使えないか調べることをお薦めする。
553 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 08:46:50.09 ] >>550 世の中にはOracleパーティショニングというものがあってだな つまり性能上テーブルは分けるけど概念的には同一 というのは普通にあると言うことだ
554 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 09:40:16.30 ] >>550 RDB論的には間違ってる(ことが大半だと思う)。んだけどもじゃあ絶対そんな実装しないかというとそんなこともない。 実際そういうの作ったことあるし、よく見かけもするねー。 理由はパフォーマンスだったり運用上やら他のシステムとの兼ね合いやら。 要は状況次第ってことなんであまり回答になってないんだけど。
555 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 10:24:46.16 ] データ保存期間が数年で、保存期間MAXになるとレコード数が1000万レコードを超えるような トランザクションデータの場合、年あるいは月によるパーティショニングか、 「直近のテーブル+それ以前のアーカイブテーブル」という構造にすることは良くある。
556 名前:デフォルトの名無しさん [2013/07/04(木) 10:43:24.31 ] abstractクラスのabstractメソッドの引数にenumを持たせたい場合 どういう設計をすればいいのでしょうか イメージ的にはenumを定義しないとコンパイルエラーになるようにしたい そしてenumの中身は継承先々で用意したいが、名は統一したい
557 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 15:29:12.90 ] abstractメソッドの引数にenumを与えたい、ただしどのenumクラスを使うかは 継承先に決めさせたい場合は普通にGenericsを使うかなぁ。 public abstract class AbstractSample<E extends Enum<E>> { public abstract void sampleMethod(E item); protected abstract Class<E> getEnumClass(); public void sampleMethod(String name){ sampleMethod(Enum.valueOf(getEnumClass(), name)); } public class Sample extends AbstractSample<Sample.MyEnum>{ public enum MyEnum{enum1, enum2, enum3} @Override protected Class<MyEnum> getEnumClass() {return MyEnum.class;} @Override public void sampleMethod(MyEnum item) {... getEnumClassは任意だけれども上記のようにString版のメソッドの実装も抽象 クラスで与えたいときなど便利。 > そしてenumの中身は継承先々で用意したいが、名は統一したい 「名は統一したい」というのがSample.MyEnumのように継承クラスでは必ず MyEnumというenumクラスを内部クラスとして宣言する、ということを強制する という意味なら多分無理。
558 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 17:37:45.07 ] >>557 abstractクラスのAクラスを継承したBクラス・Cクラス・・・内で private enum Foo { } を定義していないとコンパイルエラーにしたい(可能なら)というのと、 「名は統一したい」というのは、Fooという名を統一して中身を各クラスで別に用意したいという意味です。 Bクラスでは private enum Foo { BAR, BAZ } Cクラスでは private enum Foo { QUX, QUUX, CORGE } というようにです。普通こういう場合、単なるメソッドならばsuperクラスのAクラスで abstract protected void foo(); として、継承先で @Override private void foo() { } ですみますが、 abstract protected enum Foo; なんていうのは許されませんよね? となると、「Bクラス・Cクラス・・・でFooという名のenumを自分で定義する」というプログラムから離れた所にルールが生まれてしまいすこし嫌です(名がFooである保証がない?)。 可能ならば、このFooというenumをもたなくてはいけないことをsuperクラスで定義できないのかなと思って質問しました。
559 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 18:25:03.50 ] 設計が変なんじゃないの? enumは1つのファイルで作って使う値を全部列挙して 具象クラスでその値を使う時に無効な値をはじくようにしておけば? public enum Foo { BAR, BAZ, //Bクラスで有効 QUX, QUUX, CORGE, //Cクラスで有効 } abstract class A { abstract public boolean isValid(Foo item); }
560 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:21:41.88 ] >>559 そうなんです。そしてそう書いてました。 だけど、Cクラスで使うときにBクラスでしか使わないBAR,BAZが可視なのを何とかならないかなとおもいました
561 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:26:20.46 ] >>550 twitterがそんな感じの設計をしてるね 適当にぐぐって見つけた記事 www.atmarkit.co.jp/news/201004/19/twitter.html
562 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 19:49:13.77 ] Twitterが必要とする設計が遙かに小さいスケールでも有効かというと単にオーバーキルで 手間暇増えるだけだったり。 インデックス設計の評価やDBMS組み込みのパーティショニングを検討するに一票。
563 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 21:36:28.52 ] 年度別テーブルみたいなアプローチはインデックス貼るコストも安くなるからな JPAが対応したら面白いがOracleさん的には困るか
564 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 21:58:41.98 ] >>550 それは水平分割って技法。DB設計ではアンチパターンに含まれる。 レプリケーションやインデックス、その他もろもろ全ての「正しい」解決法を試して それでもパフォーマンスの問題が解決しなかった場合のみ使って良いというもの。
565 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:00:46.92 ] いつになったら板違いの話題をやめてくれるのかな
566 名前:デフォルトの名無しさん [2013/07/04(木) 22:03:54.36 ] >>565 Javaの話題あんの?ないんだったら黙ってろよ。
567 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:05:00.37 ] >>564 何言ってるんだ。 パーティショニングこそ水平分割だろうが。 それに、レプリケーションなんか関係ないし。
568 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 22:15:51.10 ] 半年分というのが、どういう機能要件なり性能要件に基づくものかがわからない限り、 どんなアドバイスも的はずれな可能性大なんだけど。
569 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) 23:18:22.43 ] >>550 は悪い設計ですか? と聞いてるだけだから 満場一致で悪い設計です と答えて終わりじゃないか
570 名前:デフォルトの名無しさん [2013/07/04(木) 23:22:52.28 ] >>569 さすがコミュ障
571 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 00:02:14.86 ] 半端な知識と仕込みで手を出しても無駄に苦労するだけの悪い設計。
572 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 02:49:37.88 ] JDBCは単なるSQLインタプリタなので、 デザパタ的にあまりおもしろい設計はできない。 他のDBライブラリはしらん
573 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 02:52:43.37 ] >>572 またてけと〜なことを。
574 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 06:45:23.14 ] JDBCはSQLの中身には関知しませんよ クエリとデータを右から左、左から右へ流すだけ
575 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 07:37:50.03 ] SQLインタプリタになっているJDBCやドライバの実装がどれほどあることやら。
576 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 08:34:20.80 ] 「リレーショナルDBの世界がどうオブジェクト指向化されるんだろ」と JDBC発表にワクテカしてたのは俺だけか。 SQL文を文字列で用意する必要があると聞いてがっかりしたず 「Table」に相当する抽象クラスがJDBCに出てこないってどういうことよ
577 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 12:23:44.61 ] 実質スキーマレスになってしまうからじゃないか? それリレーショナルなん?
578 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 14:22:08.65 ] JDBCにODBC相当物以上を期待していた人なんていないでしょ。
579 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 15:17:22.42 ] あのころはオブジェクト至高(キリッじゃなくて write once run everywhereで売ってたような
580 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) 16:40:31.36 ] >>576 O/Rマッピングすればいいだけだろ
581 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:30:46.99 ] >>576 言ってること目茶苦茶すぎ >>574 が言ってるように、受け流すだけを担ってこそオブジェクト指向だ おめぇさんはよぉ、銭湯いって風呂上がりのフルーツ牛乳が見当たらないからって キレちゃうような輩なのか? 俺はきれるけどね
582 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:32:58.87 ] ただ、キレる相手は番台さんじゃねーってこった
583 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:34:00.46 ] javaee7にlinq入ったんだってね コレクションだけらしいしViewのためだけにあるのだろうけど
584 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 02:43:58.43 ] w
585 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:43:21.82 ] abstractクラスは便利ですね public abstract class AbstractJInternalFrame extends JInternalFrame { private int x, y; private int width, height; private String title; public AbstractWindow(int x, int y, int width, int height, String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable) { super(title, resizable, closable, maximizable, iconifiable); this.x = x; this.y = y; this.width = width; this.height = height; this.title = title; } public void resetPerspective() { System.out.println("Reset Perspective: " + title); setBounds(x, y, width, height); show(); } // 以下フィールドのgetterのみ } みたいな設計が本当に便利に感じる。eclipseのReset Perspectiveの簡易版みたいな感じ。 iframes = new HashMap<String, AbstractJInternalFrame>(); あたりでまとめてたとすると、ActionListenr等で for(Map.Entry<String, AbstractJInternalFrame> f : iframes.entrySet()) f.getValue().resetPerspective(); 継承先でsetLocation(int, int)等で好き勝手できるけど初期値は断固としてsuperが守ってるみたいなイメージ。
586 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:47:24.55 ] あっそ 他の全員は知ってるから粉みかんは3行以内で頼む
587 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 07:55:33.83 ] あぁコンストラクタ名が間違ってるのは仕様でござます
588 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:19:53.00 ] 抽象クラス使うやつは設計下手なザコ
589 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:40:10.98 ] 抽象クラス使えない=クラスすら使えない(クラスはオブジェクト) ってことに気づいているのだろうか クラスも使えないとなると設計がうまい下手の段階までいけない件について…
590 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:46:01.06 ] 意味不明 抽象クラスなんてテンプレート実装作るだけの道具にすぎない 多態はインターフェイスが基本で、抽象クラスは必須ではない
591 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:54:30.60 ] >多態はインターフェイスが基本で インターフェースの無い言語はOOPではない と言いかねないJAVAドカタの珍説には いつも驚かされます
592 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 08:54:40.24 ] 最近ちょくちょく抽象クラスがどうのこうのって話になるな 同じ奴が繰り返してるのか?
593 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:01:51.43 ] 可能な限りインターフェースってのは全く同意だよ そもそも公式がうたってますし だけどいつも何でもかんでもインターフェースにしちゃうのは大反対 特に、extendsできなくなるのは場合によっては保守性が上がる でもって、インターフェースが一番活きるのはこの時なんだよね〜仕様的にも。
594 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:10:31.68 ] Java 8からはインターフェースも実装を持てるようになるから 抽象クラスと何も変わらなくなるよ
595 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:11:57.97 ] extendsの大部分は委譲で済んじゃうんだけどな。IDEの自動生成も使えるし。
596 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:12:23.36 ] >>594 抽象メソッドはprotectedにするもんだ インターフェイスじゃできない
597 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:14:13.71 ] protected使うなんてレアケースだろ。一般論として語るのは……
598 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:19:35.46 ] まぁでも何もかわらなくなるってのは 先の「抽象クラス使うやつは…」のくだりと同じで極論すぎるよ そしてprotectedがレアケースだとも思わないなぁ それはニアリイコール抽象クラスをレアケースといっているようなもんだし…
599 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:22:09.09 ] Template MethodやFactory Methodはprotectedで十分なはずでしょ MS系だとそれこそ仮想メソッドはほとんど全部protectedだったりするが Javaってそのへん適当だよね
600 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 09:37:33.89 ] abstractクラスのfield活かした方が明らかに良い場合も無理してinterfaceなの? それはちょっとどうなんだろう interfaceだと子クラスに丸投げだよね?
601 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:02:17.81 ] ファクトリメソッドをprotectedはありえねーよ。 テンプレートは使う側ならprivateでなんも問題ないな。 仕様の方ならインターフェースで十分っつかpublicにしないと不便極まりないし。
602 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:11:56.80 ] >>601 >privateでなんも問題ない privateはオーバーライドできません >インターフェイスで十分 デザパタ知らないの? 移譲を使った設計と混同してるのでは?
603 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:21:35.57 ] ある機能を実装するとき、個々のクラスやら何やらで振る舞いが違う部分と それらを呼び出す形で固定化できる部分に切り分けるのがテンプレートメソッドパターンなわけで。 固定化してる方はオーバーライドする必要が全く無いから、 外部からアクセスする必要がないならprivateで何の問題も無い。
604 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 10:23:20.22 ] Factory Methodがprotectedで十分とか
605 名前:デフォルトの名無しさん [2013/07/06(土) 10:26:40.12 ] どう考えても両方使うだろ… interfaceだけにしろ、protectedだけにしろ、privateだけにしろ… 何も考えていない証拠だ
606 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 12:45:38.25 ] 抽象クラスはそのクラスの実装者からみたら窮屈に感じるが protectedメソッドを実装するだけだと副作用が無くて安全にも感じる ディスパッチ目的の抽象クラスだと実装がやたら手続き型でも気にならない
607 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 14:56:49.67 ] >抽象クラスはそのクラスの実装者からみたら窮屈 イミフ >ディスパッチ目的の抽象クラス イミフ
608 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 15:27:10.58 ] まずインターフェイスを用意して、それを実装する際に楽をする、してもらうために 抽象クラスも使うかな。両方使わないと不便。 APIに立ち現れるのはインターフェイスだけで実装クラスは基本隠す。
609 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:07:30.32 ] 抽象クラスは何がダメかってスタンドアロンじゃない前提の癖に再利用性が悪いところだ
610 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:15:24.89 ] あるインタフェースのひな形だったりフレームワークへのエントリポイント だったりするからな。ある方策に従わせるための抽象クラス
611 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:17:13.39 ] >再利用性が悪い 設計がKUSOなだけじゃね?
612 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:30:23.89 ] 逆に他に実装可能な手段があるのにあえて抽象クラスを使うことが正解というケースがごく稀にしかない
613 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:31:20.92 ] ある抽象クラスのサブクラスが1個しかないならKUSO 分ける意味ねーもん 将来的に使いたいとしてもその将来っていつ来るの?って話
614 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) 23:40:15.62 ] 派生クラスに共通する役立つメソッドを抽象クラスで提供しよう ↑抽象でないクラスに分離してメンバに持たせるのが正解
615 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 04:42:24.53 ] >>613 例え一個でもわけた方がいい場合は間違いなくあるよ だがabstractクラスはサブクラス沢山抱えたときにまとめて扱うのがいいよな
616 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 06:23:55.89 ] abstractクラスを継承したabstractクラス みたいな構造のデザインパターンを経験しないと メソッドにつけるfinalの有り難みが勉強できないんじゃないかなとは思う
617 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 06:27:19.94 ] 出たー酷い失敗設計
618 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 10:02:43.44 ] 将来どこを修正する可能性があるかを予想できないと抽象化は難しい 二度といじらないコードを抽象化するのは無意味だ 工期、予算の都合で今はしないけど次のサイクルでこれこれやる ってくらい確実にわかっていなければ抽象化する必要はない 抽象化しなかった場所に修正が入るってなら設計上のミスだ かむしろマネージャーの開発スケジュールミスだ
619 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 10:53:06.26 ] テストの為に抽象化することもあるんですが
620 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:09:58.78 ] >将来どこを修正する可能性があるかを予想できないと抽象化は難しい んなこたーない。 現在の機能要件と拡張性要件に基づいて 設計するだけ。
621 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:35:50.06 ] 要件なんてあてにならない 未来は神様にも予言できないんだよ
622 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 16:45:01.89 ] なんか良くわかんないんだけど、具象クラスしか作らないのかな
623 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 19:10:33.52 ] 将来のためのインターフェースなんて、>>618 くらいじゃない? あとは、縦割り部署のインターフェースとか、、、 昔、DB部門が作ったインターフェースで、笑えないヤツがあったのを思い出した テーブルの指定がひとつだけで、結合が全く出来ないという
624 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 19:55:56.48 ] ちょっと何言ってるかわかんないですねー
625 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:00:01.97 ] Javaやるとこうなる シャブみたいなもんだよ
626 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:07:26.86 ] テーブルごとにクラス分けしててselect XXX from A,B(A,Bはテーブル)が考慮されてないってことか 通常のオブジェクト指向でもそうだが、ふたつのクラスの相互作用を表す方法に苦慮する クラス(A+B)を作るのは負けかなって思ってる
627 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:20:41.50 ] 相互作用は簡単なものならイベントを使う 複雑ならプロトコルをクラスにする 通信対象の選択自体が複雑ならルーティングもクラスとして作る 面倒だが基本中の基本だろ
628 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:25:47.11 ] 一部だけ人に書かせるときはAbstractが楽。特に土方に。
629 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:26:20.97 ] >>626 そこでLINQですよ C#の劣化版猿真似は得意だろ?
630 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:56:30.08 ] >>628 最悪だろ 土方に正確なオーバライドは無理
631 名前:デフォルトの名無しさん mailto:sage [2013/07/07(日) 20:57:31.73 ] >>629 無駄な通信が発生するのは同じだろ
632 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 00:15:20.02 ] >>629 まともな設計ならLINQはあくまでモデルの中で使うので同じことですよ
633 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 05:12:26.81 ] abstractクラス継承したabstractクラスはデコレータパタンとかでたまにみるね
634 名前:デフォルトの名無しさん [2013/07/08(月) 05:41:47.78 ] Eclipseで、 実行(Ctrl + F11)のときは文字列を出力させず、デバッグ実行(F11)のときだけ文字列を出力したいです。 プログラムの中でデバッグ実行かどうか判別すればいいと思うのですが、 System.getProperties() で確認したところ、デバッグ実行のときだけセットされるプロパティは無さそうでした。 何かいい方法ありませんか?
635 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 06:35:26.12 ] リファクタリング機能をつかう
636 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 12:02:52.75 ] デバッグ実行のときにプロパティをセットすればいい
637 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 13:35:25.98 ] デバッグ実行だと動作遅くなるからベンチマークとってとか、間違ってそのままリリースして 遅い端末だとデバッグ情報が見れるw
638 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 19:52:33.17 ] >>634 デバッグ実行時だけログ出力レベルをfineにすればいい 普通はlog4jだろうが俺はしらん
639 名前:634 [2013/07/08(月) 21:16:20.57 ] すみません、説明不足でした。 頻繁に実行とデバッグ実行を切り替えたいため、 ソースコードや設定ファイルを変更することなくやりたいのです。
640 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 21:45:51.75 ] main メソッドを持つクラスを 2 つ作って起動し分けるとか
641 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 21:46:51.82 ] だったらコマンドライン引数でいいだろ
642 名前:デフォルトの名無しさん mailto:sage [2013/07/08(月) 23:48:53.47 ] 最初のブレークポイント前後が100ms以上開いたら 「現在デバッグ中」フラグが建つということでどうだ?
643 名前:デフォルトの名無しさん mailto:sage [2013/07/09(火) 00:49:29.87 ] AspectJとかで実行時に文字列出力コードを織り込むとか
644 名前:デフォルトの名無しさん mailto:sage [2013/07/09(火) 08:44:37.39 ] >>630 なぜInterfaceやスクラッチだと正確にできるの? どれでも正確にできないなら比較の問題。ベターなもので満たせないなら、受け入れテストしてない方が悪い。自分がサボってるのを土方のせいにするなよな。
645 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 21:50:36.58 ] visual studio+C#でできるデータベース操作のパクリはjava+eclipseには無いのですか? テーブルアダプタやデータソースのことです
646 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:10:37.58 ] visual studioがわからん人にはどういう機能かわからんからなぁ。 表形式でデータ見られたり、定義情報が見られたりするやつのこと?
647 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:15:56.63 ] >>646 データベースへアクセスするためのクラスを自動で作ってくれる機能です コードを一行も書かなくてもデータベースへのアクセスからフォームへのバインドまでしてくれるすごいやつです
648 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) 22:42:34.20 ] >>647 その程度なら、なければ自作しろ。 俺はそんなの全然ほしくないが。
649 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 08:08:32.35 ] 山ほどあるから。
650 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 09:51:16.96 ] JDBCが好き
651 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:30:36.05 ] 最強のドカタ言語を舐めるなよ
652 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:32:03.56 ] データベースからAccessみたいな環境を一式用意してくれるみたいな? そいやJavaでクラサバとかしたことねーなぁ
653 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) 23:56:35.23 ] >>652 え
654 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 01:45:41.14 ] 社会人になればOracle Databaseは当たり前
655 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 05:14:30.11 ] オッス オラ狂う
656 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) 06:08:26.90 ] でもメディアにのる格好いい事例って大抵はEC2の上にMySQLやPostgreSQLをデプロイ したようなのが最近は多い。 実際に儲かるかはともかくとしてOracleを使った事例ってあまり若い人にアピール しないというか、こういうシステムに関わってみたいという対象ではない気がする。