- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
802 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:10:12.47 ID:66Kkldk7 - >>801
> ユーザがいない、パスワードが誤っている、など。 ログイン処理に関して言えば、それはやったらだめ ユーザー登録されているかどうかがわかるため 攻撃の糸口になる
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
803 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:11:31.16 ID:66Kkldk7 - そもそもこういうありふれた処理は
フレームワークでやり方が用意されているので それに従えばいい。 フレームワークを使っていないならば使うべきだ 自分で作るようなところじゃない
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
804 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:12:56.73 ID:66Kkldk7 - テストを意識しているようだが、メッセージのテストをするのは
殆どの場合間違い。例外はあるだろうが思いつかないレベル。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
805 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:16:03.38 ID:66Kkldk7 - > ログイン関数にユーザとパスワードを渡すと、ログインできればtrueを返しますが、falseのときは、メッセージも返したいです。
戻り値は返さなくていい。ログイン関数を実行してログインできればそのまま続行。 ログインできなければ例外を発生させればいい。 必要ならメッセージを返すことだってできる
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
806 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:17:48.62 ID:66Kkldk7 - > こういう関数の場合、戻り値はbooleanでなくて、数値(コード)などを利用した方がいいのでしょうか?
エラーの種類がとてつもなくおおくない限りエラーコードは使わない。 例外クラスを作ればいい。戻り値を使わないことはさっき書いた
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
807 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:19:54.94 ID:66Kkldk7 - > また、メッセージに対応する処理をどこに持たせればいいのか、スマートに設計できません。
共通部分。例外的な処理をしたい場合がない限り 共通の場所に一つだけ書けばいい。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
808 :デフォルトの名無しさん[sage]:2016/12/30(金) 03:21:04.07 ID:66Kkldk7 - > 関数内でビューを更新すると
ビューが何かわからんが、ログイン関数で更新することはない
|
- テストしにくいコードをテストする方法教えて下さい
864 :デフォルトの名無しさん[sage]:2016/12/30(金) 13:04:19.38 ID:66Kkldk7 - これを過剰だと思うのは
理解してない証拠
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
815 :デフォルトの名無しさん[sage]:2016/12/30(金) 13:05:13.88 ID:66Kkldk7 - >>810
> セキュリティ上の懸念から 意味わからん。ソースコード公開すれば 守るものなんてなにもない。
|
- テストしにくいコードをテストする方法教えて下さい
866 :デフォルトの名無しさん[sage]:2016/12/30(金) 13:17:22.62 ID:66Kkldk7 - まあどちらにしろ何も言えないっていうのは
そういことだとしか思われるだけ
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
824 :デフォルトの名無しさん[sage]:2016/12/30(金) 15:54:55.99 ID:66Kkldk7 - >>823
なんだセクハラの話じゃないのか
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
828 :デフォルトの名無しさん[sage]:2016/12/30(金) 17:00:16.23 ID:66Kkldk7 - > 本当の例外と区別する必要があるから。
そんなもん例外の方で区別しろよw > DBに繋げないからログインできないのは例外だけど、 DBにつなげますか?ってメソッドで繋げないのは正常系の範囲だろ。 > 認証に失敗するのは、正常系の範囲。 誰が認証するなんて言ったんだよw 俺が言ったのはログインするという処理。 ログインできないのは何が原因であれ正常系の範囲外だ。 重要なのは処理(関数)の名前だって気づけ
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
829 :デフォルトの名無しさん[sage]:2016/12/30(金) 17:01:50.01 ID:66Kkldk7 - 何が例外になるかは、関数の名前で決まるって
わかってないやつ多いよなw
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
837 :デフォルトの名無しさん[sage]:2016/12/30(金) 17:49:48.77 ID:66Kkldk7 - >>831
> DBにつなげますか、で繋げなかったのは、もうそれ以上アプリもユーザもやりようがない。 やりようがないわけじゃないが? 別のDBにつなぎ変えることだってできるだろ。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
838 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:00:15.36 ID:66Kkldk7 - phpadminやmysqlworkbenchのようなDB管理ソフトでは
DBに接続できなかったらその旨をページやダイアログに表示して 再接続や別のDBに変更することができる。 結局のところ例外が起きたとき、やりようがあるかどうかは それがどういうアプリであるかよにって違うわけで、 「やりよう」を基準に例外にするかどうかを決めるのは明らかに間違い。 名は体を表わすの言葉通り、関数の名前というのは体、つまり処理を表すので その処理の内容によって何が正常系かが決まるんだよ。 例えば.NETにある文字列を数値に変換するメソッド Int32.Parseというのがあるが、これは「パースする」という名前の処理だから パースができないならば例外。だけど似たようなことをするTryParseというメソッドがある。 こっちは「パースしてみる」という名前だからパースできた(true) または パースできなかった(false)を返す。 このように名前が重要になっている。 HTTPの話も出ているが、それがHTTPのリクエストを発行するというメソッドであれば レスポンスコードが4xxでも5xxでも例外ではないが、 それがHTTPリクエストベースのウェブAPIであれば、4xxや5xxが帰ってきたときに例外にしてよい。 その場合はウェブAPIとして相応しい名前を持った関数になっていることだろう。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
839 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:08:43.03 ID:66Kkldk7 - Railsでも名前によって例外にするかどうかが変わっている。
例えばモデルのsaveメソッドは保存できない場合にfalseを返すが、 ビックリマーク付きのsave!メソッドは、保存できない場合に 例外ActiveRecord::RecordInvalidを発生させる
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
841 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:14:50.84 ID:66Kkldk7 - >>840
俺も議論したいわけじゃないから具体的には書かないが お前が間違っている。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
844 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:22:44.43 ID:66Kkldk7 - 設計が下手な人はインターフェースではなくて
実装で決めてしまうことが多い。 「DBにつなげますか」というのも実装。 DBであるという実装で、例外にするかどうかを決めてしまっている。 HTTPレスポンスコードも同じだ。実装の内部でHTTPを使っているから 例外にすべきではないという考え。 馬鹿馬鹿しい。 どこに接続しようがconnectはconnect。実装がどうなっているかは関係ない。 connectできなければそれは例外。関数の名前で決まる。 connect内部でHTTPリクエストに変換して通信しているかもしれないが、 内部の実装がHTTPだからという理由でインターフェースを変えたりはしない。 何を例外にするかは処理の内容で決めるものだし、その処理の内容は 関数の名前に反映される。
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
845 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:26:30.68 ID:66Kkldk7 - >>842
> どっちの用途に使われるのか分からないログイン用ライブラリは成功、失敗、例外 ログイン用ライブラリとかいうから話が噛み合わない ログイン用ライブラリにはいろんなメソッドがある。 そのメソッドの名前で例外にすべきかどうかが決まる。 ログイン用ライブラリという言い方では単なるメソッドの集まりでしかないので それでどちらにするかを決めることはできない
|
- スレ立てるまでもない質問はここで 144匹目 [無断転載禁止]©2ch.net
847 :デフォルトの名無しさん[sage]:2016/12/30(金) 18:27:55.51 ID:66Kkldk7 - >>842
> 人に入力させるログインシステムは入力ミス前提だから 例外 もしくは 戻り値 を返すのは関数(メソッド)であって システムではない。今はシステムの話はしていない。 例外を返すシステムってなんだそりゃ?w 意味がわからんわw
|