動的型言語は静的型言語に比べてテストが増えるのか?
@tail_y それは静的型付け言語だとテストが少なくて済むという主張ですよね。その根拠がわからないので、理由を教えていただけないでしょうか。静的でも動的でも、テスト項目の数は大差ないと思うんですが…
2014-08-30 08:58:22“特にその副作用と、ステータスが可変なせいで大量のユニットテストを書かされるのにはウンザリだ” postd.cc/sick-of-ruby-d… 副作用がないと、あるいはステータスが不変だと、ユニットテストの量が減るということ?その根拠がわからない。別に減らないと思うのだが。
2014-08-30 09:04:58動的静的に関わらずテストの数は大して変わらないはずなので、「静的言語ならテストの数を大幅に減らせる!」という主張は動的言語の経験が浅い静的言語信者の戯れ言だと思っているが、これ書いた人はそうではなさそうだし、もっと詳しいこと聞きたい postd.cc/sick-of-ruby-d…
2014-08-30 09:10:39“静的型があれば書かなくてもよかったコード(引数の型をチェックするとか)が多過ぎてうんざり” twitter.com/pasberth/statu… 引数の型なんて、通常はチェックしないけどな。静的型やってた人が動的型言語で書くとそんなコードを大量生産するのだろうか。
2014-08-30 10:47:35“一方で、現実問題としてはコンパイル時に自動的に行っていたテストをプログラマ自らが記述する事になるため、(テストコードの)コード記述量は静的型付け言語のそれに比べてどうしても増加する傾向にあります。” d.hatena.ne.jp/tt_clown/20130… そんなテスト書いたことないなあ
2014-08-30 10:57:21静的型とテストの関係については、考えてしゃべるべきだとは思うが、物事が実行テストでだけ語れて、コード解析とか静的手法をあまりに軽んじるというか、そもそも静的手法について考えたこともないというなら、あまり語ることもない気はする。
2014-08-30 14:22:45要件通りの機能を開発できているかどうかのテストは必要で、そこに静的型の効果を出すのは難しいと思う。でも、設計の矛盾や設計意図通りの実装を確認する手段としては、静的解析の有効性はあり、静的型言語を使うメリットがある。
2014-08-30 14:50:43“そもそも、楽にすぐ書けるって言って動的型付け使ってるのにテスト大量に用意するこの矛盾よ” twitter.com/tail_y/status/… このように「動的言語はテストが大量になる」と主張している人は多いけど、その根拠を聞いても答えてくれることはない
2014-08-30 18:41:25@makotokuwata そちらが指しているテストにもよると思いますが、単純な話だとIntを使えば小数を入力した場合のテストが省ける、という例で回答になります?現場ではもっとクラスでのチェックの方が意味を持ってきますが。
2014-08-30 23:08:39動的型と静的型のテストの量の違いについて質問されてこう答えたのだけど、あってるだろうか? twitter.com/tail_y/status/… どちらかと言うとリファクタリングの時のエラー箇所のチェックのほうが威力あると思うけどその話は140字に入らなそうだし。
2014-08-30 23:12:27@makotokuwata 申し訳ないですが、Webクライアントの「通知」のところを見てたら何故かそちらのreplyが表示されなかっただけなのと、僕が回答しないことを全員に適用されるとちょっと困ります。
2014-08-30 23:13:40例えばAS3って型有りの言語だけど、関数が引数を無視して全部同じ型なのよね。対してHaxeは関数は引数や返り値の組み合わせごとに別の型になるので、コールバックなどの引数をリファクタリングした時に、それが呼び出される箇所全てが分かる。AS3では品質保証にはテストを書くしかないよね。
2014-08-30 23:20:07動的型は乱暴なことを言えば「そこの処理を通らなければ間違いが分からない」という部分がある。静的型は幾分かそれを回避する。先の質問はおそらく、納品物等の機能要件のテストか何かで、そのテストは増えないけど、品質保証やリファクタリングの安全確保のためのテストには差が出てくると思う。
2014-08-30 23:42:15エディタの力借りずに静的型言語書いちゃって、なんだこれ面倒なだけの言語じゃん、型なんて速度のためだけにあるんでしょ、みたいになっちゃう事故あるような気がする。
2014-08-31 00:09:16うーん、やっぱ何度も考えてみたけど、動的型と静的型で、同じテストの数で同じ品質になること無いと思うなぁ…。静的型の場合極論するとテスト0でもtypoの危険性無いはずだし。テストを無限に書き続ける状態を想定すると収束するのかもしれないけど。
2014-08-31 00:18:17今まで質問はすべてスルーされてたのに、methane氏がリツイートしたとたん、慌てたように返事が何通もやってきてびっくり。有名人パワーすげー。
2014-08-31 10:35:47@tail_y @tail_y 『そちらが指しているテストにもよると思いますが』tail_y氏が考えるテストで結構です 『単純な話だとIntを使えば小数を入力した場合のテストが省ける』動的言語でそのようなテストをいつも書いてるんですか?
2014-08-31 10:41:32@makotokuwata 小数やゼロ入力時の挙動は業務システムでは必須では…。あと前後ツイートに書きましたけど、リファクタリングの安全確保のための「実行する」ことを目的としたテストが減りますね。
2014-08-31 10:43:3815時間くらい気付かなかったreplyの人が「こういう質問すると返事がない」みたいなこと言っていたので「気づかなかったんですよ」と返したら、「有名人がRTしたら慌てて返事してきた」みたいに言われたんだけど、その有名人さんって人は別に僕フォローしてないし、なんというか…。
2014-08-31 10:48:01