[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/18 20:39 / Filesize : 277 KB / Number-of Response : 1025
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java入門・初心者質問スレ Part.5



1 名前:デフォルトの名無しさん mailto:sageteoff [2017/09/29(金) 17:53:25.24 ID:XnizQSCA.net]
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.4
mevius.2ch.net/test/read.cgi/tech/1498828456/

367 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:16:09.26 ID:ImI1HNcW.net]
俺だったらPositiveNumberみたいなジェネリッククラスを作るか、@positiveみたいなアノテーション作る

368 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:51:11.96 ID:eddodMAs.net]
>>354
ありがとう
>空のオブジェクト作って後でsetter使
>って入れるのも微妙だし
私もそう思ったのですがコンストラクタで例外を投げるのは良くないというような

369 名前:意見をどこかで目にしたので聞いてみました
>>358
ふむふむ
個人的にはそもそも作らせないって方が好みな感じがします
調べてみます情報ありがとう
[]
[ここ壊れてます]

370 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 02:19:42.12 ID:sRaOGV/D.net]
コンストラクタとセッタに同じことを示す文が複製されるのもちょっと良くないな

371 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 03:04:30.08 ID:nQXUW6Dj.net]
>>352
クソ?しかし API にも new した時に例外出すやつ沢山あるわけだが、そういうのは全部クソ?

372 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 07:16:59.94 ID:fX/oTiYO.net]
>>361
コンストラクタで最初に値をセットして後から変更できないようにsetterは持たせないというつもりでした
(フィールドをfinalにしているのはそのためです)

373 名前:デフォルトの名無しさん [2017/10/30(月) 07:22:42.37 ID:b9ZBDRTb.net]
>>356
オブジェクト作る前にValidatorクラスでチェックするだけ

374 名前:デフォルトの名無しさん [2017/10/30(月) 07:24:54.59 ID:b9ZBDRTb.net]
>>362
全部クソ。
オブジェクトの責務をわかっていない。

375 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:14:47.50 ID:JH+/yPWP.net]
インスタンス変数(やクラス変数)は
そのオブジェクトに付属するデータだから
コンストラクタなどでデータチェックの責務を
オブジェクト自身に持たせるのはおかしくない

ただしチェックが複雑化したときに
責務を委譲するのもアリ



376 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:43:10.77 ID:5RpC60IR.net]
>>366
そのただしが問題
検証はシステムの関心ごとだから
集約するべきでオブジェクト毎に持つものじゃない
コンストラクタはオブジェクトを初期化するという
特別な処理であってここでデータチェックが必要になるのは
責務の分離ができてないシグナルみたいなもの
staticメソッドでtryCreateという名前なら100歩譲ってオーケーだ

377 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:54:32.49 ID:5RpC60IR.net]
負の値を持たせたくないのは業務の要件なんですよ!!

378 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:55:34.55 ID:JH+/yPWP.net]
>>367
>検証はシステムの関心ごとだから
>集約するべきでオブジェクト毎に持つものじゃない

責務を分離するのは重要だがそのオブジェクトの
規模が大きくなって複雑化するにつれて分けていくもの

たとえば生成の責務をファクトリに分離してもいいが
何でもかんでも全部ファクトリにする必要はない

だからコンストラクタでチェックしてもいいし
バリデータみたいのに分離してもいい

379 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:56:23.29 ID:5RpC60IR.net]
思わず激昂してしまいましたがとにかく小生が言いたいのはコンストラクタで例外投げるのおかしいですよということなんです

380 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:00:29.54 ID:5RpC60IR.net]
>>369
どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!!

じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ

381 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:01:41.86 ID:4hMzyEUs.net]
>>368
業務要件で例外処理を考えてるってなかなかおもしろいね

382 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:04:21.57 ID:5RpC60IR.net]
>>372
どういうこと?

383 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:06:06.45 ID:5RpC60IR.net]
もっと具体的にちゃんと説明して
小生良い事言ってるからそれちゃんと説明して

384 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:12:06.74 ID:JH+/yPWP.net]
>>371
いやそれは極端でしょ
OOPの要素はどれも使い分けじゃないの?

複雑化したら切り出すが抽象化にはキリがないので
IF文を全部ポリモーフィズムにするわけでもないし
最初から全部デザパタにするわけでもない

385 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:17:39.73 ID:5RpC60IR.net]
>>375
ifの話じゃないだろ
なんでもかんでも一緒にするな
極端なのはそなたの方

