オブジェクト指向システムの設計 172 at TECH
[2ch|▼Menu]
93:デフォルトの名無しさん
16/07/13 22:44:36.15 uq0wU9fp.net
> 必要があれば戻り値のエラー通知を部分的に使うのはかまわないと思うよ
個人的にはTryParseをよく使っている。それで十分だから。
必要性はない。try/catchでも書ける。
戻り値判定の場合は、その場での処理が強要される。
結果、65の上司型のコードしか書けない。
実際にあのコードを戻り値判定に変換するのも簡単だ。
この使い方をする場合は好みの問題でしかない。
一方、例外を用いれば、65がやろうとした「積極的にthrowして統合的に扱う」ことも出来る。
戻り値判定でこれをするのは大変なことになるので、これをしてこそ活用だと言える。
とはいえ、これがろくな事になる気配が全く感じられない。
ちなみに、言語的な例外復旧能力に必ずしも頼る必要はない。
上位レベルでの復旧も実は簡単だからだ。
例えばTryParse、ファイルから読むのならソースは保持する必要がない。
Seek出来ないネットワークストリーム等なら、MemoryStreamに一旦受ければいい。
JSONみたいに階層ありオブジェクトを丸々生成するのなら、成功した後に差し替えればいい。
これらの場合は、ロールバックを上位で行うことはほぼ自然に出来てしまうので、
結果的にSTLが実装した例外機構の為に無駄に税金を払う事にしかならない。
この点を修正しようというnoexceptはC++っぽくていいが、
なるほどこんな事をやっているうちは生Cを駆逐することは出来ないだろう。

94:デフォルトの名無しさん
16/07/13 22:45:05.83 uq0wU9fp.net
生Cはある意味世界がno-fail保証されている。
そして失敗した場合は上記のように自前で戻すか、諦めるしかない。単純な話だ。
ロールバックする気なら、この点については例外で処理した方がコード的には楽だ。
しかし実行効率ではどうやっても生Cの方が上になる。何もしてないコードだからだ。
生Cは世界が単純に出来ている。あまり気にしたことはないが、これは大きな利点だね。
言語がシンプルな結果、シンプルな記述を強要され、結果的に65のようなコードを記述出来ない。
65みたいな「考えすぎておかしくなっている奴」には生Cギプスが効くかもしれない。
> .NetだとSystem.Diagnostics.Contracts
以下を見る限り、型についてのTDDみたいな感じだな。
静的チェックが出来るのはいいね。ただ、流行るかと言われれば微妙かな。
URLリンク(visualstudiogallery.msdn.microsoft.com)
> C++ Either
以下でいいか?
URLリンク(faithandbrave.hateblo.jp)
つまりは例外を呼ばずに値として埋め込みたいだけか。
関数型で組んだ場合には個々の要素で例外呼ばれても困るから、そりゃこうなるだろう。
そういった意味ではC++の例外機構は「手続き型」にしか対応してないね。
そこですぐ呼ばれる前提だ。
他の関数型言語の例外機構ってどうなっているんだ?知ってたらよろしく。
Haskellがこの手で値埋め込み、後でユーザ側で確認するというのは分かった。
なおJavaScriptは0割は無限大になるというお気楽仕様だ。
当初は驚いたが、正直これで問題ないよなとも思う。

95:デフォルトの名無しさん
16/07/13 22:58:10.35 2JhFq5Nw.net
>>89
> Parseが返すパーズした結果とは何ぞや?
正しくはInt32.Parseなんだから当然Int32だろw
Int32に変換した結果を戻す
(変換できなければ戻さない)
> 俺には名前だけではさっぱり分からんのだが
あー、うん。クラス名が先に作ってことに
気づかなかったのねw
>>86で引用してる>>84にかいてあんだろ。
気づけよw

96:デフォルトの名無しさん
16/07/13 23:09:44.65 jyyAd6hv.net
Int32.Parse だからといって、必ずInt32が返るとは限らないだろ
おまえは、human.age()で必ずhumanが返ると考えるか?

97:デフォルトの名無しさん
16/07/13 23:11:23.52 2JhFq5Nw.net
>>94
> なおJavaScriptは0割は無限大になるというお気楽仕様だ。
いや、お前、例外っていったら0除算しか思いつかんのかよw
eval("{") とか実行してみろ。JavaScriptは例外を使う言語だ。
0以外の数値を0で割ったら無限大になるのは数学的に正しい。
JavaScriptが無限大を扱える言語ってだけだ。
もちろん数学的に正しいことをやっているから、 0 / 0 は NaN (非数)になる。
少なくともこの点は、お気楽ではなく高度な言語だと言える。
もっともJavaScriptに例外が搭載されたのはJavaScript 1.4(1999年あたり)からだけどな。
それ以前は(エラーを戻り値で返すのではなく)スクリプトが停止され
window.onerrorイベントが呼ばれたんだっけな?もう忘れたが。

