- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
199 :デフォルトの名無しさん[sage]:2015/12/19(土) 00:00:09.78 ID:APSLa6hA - > タイプミスを調べるのに大した労力なんていらんがな...
な、経験が全然足りないんだよw
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
201 :デフォルトの名無しさん[sage]:2015/12/19(土) 00:15:43.81 ID:APSLa6hA - 静的でも手抜きして、例えばyaml形式の設定ファイルを読み込んで、
アプリの全体から文字列でyamlファイルのデータにアクセスするような コードを書いていると同じようにタイプミスすることあるよ。 こういうのは、設定オブジェクトを作って、内部ではyamlでもjsonでも 対応可能な設計にしておくと、アプリからは設定オブジェクトのメソッドや プロパティを参照するだけになるから、間違いが無くなる。 (正確にはタイプミスが起こりえる場所を設定オブジェクトに押し込められる) 更に設定オブジェクトのリファクタリングで名前や階層を変えたり 単一値を複数値扱えるような変更があっても、設定オブジェクトを変更すると それに依存する場所全てを明らかにしてくれる。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
203 :デフォルトの名無しさん[sage]:2015/12/19(土) 01:17:50.15 ID:APSLa6hA - テスト万能説はやめろよw
どんなテストを書くっていうのか? タイポしてないことを確かめるテストは書けない。 できるとしたら、何かのテストのついでとして、エラーが起きれば タイポではないか? ということになるが、エラーが出たあとに、 ん? なんでエラーになった? バグかな?ってコードを調べるのも馬鹿らしい。 タイポしていてもエラーにならないことだってある。 そもそも、完璧なテストは書けるのか?って話もある。 適当な範囲のテストを書いてないからというが、タイポはミスだ。 人間はミスをする。ならばテストを書くことに対してもミスするだろう。 ミス無くテストを書いたという保証は得られない。 プロトタイプ的な実験コードに対してもテストを書くのか?という話もある。 テストを書く=時間がかかる だ。 テストは誰かが勝手に作ってくれるものじゃない。 テストを書く時点でコストがかかっている。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
207 :デフォルトの名無しさん[sage]:2015/12/19(土) 01:28:40.84 ID:APSLa6hA - 今はタイポの話をしたが、型チェックに関して言えば、
型チェックはテストでは検出できない。 なぜならば、これは関数の呼び出し方の間違いだからだ。 テストとは通常、関数が与えられた引数で正しい答えを返すことをテストする。 与える引数は正しいことが前提となっている。 例えばある関数の引数の数が変わったとしよう。テストも引数の数を変えるだろう。 しかし、実際のコードの呼び出し部分、ここの引数を変えるのを忘れたら、 テストは通るのに実際のコードでエラーが発生することになる。 もちろん呼び出し側のテストがしっかり書かれていればそちらでエラーが出るだろう。 つまり、Aという関数の仕様を変えた時、その関数を使用している場所全て、 関数B、C、D、E・・・でエラーが発生する。さあ大変なデバッグ作業の始まりだ! もし、これらの関数でテストに見逃しがあったりしたならば、バグになるのは明白だ。 これは適当な範囲でのテストを書いてないからという程度ですむ話じゃない。 完璧なテストを書かないかぎり、呼び出し方が間違っていないかどうかはわからない。 完璧なテストを書けばいい?もし世の中に完璧なテストが有るならば、バグは一切無いだろうなw
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
208 :デフォルトの名無しさん[sage]:2015/12/19(土) 01:29:47.38 ID:APSLa6hA - >>204
> Pythonはtypoも補完も静的解析できるからね できるできないの話じゃない。 できる量が違うという話。 静的で出来ることの「一部」が出来たからって 何も凄くはないんだよ。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
211 :デフォルトの名無しさん[sage]:2015/12/19(土) 02:13:01.48 ID:APSLa6hA - >>210
Java void func(String str) { str. ← 補完できる } Python def func(str): str. ←補完できない
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
214 :デフォルトの名無しさん[sage]:2015/12/19(土) 02:45:46.18 ID:APSLa6hA - >>212
型推論っていうのは、型が断定できるときに記述を省略できる "追加機能" であって、型推論を持ち出す意味が無いんだが。 で、動的型むりでしょ?w 静的型はできるでしょw ほら、言ったとおり。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
215 :デフォルトの名無しさん[sage]:2015/12/19(土) 02:55:03.23 ID:APSLa6hA - 動的型の「できる」っていうのは、ローカル変数など
大概狭い範囲での話なんだよね。 どちらかと言えば、狭い範囲のものは、その場所だけ 注意してみればいいからそこまで必要ない。 静的型の型チェックが便利なのは、広い範囲の依存関係の矛盾を暴き出すことだから こういうのは単体テストが主である自動テストではテストがしづらい部分。 つまり、関数の引数とかクラスの継承関係とかオブジェクトのメソッドとか そういう「インターフェース」に関わる部分の矛盾のテストができる。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
217 :デフォルトの名無しさん[sage]:2015/12/19(土) 02:59:35.78 ID:APSLa6hA - Javaでは、取り敢えず関数名と引数だけ書いて(型はObjectにしておく)
関数を呼び出す側を先に実装する手法をとる事が良くある。 それと何も変わらないNE!
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
219 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:02:59.96 ID:APSLa6hA - >>216
その文章から、どういった理由でドカタ言語なのかわからないのは、 お前が、ドカタということで心の安定を保つためだと思ってるYO!
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
220 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:05:24.53 ID:APSLa6hA - >>218
呼び出し側の使われ方から推論できるよ? 正確には「呼び出し側が使われた時」っていうのは 呼び出し側の型も決定したってことだから、 関数の実装をするときにその型に書きなおすだけでいい。 関数の実装するんだから、すぐ上の行を編集するだけ。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
222 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:09:08.23 ID:APSLa6hA - >>221
へ? Javaの話を今までしていたその続きをしただけだけどw うわー、やっぱりこう他の言語をディスることで 心の安定を(笑)うわーwww
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
224 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:10:20.46 ID:APSLa6hA - >>223
> 計算機が正しく自動的にやってくれることを 呼び出し側を間違えたら、計算機は間違いますよw 計算機は、書いた通りに動く。 何が正しいかはプログラマが決めるもの。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
225 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:12:18.93 ID:APSLa6hA - 呼び出し側から推論すると言っても、
呼び出し側が矛盾することだってあるしね。 fooという関数をintを引数にして呼び出している場所と stringを引数にして呼び出している場所があったらどうなるのか。 定義は一箇所にするもの。 関数の定義こそが一箇所に絞り込める唯一の場所。 使ってる場所で、決めるっていうのは 間違いの元にしかならないよ。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
228 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:20:44.63 ID:APSLa6hA - 静的型の型推論って機能はコンパイラが推論して
型が決定できた時に、記述を省略してくれる機能。 だから(推論が)正しいか、推論できないかの2つに別れる。 推論できた時、それは正しい。 だけど動的型の場合、推論は本当に推論でしか無いんだよね。 こうじゃないか?って思いました。コンパイラがいう。 だから、計算機は正しく自動的にやってくれるわけじゃない。 所詮、推論でしかない。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★2 [無断転載禁止]©2ch.net
229 :デフォルトの名無しさん[sage]:2015/12/19(土) 03:21:26.48 ID:APSLa6hA - >>227
やっぱり正しく自動的にやってくれるんじゃないんですねwwww
|