こなたが言いたいのはとにかくコンストラクタでチェックするのおかしくないですかってこと



386 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:21:09.70 ID:JH+/yPWP.net]
>>376
コンストラクタでチェックするのはおかしくない
JavaのAPIでやってるくらいなんだから
むしろやるなって方が押しつけ

387 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:22:44.13 ID:5RpC60IR.net]
コンストラクタでチェックして例外投げるのは
ようわからんけどオブジェクト作ってみるわー
でけへんかったわーゲヘヘーと言ってるようなもの
文明人のやることじゃない

アサートを使うべき
アサートは本番では動かさないからね
検証は専用のオブジェクトでやりましょう

388 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:25:45.46 ID:5RpC60IR.net]
>>377
アホかお前は、お前はアホか
JavaのAPIははっきり申し上げてクソでござる
クソがやってるから大丈夫なんだとはならんだろうが
どこがクソかはお前に任せるよ

389 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:46:48.33 ID:JH+/yPWP.net]
アサートでもいいが例外投げてもいい

つーかコンストラクタで例外投げるのが大問題なら
Javaの言語仕様でできないようにするだろ……

普通に考えて2ちゃんの一個人より
Java(API)のやり方の方がいいわ

390 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:01:28.68 ID:5RpC60IR.net]
>>380
ファイナライザでは例外投げないようにしましょう
というのがベストプラクティスだけど言語仕様ではできるでしょうに

言語仕様ってその程度のものですよ

コンストラクタでも例外投げるのやめましょうよ

2chネラーだから信用しないっていうのは権威主義的というか誰が言ってるかより中身で判断していただきたい、小生絶対良い事言ってるから!!

391 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:21:49.81 ID:0VAyPn/2.net]
どっちがキチガイかは一目瞭然だな
ありがとう

392 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:37:40.45 ID:5RpC60IR.net]
それでええんか?
議論って考えを広げるためにあるんやで
キチガイとレッテルを張っておしまいでほんとにええんか?
小生が可哀想だと思わない?罪悪感を感じない?お前のお母さんもお前には優しい人に育ってほしいと思ってたのじゃないか?

393 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:38:44.40 ID:5RpC60IR.net]
ありがとうの後にはございますを付けろ、それが礼儀だ

394 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:39:13.84 ID:5RpC60IR.net]
礼儀正しく優しい人になって欲しい

395 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 10:46:46.93 ID:5RpC60IR.net]
コンストラクタでデータチェックしない人になって欲しい



396 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:29:49.28 ID:ich1HAGc.net]
>>378
何が悪いか分からん。
オブジェクトの生成失敗も業務メソッドの実行失敗も、中断すべき状況になったら例外飛ばして何が悪いのか。

コンストラクタで例外飛ばすなって話はC++ならメモリの回収がややこしくなるんで一利あるけど、JavaやC#なら問題ない。

397 名前:デフォルトの名無しさん [2017/10/30(月) 12:30:44.96 ID:FeUZMDfY.net]
>>365
オブジェクトの責務とは?

398 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:38:10.73 ID:OufZdVP7.net]
遡及IDは嘘つかないな
ソノトキ何をしたかよりもソノアト何をしたかが一目瞭然である
便利でよろしい

399 名前:デフォルトの名無しさん [2017/10/30(月) 12:38:19.13 ID:FeUZMDfY.net]
>>368
なんというか、それそのものは Java 自体の問題のようにも思えるね。
つまり、unsigned が型として用意されてないからとか、PASCALみたいに数値の範囲を指定した新たな型を作れないからとかね。
まあそういう数値型のクラスを自作してしまえば良いだけかも知れないが。

400 名前:デフォルトの名無しさん [2017/10/30(月) 12:47:31.30 ID:FeUZMDfY.net]
>>386
そんなにそれを求めるなら最初からそれができない新言語作れば?
大丈夫。君にも作れるよ。実装までできなくても言語仕様考えてネットで晒してフォーラム作って議論してまとめ直してから作ってくれる人募集すればその内なんとかなるだろう。全てを君が作る必要はない。

401 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 12:53:44.32 ID:6Zg8+NGr.net]
Google Apps Scriptで
www.pre-practice.net/2017/10/line-bot_22.html?spref=tw
ここを参考にLINEBOTを作っていて、
文章中の特定の文字列に反応して返答するようにしたのですが、

else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
  }