98:デフォルトの名無しさん
16/07/13 23:11:30.03 jyyAd6hv.net
いっとくが、human.age()で必ずintが返るとは限らないからな
もしかしたらageオブジェクトが返るかもしれないからな

99:デフォルトの名無しさん
16/07/13 23:12:49.31 2JhFq5Nw.net
>>96
> Int32.Parse だからといって、必ずInt32が返るとは限らないだろ
> おまえは、human.age()で必ずhumanが返ると考えるか?
Parseとageで関数名が違ってるじゃんw
名前で返すものが決まるって言ってんだろ。
human.parseだったら、human返すんじゃねーの?

100:デフォルトの名無しさん
16/07/13 23:13:53.29 jyyAd6hv.net
>human.parseだったら、human返すんじゃねーの?
そんなの思い込みだろ
ヒューマンパーズオブジェクトが返るかもしれないだろ

101:デフォルトの名無しさん
16/07/13 23:18:25.58 2JhFq5Nw.net
>>94
> 他の関数型言語の例外機構ってどうなっているんだ?知ってたらよろしく。
関数型で戻り値でエラー情報なんか返したら
大混乱になるわw
関数呼び出しの中の、関数呼び出しの中の、関数呼び出しの中の、関数呼び出し で
エラー情報が返ってきたら、if式による分岐の嵐でもはや
関数型言語のように見えないだろうね。

102:デフォルトの名無しさん
16/07/13 23:22:40.62 2JhFq5Nw.net
>>100
> ヒューマンパーズオブジェクトが返るかもしれないだろ
ほらね? 何が返るか想像できてるじゃんw
Int32.Parseじゃ何を返すかさっぱりわからないって言ってるから
それが間違いだよって話。
なにも100%完全に返り値の情報がわかるなんて言ってないんだよw

103:デフォルトの名無しさん
16/07/13 23:36:52.14 C7S+nyqs.net
型を見りゃいいだろ
まさかこのスレに居ながら、屁臭いペチプ〜やゴミのペールやペールの糞からひり出されたルビーや・・・そんな糞まみれのウンコ野郎はおるまいね?

104:デフォルトの名無しさん
16/07/14 00:31:59.76 4Ps/X1K6.net
>>102
いやお前それ苦しいだろ
>ほらね? 何が返るか想像できてるじゃんw
想像?
思い込みでしょ
ヒューマンパーズオブジェクトが返るかもしれない、とは書いたが
実際には何が返るかわからないから、そう書いただけであって
どうせ、仕様を調べなきゃならないんだよ

105:デフォルトの名無しさん
16/07/14 01:02:32.63 9qkjMq+e.net
>>104
言うと思ったw
でお前これから先仕様なんて調べるの?
調べないよね。もう覚えてしまったから。
あとは文字を見れば思い出すはずだ。
適切な名前があると覚やすいっていうのはこういうこと。

106:デフォルトの名無しさん
16/07/14 01:31:15.59 rhZMoeJF.net
>>101
>関数型で戻り値でエラー情報なんか返したら
>エラー情報が返ってきたら、if式による分岐の嵐でもはや
ifの分岐しないためにfunctorだのアプリカティブだのmonadだのtraverseがあるじゃん?
try1 >=> try2 >=> try3 >=> ... tryN
みたいので「成功するまで処理を続けて失敗したら例外情報をもって途中で抜ける関数」を作れるし
こういう合成力は関数型の強み

107:デフォルトの名無しさん
16/07/14 06:27:39.21 cfi8dg7p.net
自分の思い込みの通りなら良い設計良いコードw

108:デフォルトの名無しさん
16/07/14 07:26:28.53 xgZTwt3g.net
正しく意図した通りに騙してくれるなら
明らかに良いコードだろ
頭のてっぺんからケツのシワまで数え上げてようやく読解できるコードが糞じゃなきゃ何なんだ

109:デフォルトの名無しさん
16/07/14 07:44:38.40 cfi8dg7p.net
クソの主観によりクソ認定されたコード達w
本当は良い奴も沢山いただろうに不憫だわーw

110:デフォルトの名無しさん
16/07/14 08:31:57.85 qme/E7bl.net
車輪の再発明しか出来ない人がいると聞いて。

111:デフォルトの名無しさん
16/07/15 23:14:34.82 /IkQTUfk.net
DAO とかDTO ってのが出てくるアーキテクチャは手続き型であって、オブジェクト指向ではない
ってのが解る人ここにいるか?

112:デフォルトの名無しさん
16/07/15 23:20:25.90 sS/v2c9e.net
そんな嘘ついちゃいけないんだお

113:デフォルトの名無しさん
16/07/15 23:39:15.88 iR/HdeCl.net
今の日本人は>>111みたいな馬鹿が普通なんだお


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2893日前に更新/50 KB
担当:undef