Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.4
http://mevius.2ch.net/test/read.cgi/tech/1498828456/
Java入門・初心者質問スレ Part.5©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/29(金) 17:53:25.24ID:XnizQSCA
368デフォルトの名無しさん
2017/10/30(月) 08:55:34.55ID:JH+/yPWP >>366
>検証はシステムの関心ごとだから
>集約するべきでオブジェクト毎に持つものじゃない
責務を分離するのは重要だがそのオブジェクトの
規模が大きくなって複雑化するにつれて分けていくもの
たとえば生成の責務をファクトリに分離してもいいが
何でもかんでも全部ファクトリにする必要はない
だからコンストラクタでチェックしてもいいし
バリデータみたいのに分離してもいい
>検証はシステムの関心ごとだから
>集約するべきでオブジェクト毎に持つものじゃない
責務を分離するのは重要だがそのオブジェクトの
規模が大きくなって複雑化するにつれて分けていくもの
たとえば生成の責務をファクトリに分離してもいいが
何でもかんでも全部ファクトリにする必要はない
だからコンストラクタでチェックしてもいいし
バリデータみたいのに分離してもいい
369デフォルトの名無しさん
2017/10/30(月) 08:56:23.29ID:5RpC60IR 思わず激昂してしまいましたがとにかく小生が言いたいのはコンストラクタで例外投げるのおかしいですよということなんです
370デフォルトの名無しさん
2017/10/30(月) 09:00:29.54ID:5RpC60IR >>368
どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!!
じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ
どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!!
じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ
371デフォルトの名無しさん
2017/10/30(月) 09:01:41.86ID:4hMzyEUs >>367
業務要件で例外処理を考えてるってなかなかおもしろいね
業務要件で例外処理を考えてるってなかなかおもしろいね
372デフォルトの名無しさん
2017/10/30(月) 09:04:21.57ID:5RpC60IR >>371
どういうこと?
どういうこと?
373デフォルトの名無しさん
2017/10/30(月) 09:06:06.45ID:5RpC60IR もっと具体的にちゃんと説明して
小生良い事言ってるからそれちゃんと説明して
小生良い事言ってるからそれちゃんと説明して
374デフォルトの名無しさん
2017/10/30(月) 09:12:06.74ID:JH+/yPWP >>370
いやそれは極端でしょ
OOPの要素はどれも使い分けじゃないの?
複雑化したら切り出すが抽象化にはキリがないので
IF文を全部ポリモーフィズムにするわけでもないし
最初から全部デザパタにするわけでもない
いやそれは極端でしょ
OOPの要素はどれも使い分けじゃないの?
複雑化したら切り出すが抽象化にはキリがないので
IF文を全部ポリモーフィズムにするわけでもないし
最初から全部デザパタにするわけでもない
375デフォルトの名無しさん
2017/10/30(月) 09:17:39.73ID:5RpC60IR376デフォルトの名無しさん
2017/10/30(月) 09:21:09.70ID:JH+/yPWP377デフォルトの名無しさん
2017/10/30(月) 09:22:44.13ID:5RpC60IR コンストラクタでチェックして例外投げるのは
ようわからんけどオブジェクト作ってみるわー
でけへんかったわーゲヘヘーと言ってるようなもの
文明人のやることじゃない
アサートを使うべき
アサートは本番では動かさないからね
検証は専用のオブジェクトでやりましょう
ようわからんけどオブジェクト作ってみるわー
でけへんかったわーゲヘヘーと言ってるようなもの
文明人のやることじゃない
アサートを使うべき
アサートは本番では動かさないからね
検証は専用のオブジェクトでやりましょう
378デフォルトの名無しさん
2017/10/30(月) 09:25:45.46ID:5RpC60IR379デフォルトの名無しさん
2017/10/30(月) 09:46:48.33ID:JH+/yPWP アサートでもいいが例外投げてもいい
つーかコンストラクタで例外投げるのが大問題なら
Javaの言語仕様でできないようにするだろ……
普通に考えて2ちゃんの一個人より
Java(API)のやり方の方がいいわ
つーかコンストラクタで例外投げるのが大問題なら
Javaの言語仕様でできないようにするだろ……
普通に考えて2ちゃんの一個人より
Java(API)のやり方の方がいいわ
380デフォルトの名無しさん
2017/10/30(月) 10:01:28.68ID:5RpC60IR >>379
ファイナライザでは例外投げないようにしましょう
というのがベストプラクティスだけど言語仕様ではできるでしょうに
言語仕様ってその程度のものですよ
コンストラクタでも例外投げるのやめましょうよ
2chネラーだから信用しないっていうのは権威主義的というか誰が言ってるかより中身で判断していただきたい、小生絶対良い事言ってるから!!
ファイナライザでは例外投げないようにしましょう
というのがベストプラクティスだけど言語仕様ではできるでしょうに
言語仕様ってその程度のものですよ
コンストラクタでも例外投げるのやめましょうよ
2chネラーだから信用しないっていうのは権威主義的というか誰が言ってるかより中身で判断していただきたい、小生絶対良い事言ってるから!!
381デフォルトの名無しさん
2017/10/30(月) 10:21:49.81ID:0VAyPn/2 どっちがキチガイかは一目瞭然だな
ありがとう
ありがとう
382デフォルトの名無しさん
2017/10/30(月) 10:37:40.45ID:5RpC60IR それでええんか?
議論って考えを広げるためにあるんやで
キチガイとレッテルを張っておしまいでほんとにええんか?
小生が可哀想だと思わない?罪悪感を感じない?お前のお母さんもお前には優しい人に育ってほしいと思ってたのじゃないか?
議論って考えを広げるためにあるんやで
キチガイとレッテルを張っておしまいでほんとにええんか?
小生が可哀想だと思わない?罪悪感を感じない?お前のお母さんもお前には優しい人に育ってほしいと思ってたのじゃないか?
383デフォルトの名無しさん
2017/10/30(月) 10:38:44.40ID:5RpC60IR ありがとうの後にはございますを付けろ、それが礼儀だ
384デフォルトの名無しさん
2017/10/30(月) 10:39:13.84ID:5RpC60IR 礼儀正しく優しい人になって欲しい
385デフォルトの名無しさん
2017/10/30(月) 10:46:46.93ID:5RpC60IR コンストラクタでデータチェックしない人になって欲しい
386デフォルトの名無しさん
2017/10/30(月) 12:29:49.28ID:ich1HAGc >>377
何が悪いか分からん。
オブジェクトの生成失敗も業務メソッドの実行失敗も、中断すべき状況になったら例外飛ばして何が悪いのか。
コンストラクタで例外飛ばすなって話はC++ならメモリの回収がややこしくなるんで一利あるけど、JavaやC#なら問題ない。
何が悪いか分からん。
オブジェクトの生成失敗も業務メソッドの実行失敗も、中断すべき状況になったら例外飛ばして何が悪いのか。
コンストラクタで例外飛ばすなって話はC++ならメモリの回収がややこしくなるんで一利あるけど、JavaやC#なら問題ない。
387デフォルトの名無しさん
2017/10/30(月) 12:30:44.96ID:FeUZMDfY >>364
オブジェクトの責務とは?
オブジェクトの責務とは?
388デフォルトの名無しさん
2017/10/30(月) 12:38:10.73ID:OufZdVP7 遡及IDは嘘つかないな
ソノトキ何をしたかよりもソノアト何をしたかが一目瞭然である
便利でよろしい
ソノトキ何をしたかよりもソノアト何をしたかが一目瞭然である
便利でよろしい
389デフォルトの名無しさん
2017/10/30(月) 12:38:19.13ID:FeUZMDfY >>367
なんというか、それそのものは Java 自体の問題のようにも思えるね。
つまり、unsigned が型として用意されてないからとか、PASCALみたいに数値の範囲を指定した新たな型を作れないからとかね。
まあそういう数値型のクラスを自作してしまえば良いだけかも知れないが。
なんというか、それそのものは Java 自体の問題のようにも思えるね。
つまり、unsigned が型として用意されてないからとか、PASCALみたいに数値の範囲を指定した新たな型を作れないからとかね。
まあそういう数値型のクラスを自作してしまえば良いだけかも知れないが。
390デフォルトの名無しさん
2017/10/30(月) 12:47:31.30ID:FeUZMDfY >>385
そんなにそれを求めるなら最初からそれができない新言語作れば?
大丈夫。君にも作れるよ。実装までできなくても言語仕様考えてネットで晒してフォーラム作って議論してまとめ直してから作ってくれる人募集すればその内なんとかなるだろう。全てを君が作る必要はない。
そんなにそれを求めるなら最初からそれができない新言語作れば?
大丈夫。君にも作れるよ。実装までできなくても言語仕様考えてネットで晒してフォーラム作って議論してまとめ直してから作ってくれる人募集すればその内なんとかなるだろう。全てを君が作る必要はない。
391デフォルトの名無しさん
2017/10/30(月) 12:53:44.32ID:6Zg8+NGr Google Apps Scriptで
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw
ここを参考にLINEBOTを作っていて、
文章中の特定の文字列に反応して返答するようにしたのですが、
else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
}
これを挿入しても反応してくれません。
何がいけないのでしょうか教えてください。
あと質問場所が適切でなければどこで聞けばいいか教えてください
お願いします。
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw
ここを参考にLINEBOTを作っていて、
文章中の特定の文字列に反応して返答するようにしたのですが、
else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
}
これを挿入しても反応してくれません。
何がいけないのでしょうか教えてください。
あと質問場所が適切でなければどこで聞けばいいか教えてください
お願いします。
392デフォルトの名無しさん
2017/10/30(月) 13:41:37.04ID:3rz3HBcW たまに生成されたクラスファイルが分割されることがあるんですがどういう条件で起きるんですかね?
ファイル容量の問題かと思いきや大きいものでも分割されてなかったり…
ファイル容量の問題かと思いきや大きいものでも分割されてなかったり…
393デフォルトの名無しさん
2017/10/30(月) 13:52:19.55ID:4hMzyEUs >>392
1ファイルに複数のクラスを書いてるんじゃない?
1ファイルに複数のクラスを書いてるんじゃない?
395デフォルトの名無しさん
2017/10/30(月) 15:15:46.44ID:y0GY6LFV396デフォルトの名無しさん
2017/10/30(月) 15:50:40.06ID:3rz3HBcW397デフォルトの名無しさん
2017/10/30(月) 18:18:23.77ID:sRaOGV/D398デフォルトの名無しさん
2017/10/31(火) 08:25:04.95ID:OmcraJl8 >>359
範囲外の入力値エラーだろ
private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す
なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない
でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから
つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う
クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき
「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う
この辺は、品質管理をやってないと知らないはず
範囲外の入力値エラーだろ
private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す
なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない
でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから
つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う
クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき
「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う
この辺は、品質管理をやってないと知らないはず
399デフォルトの名無しさん
2017/10/31(火) 08:35:40.63ID:BBLfUUwS400398
2017/10/31(火) 09:49:23.34ID:OmcraJl8 「スッキリJava」では、クラスの責務を、明確に分けている
前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識
フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない
本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない
だから例外にして、その例外をキャッチしない人は、実行できないようにする
サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も
前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識
フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない
本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない
だから例外にして、その例外をキャッチしない人は、実行できないようにする
サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も
401デフォルトの名無しさん
2017/10/31(火) 12:09:41.25ID:QuyL7alo 経営の話か
402デフォルトの名無しさん
2017/10/31(火) 21:22:09.98ID:BSBih/VQ javaでWebアプリ作ってるのですがグラフ表示をしたいです
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
403デフォルトの名無しさん
2017/10/31(火) 21:22:56.96ID:BSBih/VQ 質問スレと間違えましたすみません。
404350です
2017/11/03(金) 17:28:51.99ID:AmIWbkAj >>380
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです
405デフォルトの名無しさん
2017/11/03(金) 17:36:15.65ID:lQ0XoM3e >>404
責務の分離ができてない証拠だから
責務の分離ができてない証拠だから
406デフォルトの名無しさん
2017/11/03(金) 17:39:40.36ID:lQ0XoM3e コンストラクタっていうのはオブジェクトを初期化する特別な処理を書くところ
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
407デフォルトの名無しさん
2017/11/03(金) 17:42:31.79ID:lQ0XoM3e どうしても例外を投げたいならtryCreateというスタティックメソッドを作って
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
408デフォルトの名無しさん
2017/11/03(金) 18:39:37.30ID:lQ0XoM3e FileStreamもコンストラクタで例外を投げるが
あの設計も大間違いだから
コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ
あの設計も大間違いだから
コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ
409デフォルトの名無しさん
2017/11/03(金) 19:04:39.65ID:9CXEo34m410デフォルトの名無しさん
2017/11/03(金) 19:18:22.44ID:lQ0XoM3e411デフォルトの名無しさん
2017/11/03(金) 19:40:27.12ID:lQ0XoM3e UI -> アプリ(バリデータ) -> ドメイン -> DAO
レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない
オブジェクトをクリーンに保つためのベストプラクティス
レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない
オブジェクトをクリーンに保つためのベストプラクティス
412デフォルトの名無しさん
2017/11/03(金) 19:47:48.30ID:lQ0XoM3e バグがないように引数をチェックするという目的でやるなら
アサートを使うべきだ
ただしアサートを使うのは開発時のみで本番コードには含めない
本番コードで引数チェックが必要になるようならそれは
業務要件として抽出するべきだ
アサートを使うべきだ
ただしアサートを使うのは開発時のみで本番コードには含めない
本番コードで引数チェックが必要になるようならそれは
業務要件として抽出するべきだ
413350です
2017/11/03(金) 20:10:50.22ID:AmIWbkAj なるほど
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
414デフォルトの名無しさん
2017/11/03(金) 20:17:00.78ID:lQ0XoM3e415デフォルトの名無しさん
2017/11/03(金) 20:19:43.27ID:EWAV0hJA なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
416デフォルトの名無しさん
2017/11/03(金) 20:21:29.16ID:lQ0XoM3e 僕が活性化しちゃうおおお
417デフォルトの名無しさん
2017/11/03(金) 21:17:51.19ID:xnvXDnsB またキチガイか
418デフォルトの名無しさん
2017/11/03(金) 21:35:59.49ID:Ro85MhDs コンストラクタに不正なもの渡された場合に例外を出すことが
なぜいけないのかについては1ミリも説明されてなくて草
なぜいけないのかについては1ミリも説明されてなくて草
419デフォルトの名無しさん
2017/11/03(金) 21:41:52.50ID:lQ0XoM3e420デフォルトの名無しさん
2017/11/03(金) 21:42:46.79ID:lQ0XoM3e 違うわ1,000ミリの間違いね
421デフォルトの名無しさん
2017/11/03(金) 21:52:44.52ID:9CXEo34m むしろ初期化の異常で例外を投げるのは
コンストラクタの責務だろ
なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則
ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない
「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
コンストラクタの責務だろ
なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則
ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない
「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
422デフォルトの名無しさん
2017/11/03(金) 22:00:57.69ID:Ro85MhDs423デフォルトの名無しさん
2017/11/03(金) 22:01:56.36ID:lQ0XoM3e >>421
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
424デフォルトの名無しさん
2017/11/03(金) 22:02:38.01ID:lQ0XoM3e425デフォルトの名無しさん
2017/11/03(金) 22:03:47.06ID:lQ0XoM3e 自分の考える責務の分離はこうっす
自分こう思うっすとはきはきと説明できないかね
若さが感じられない
自分こう思うっすとはきはきと説明できないかね
若さが感じられない
426デフォルトの名無しさん
2017/11/03(金) 22:42:06.17ID:lQ0XoM3e 説明を求められたら言葉を失ってしまうみなさん
427デフォルトの名無しさん
2017/11/03(金) 22:47:53.53ID:L9/pWClM どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、
そういうときに失敗を通知する手段は例外しかないわけで、
コンストラクタで例外を投げてはいけないとする方が問題だ。
そういうときに失敗を通知する手段は例外しかないわけで、
コンストラクタで例外を投げてはいけないとする方が問題だ。
428デフォルトの名無しさん
2017/11/03(金) 22:49:18.72ID:lQ0XoM3e モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども
バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで
クラスの生活習慣病に位置付けるのはどう?
徐々にシステムを蝕んでいきます
コーディングの習慣を見直しましょう
バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで
クラスの生活習慣病に位置付けるのはどう?
徐々にシステムを蝕んでいきます
コーディングの習慣を見直しましょう
429デフォルトの名無しさん
2017/11/03(金) 22:52:55.66ID:lQ0XoM3e430デフォルトの名無しさん
2017/11/03(金) 22:53:28.36ID:lQ0XoM3e ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
431デフォルトの名無しさん
2017/11/04(土) 00:31:14.87ID:FdHKGPou 入力値チェックは、MVC のビューでやるけど、
ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき
途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき
途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
432デフォルトの名無しさん
2017/11/04(土) 01:00:49.14ID:O0AU1SEY サーバーが受け取ったデータが外部入力なんだから
それをチェックするのは当たり前
ユーザー入力と同じ
境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
それをチェックするのは当たり前
ユーザー入力と同じ
境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
433デフォルトの名無しさん
2017/11/04(土) 02:59:59.82ID:Wr8YwoWe できれば不正値はコンパイル時にエラーになって欲しいものではあるな。
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
434デフォルトの名無しさん
2017/11/04(土) 08:21:09.10ID:4V8ohWTX javaってできることが多すぎて勉強しんどい
435デフォルトの名無しさん
2017/11/04(土) 08:35:59.26ID:32ZzWJzG >>431
へー、チェックサムも独自に仕込むのかな
へー、チェックサムも独自に仕込むのかな
436デフォルトの名無しさん
2017/11/04(土) 08:37:10.99ID:32ZzWJzG >>432
事前条件ってまさにアサートの領分じゃん
事前条件ってまさにアサートの領分じゃん
437デフォルトの名無しさん
2017/11/04(土) 08:49:44.67ID:die+TITB >>434
C++より楽
C++より楽
438デフォルトの名無しさん
2017/11/04(土) 08:55:38.30ID:KxJ3WBAq モデルの引数を間違えてるっていうのはバグなのでー
開発時に分かればよいことなのでー
アサート使うべきだよねー
コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
開発時に分かればよいことなのでー
アサート使うべきだよねー
コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
439デフォルトの名無しさん
2017/11/04(土) 13:21:03.20ID:O0AU1SEY >>436
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ
それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ
それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?
440デフォルトの名無しさん
2017/11/04(土) 13:36:25.85ID:KxJ3WBAq441デフォルトの名無しさん
2017/11/04(土) 15:21:29.77ID:1M0jr43T javaなら、コンストラクタで例外スローでいいでしょ。
442デフォルトの名無しさん
2017/11/04(土) 17:10:27.14ID:KxJ3WBAq443デフォルトの名無しさん
2017/11/04(土) 20:42:41.33ID:cKuNjw8p >>442
あほ
あほ
444デフォルトの名無しさん
2017/11/05(日) 13:12:43.81ID:z+9Dn5/C 以下のコードを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());
}
}
どなたか理由を教えてもらえないでしょうか?
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());
}
}
445デフォルトの名無しさん
2017/11/05(日) 14:11:12.97ID:0YSHLKzk 初心者じゃないんだろ35歳
自分で調べろ
自分で調べろ
446遊園地 ◆ExGQrDul2E
2017/11/05(日) 14:27:53.28ID:FPjW0d5Z 読むの面倒だから、エラー文も上げて。
447デフォルトの名無しさん
2017/11/05(日) 14:34:37.57ID:k/LyUYN/ ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
448デフォルトの名無しさん
2017/11/05(日) 17:40:17.18ID:2ZrTuY5p 35歳に親切にすると君の職場に現れて付きまとわれるぞw
449444
2017/11/05(日) 18:22:30.39ID:z+9Dn5/C450デフォルトの名無しさん
2017/11/05(日) 18:54:33.30ID:qSskq3Yv 釣りでエラーが発生と言ってるだけだろ
https://ideone.com/yLwAJh
https://ideone.com/yLwAJh
451デフォルトの名無しさん
2017/11/05(日) 18:59:33.63ID:0YSHLKzk まず質問の仕方がおかしいんだよなぁ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
452444
2017/11/05(日) 19:41:51.63ID:z+9Dn5/C453デフォルトの名無しさん
2017/11/05(日) 19:45:10.05ID:/i0gfJYB 何この変なの?
どっかのコテハンか?
どっかのコテハンか?
454デフォルトの名無しさん
2017/11/05(日) 19:46:54.84ID:PoYQIzOm >>450のリンク見てもエラーが出てるんだよな?
正直エスパーしようにも限界
正直エスパーしようにも限界
455デフォルトの名無しさん
2017/11/05(日) 20:07:50.04ID:2ZrTuY5p もうそいつに触れるのはよせ!
456デフォルトの名無しさん
2017/11/05(日) 21:21:54.00ID:0YSHLKzk457デフォルトの名無しさん
2017/11/05(日) 21:30:31.08ID:2ZrTuY5p 理解を越えているから考えては駄目
458デフォルトの名無しさん
2017/11/05(日) 21:31:07.85ID:0YSHLKzk そもそももっと答えの得られやすい質問が出来るようになれば解決なんだけど、
なぜ君は指摘に対してわざわざ「じゃああんたはごにょごにょ」とわざわざ全く関係ない事持ち出して喧嘩売ってきてるの?
中学生なの?反抗期なの?
自分の行動を振り替えって恥ずかしくない?
なぜ君は指摘に対してわざわざ「じゃああんたはごにょごにょ」とわざわざ全く関係ない事持ち出して喧嘩売ってきてるの?
中学生なの?反抗期なの?
自分の行動を振り替えって恥ずかしくない?
459デフォルトの名無しさん
2017/11/06(月) 00:46:04.60ID:OjznruUj 以前お世話になりました >>200です。課題の上から二つ目の"(ここを作成)"がわからないです。
まあ上のほうも自信ないのですが...誰か教えていただけませんか?
https://imgur.com/a/niyx6
https://imgur.com/a/ehrkB
https://imgur.com/a/5X3tQ
まあ上のほうも自信ないのですが...誰か教えていただけませんか?
https://imgur.com/a/niyx6
https://imgur.com/a/ehrkB
https://imgur.com/a/5X3tQ
460デフォルトの名無しさん
2017/11/06(月) 00:47:27.68ID:1qhCOQ98 宿題スレへ
今実行したら出来ました。何でさっきは出来なかったんだろ…。
https://ideone.com/KdavqO
>>453
プログラマー板のコテハンです。
>>454
いや、リンクをたどるのは大丈夫でした。
>>456
ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。
>>458
えっ?褒めてるのに?
https://ideone.com/KdavqO
>>453
プログラマー板のコテハンです。
>>454
いや、リンクをたどるのは大丈夫でした。
>>456
ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。
>>458
えっ?褒めてるのに?
462デフォルトの名無しさん
2017/11/06(月) 02:26:46.28ID:tjV5ukzM >>459
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね
でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら
現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね
でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら
現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ
463デフォルトの名無しさん
2017/11/06(月) 03:38:31.02ID:2Q/sT7xS ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
464デフォルトの名無しさん
2017/11/06(月) 06:09:30.85ID:sonxQjeP465デフォルトの名無しさん
2017/11/06(月) 07:06:32.63ID:efUB4xY4 >>462
ありがとうございます。時間かけてやって見ます
ありがとうございます。時間かけてやって見ます
466デフォルトの名無しさん
2017/11/06(月) 07:25:39.44ID:kblaZiQ3467デフォルトの名無しさん
2017/11/06(月) 08:51:22.52ID:f5Hwp3Jw 課題の内容および詳細がバッドノウハウの固まりだな
やっぱ学校はCかLispでいいと思うよ
やっぱ学校はCかLispでいいと思うよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性には共通点が [Hitzeschleier★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 中国軍機がレーダー照射 小泉防衛大臣の説明に「矛盾している」中国外務省報道官が批判 [♪♪♪★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- enaga(´・Ǎ・`) ◆99xH8ena32 ってコテわろたwwwwwwwwwww
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
- 【悲報】小泉防衛大臣、中国のレーダー照射事件をNATO事務総長に報告 [834922174]
- 年末のvip芋煮会って何日だっけ?
- 『86-エイティシックス-』レーナがどちゃくそエチエチな下着姿&体操服?姿でフィギュア化キタ━━━(゚∀゚)━━━!! [303493227]
- 歴史って「この教科には暴力的な表現が含まれます」とか警告しといた方がいいよな