これを挿入しても反応してくれません。
何がいけないのでしょうか教えてください。
あと質問場所が適切でなければどこで聞けばいいか教えてください
お願いします。

402 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 13:41:37.04 ID:3rz3HBcW.net]
たまに生成されたクラスファイルが分割されることがあるんですがどういう条件で起きるんですかね?
ファイル容量の問題かと思いきや大きいものでも分割されてなかったり…

403 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 13:52:19.55 ID:4hMzyEUs.net]
>>393
1ファイルに複数のクラスを書いてるんじゃない?

404 名前:391 mailto:sage [2017/10/30(月) 14:17:58.64 ID:6Zg8+NGr.net]
>>392
これがPHPというのがわかりました
スレ汚し失礼致しました。

405 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 15:15:46.44 ID:y0GY6LFV.net]
>>393
インナークラスの悪寒…
$付いてない?



406 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 15:50:40.06 ID:3rz3HBcW.net]
>>395,396
色々調べてみたらどうもシリアライズ可能なクラス?というのが原因みたいでした…
お手数おかけしました

407 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 18:18:23.77 ID:sRaOGV/D.net]
>>363
final見逃してただけだった
それなら尚更コンストラクタだね

408 名前:デフォルトの名無しさん [2017/10/31(火) 08:25:04.95 ID:OmcraJl8.net]
>>360
範囲外の入力値エラーだろ

private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す

なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない

でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから

つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う

クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき

「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う

この辺は、品質管理をやってないと知らないはず

409 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 08:35:40.63 ID:BBLfUUwS.net]
>>399
どうしてもスッキリの宣伝をしなきゃ気が済まないようだな
その一節がなけりゃいいのに

410 名前:398 mailto:sage [2017/10/31(火) 09:49:23.34 ID:OmcraJl8.net]
「スッキリJava」では、クラスの責務を、明確に分けている

前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識

フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない

本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない

だから例外にして、その例外をキャッチしない人は、実行できないようにする

サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も

411 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 12:09:41.25 ID:QuyL7alo.net]
経営の話か

412 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 21:22:09.98 ID:BSBih/VQ.net]
javaでWebアプリ作ってるのですがグラフ表示をしたいです
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?

413 名前:デフォルトの名無しさん mailto:sage [2017/10/31(火) 21:22:56.96 ID:BSBih/VQ.net]
質問スレと間違えましたすみません。

414 名前:デフォルトの名無しさん [2017/11/02(木) 02:18:26.07 ID:BShD5IWlq]
JavaでWEBアプリ作りたいんだが、やっぱJSP+サーブレットってやつをやるべき?
DBの処理(クエリとか)はサーブレットで、JSPは結果表示のみ、みたいに分ける方がいいの?

415 名前:デフォルトの名無しさん [2017/11/02(木) 15:08:48.76 ID:BShD5IWlq]
WEBプログラミング板ってのがあるんすね。すま



416 名前:350です mailto:sage [2017/11/03(金) 17:28:51.99 ID:AmIWbkAj.net]
>>381
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです

417 名前:デフォルトの名無しさん [2017/11/03(金) 17:36:15.65 ID:lQ0XoM3e.net]
>>407
責務の分離ができてない証拠だから

418 名前:デフォルトの名無しさん [2017/11/03(金) 17:39:40.36 ID:lQ0XoM3e.net]
コンストラクタっていうのはオブジェクトを初期化する特別な処理を書くところ
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです

419 名前:デフォルトの名無しさん [2017/11/03(金) 17:42:31.79 ID:lQ0XoM3e.net]
どうしても例外を投げたいならtryCreateというスタティックメソッドを作って
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ

420 名前:デフォルトの名無しさん [2017/11/03(金) 18:39:37.30 ID:lQ0XoM3e.net]
FileStreamもコンストラクタで例外を投げるが
あの設計も大間違いだから

コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ

421 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 19:04:39.65 ID:9CXEo34m.net]
>>409
何もしなかったら意味ないだろ……
直通のゲッターセッターと同じただのお飾り

422 名前:デフォルトの名無しさん [2017/11/03(金) 19:18:22.44 ID:lQ0XoM3e.net]
>>412
フィールドを初期化するという大事な処理がある
セッターは代入だから、初期化じゃないから

423 名前:デフォルトの名無しさん [2017/11/03(金) 19:40:27.12 ID:lQ0XoM3e.net]
UI -> アプリ(バリデータ) -> ドメイン -> DAO
レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない
オブジェクトをクリーンに保つためのベストプラクティス

424 名前:デフォルトの名無しさん [2017/11/03(金) 19:47:48.30 ID:lQ0XoM3e.net]
バグがないように引数をチェックするという目的でやるなら
アサートを使うべきだ
ただしアサートを使うのは開発時のみで本番コードには含めない
本番コードで引数チェックが必要になるようならそれは
業務要件として抽出するべきだ

425 名前:350です mailto:sage [2017/11/03(金) 20:10:50.22 ID:AmIWbkAj.net]
なるほど
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう



426 名前:デフォルトの名無しさん [2017/11/03(金) 20:17:00.78 ID:lQ0XoM3e.net]
>>416
ありがとうの後にはございますだ
それが礼儀だ

427 名前:デフォルトの名無しさん [2017/11/03(金) 20:19:43.27 ID:EWAV0hJA.net]
なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。
時折反論を書きありがとうの後にございますを付けなければなお良いと。

428 名前:デフォルトの名無しさん [2017/11/03(金) 20:21:29.16 ID:lQ0XoM3e.net]
僕が活性化しちゃうおおお

429 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:17:51.19 ID:xnvXDnsB.net]
またキチガイか

430 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:35:59.49 ID:Ro85MhDs.net]
コンストラクタに不正なもの渡された場合に例外を出すことが
なぜいけないのかについては1ミリも説明されてなくて草

431 名前:デフォルトの名無しさん [2017/11/03(金) 21:41:52.50 ID:lQ0XoM3e.net]
>>421
責務の分離ができてない証拠だから
100ミリくらい説明してますけど
10メートルですよ

432 名前:デフォルトの名無しさん [2017/11/03(金) 21:42:46.79 ID:lQ0XoM3e.net]
違うわ1,000ミリの間違いね

433 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:52:44.52 ID:9CXEo34m.net]
むしろ初期化の異常で例外を投げるのは
コンストラクタの責務だろ

なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則

ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない

「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない

434 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 22:00:57.69 ID:Ro85MhDs.net]
>>422
責務を理解できてない典型だね
君がそういう規約で開発するのは勝手だけど
それをベストプラクティスだからとか言って
他人に押し付けるのはよくないよ

435 名前:デフォルトの名無しさん [2017/11/03(金) 22:01:56.36 ID:lQ0XoM3e.net]
>>424
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ



436 名前:デフォルトの名無しさん [2017/11/03(金) 22:02:38.01 ID:lQ0XoM3e.net]
>>425
理解できてないことを1ミリも説明してないじゃん
話にならないよ

437 名前:デフォルトの名無しさん [2017/11/03(金) 22:03:47.06 ID:lQ0XoM3e.net]
自分の考える責務の分離はこうっす
自分こう思うっすとはきはきと説明できないかね
若さが感じられない

438 名前:デフォルトの名無しさん [2017/11/03(金) 22:42:06.17 ID:lQ0XoM3e.net]
説明を求められたら言葉を失ってしまうみなさん

439 名前:デフォルトの名無しさん [2017/11/03(金) 22:47:53.53 ID:L9/pWClM.net]
どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、
そういうときに失敗を通知する手段は例外しかないわけで、
コンストラクタで例外を投げてはいけないとする方が問題だ。

440 名前:デフォルトの名無しさん [2017/11/03(金) 22:49:18.72 ID:lQ0XoM3e.net]
モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども
バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで
クラスの生活習慣病に位置付けるのはどう?
徐々にシステムを蝕んでいきます
コーディングの習慣を見直しましょう

441 名前:デフォルトの名無しさん [2017/11/03(金) 22:52:55.66 ID:lQ0XoM3e.net]
>>430
どんなに外部でチェックしてもインスタンス生成に失敗するときは例外投げて良い
そんなのケースバイケースだろ、柔軟に対応しろよ

442 名前:デフォルトの名無しさん [2017/11/03(金) 22:53:28.36 ID:lQ0XoM3e.net]
ベストプラクティスっていうのは柔軟っていう意味もありまぁす!

443 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 00:31:14.87 ID:FdHKGPou.net]
入力値チェックは、MVC のビューでやるけど、

ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき

途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える

444 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 01:00:49.14 ID:O0AU1SEY.net]
サーバーが受け取ったデータが外部入力なんだから
それをチェックするのは当たり前
ユーザー入力と同じ

境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる

445 名前:デフォルトの名無しさん [2017/11/04(土) 02:59:59.82 ID:Wr8YwoWe.net]
できれば不正値はコンパイル時にエラーになって欲しいものではあるな。
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)



446 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:21:09.10 ID:4V8ohWTX.net]
javaってできることが多すぎて勉強しんどい

447 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:35:59.26 ID:32ZzWJzG.net]
>>434
へー、チェックサムも独自に仕込むのかな

448 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:37:10.99 ID:32ZzWJzG.net]
>>435
事前条件ってまさにアサートの領分じゃん

449 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:49:44.67 ID:die+TITB.net]
>>437
C++より楽

450 名前:デフォルトの名無しさん [2017/11/04(土) 08:55:38.30 ID:KxJ3WBAq.net]
モデルの引数を間違えてるっていうのはバグなのでー
開発時に分かればよいことなのでー
アサート使うべきだよねー

コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう

451 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 13:21:03.20 ID:O0AU1SEY.net]
>>439
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ

それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?

452 名前:デフォルトの名無しさん [2017/11/04(土) 13:36:25.85 ID:KxJ3WBAq.net]
>>442
何言ってんだおめー
assert使うべきで
例外を投げるべきじゃない

453 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:21:29.77 ID:1M0jr43T.net]
javaなら、コンストラクタで例外スローでいいでしょ。

454 名前:デフォルトの名無しさん [2017/11/04(土) 17:10:27.14 ID:KxJ3WBAq.net]
>>444
でも設計的に大間違いですよそれ
コンストラクタの使い方完全に間違ってますよ

455 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:42:41.33 ID:cKuNjw8p.net]
>>445
あほ



456 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 13:12:43.81 ID:z+9Dn5/C.net]
以下のコードをideoneで実行できません。(ブラウザとしてエラーが発生)
どなたか理由を教えてもらえないでしょうか?

import java.lang.reflect.*;
class RefSamp {
public int times = 0;
public RefSamp(int t) {
this.times = t;
}
public void hello(String msg) {
this.hello(msg, this.times);
}
public void hello(String msg, int t) {
System.out.println("Hello, " + msg + " x " + t);
}
}

public class Main {
public static void main(String[] args) throws Exception {
Class clazz = RefSamp.class;
Constructor<?> cons = clazz.getConstructor(int.class);
RefSamp rs = (RefSamp) cons.newInstance(256);
Field f = clazz.getField("times");
f.set(rs, 2);
System.out.println(f.get(rs));
Method m = clazz.getMethod("hello", String.class, int.class);
m.invoke(rs, "refrection!", 128);
boolean pubc = Modifier.isPublic(clazz.getModifiers());
boolean finm = Modifier.isFinal(m.getModifiers());
}
}

457 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:11:12.97 ID:0YSHLKzk.net]
初心者じゃないんだろ35歳
自分で調べろ

458 名前:遊園地 mailto:sage [2017/11/05(日) 14:27:53.28 ID:FPjW0d5Z.net]
読むの面倒だから、エラー文も上げて。

459 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:34:37.57 ID:k/LyUYN/.net]
ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの

460 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 17:40:17.18 ID:2ZrTuY5p.net]
35歳に親切にすると君の職場に現れて付きまとわれるぞw

461 名前:444 mailto:sage [2017/11/05(日) 18:22:30.39 ID:z+9Dn5/C.net]
>>448
決めつけるなよ。それに初心者認定したのはあんたらだろ?

>>450
レスありがとうございます。
ideoneではなにかしらそういう安全装置が働いているということですね。

462 名前:デフォルトの名無しさん [2017/11/05(日) 18:54:33.30 ID:qSskq3Yv.net]
釣りでエラーが発生と言ってるだけだろ
https://ideone.com/yLwAJh

463 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 18:59:33.63 ID:0YSHLKzk.net]
まず質問の仕方がおかしいんだよなぁ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ

464 名前:444 mailto:sage [2017/11/05(日) 19:41:51.63 ID:z+9Dn5/C.net]
>>451
たひんで

>>453
OSなど実行環境の違いによるんですかね…。

>>454
それはその通りだと思うけど、あんたは親切な人だったの?

465 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:45:10.05 ID:/i0gfJYB.net]
何この変なの?
どっかのコテハンか?



466 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:46:54.84 ID:PoYQIzOm.net]
>>453のリンク見てもエラーが出てるんだよな?
正直エスパーしようにも限界

467 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 20:07:50.04 ID:2ZrTuY5p.net]
もうそいつに触れるのはよせ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef