動的型言語は静的型言語に比べてテストが増えるのか?
というか議論の中身について早々に「質問を無視された」「有名人が絡んできたら急に反応してきたよ」「この人いつもこんなことしてるの」とか、技術的な話じゃなくて、属人的な「こうに違いない」を書いてる時点で、まあ。
2014-08-31 10:51:26あ、有名人はきっと凄い人だと思うのですが、守備分野が違うだけだとは思うのですよね。それぞれの分野や人にそれぞれの世界があって、そういう世界のプロフェッショナルみたいな人はいるんだろうけど、なにせ世界多すぎるもので、僕もまだまだ全部見るほどのキャパシティが無いので。
2014-08-31 10:57:26@tail_y 『何故かそちらのreplyが表示されなかっただけ』ああ、ブロックやフィルタしてるってことですか。それは仕方ない。 『僕が回答しないことを全員に適用されるとちょっと困ります』別にそちらだけの話ではないし、一例を全体に適用したと解釈されるとちょっと困ります
2014-08-31 11:02:20@makotokuwata いや、ブロックなどはしてないのですが、Webクライアント「通知」窓をずっと開きっぱなしにしていると、取りこぼしがあるみたいなんですよね、僕わりかしRT多くされるので長時間開きっぱなしにしてたのが原因っぽいです。リロードしたら直りました
2014-08-31 11:06:17メンションの通知もれってちょくちょくあるというか、twitterは大体の機能が何度か欠落やらかしてるのでもうそういうものだと思ってる
2014-08-31 11:08:34@tail_y ユーザが入力する項目のテストであれば、それは静的言語でも必要だと思いますが。静的言語だと書かないんでしょうか。 『リファクタリングの安全確保のための「実行する」ことを目的としたテスト』これはどんなテストかわかりませんでした。
2014-08-31 11:33:03@makotokuwata ユーザーが入力する項目に関して言えば、入力部分のテストは必要ですが、その後別のメソッドに値が渡される場合、コンパイル前から以後の値が必ず整数であることが保証されるので、例えば他人に渡すライブラリへのテストの量に差が出てくると思います。(後半別ツイート)
2014-08-31 11:35:44@makotokuwata リファクタリングのために、というのは、例えばランタイムエラーしか出ないような引数のミスに対して、単体テストが張られていると安全にリファクタリングすることが出来るようになります(ランタイム時にそこを通らない、隠蔽性のエラーを防げる)
2014-08-31 11:38:19@makotokuwata この安全性確保のためのリファクタリングに対して、静的型の場合、引数ミスなどはコンパイル前エラーとなるので、テストを動かさずに発見が可能です。なので、単体機能毎のテストの粒度を荒くしても安全性が保たれる場合があります。3ツイートになってすいません。
2014-08-31 11:39:54リファクタリングって、外部からみた振舞いを変えないことが条件だから、テストは変更しないままのはずなんだが。『リファクタリングの安全確保のための「実行する」ことを目的としたテスト』ってなんのこっちゃ。
2014-08-31 11:45:07AS3からHaxeに移行したことで一番大きかったのは関数に型があることで、今までAS3ではコールバックとか引数怖くて入れられなかったし、イベントハンドラの引数がevent1個で固定なのもそういう理由だろうし、他人の作ったコールバックとか死ねよって思ってたけどHaxeで無くなった。
2014-08-31 11:47:52結果的にHaxeでは(多分TSとかでも)好きなときに自然体で関数渡せるようになったし、あ、引数増やしたいなと思った時に自由に増やせるようになったと思う。そういうのゲーム作ってると本当に大事。コードが原因でゲームの面白い機能を無意識に避けちゃうと凄いマイナス。
2014-08-31 11:50:39@makotokuwata ああ、そのリファクタリングの定義だと、メソッド間まで含めた変更なので、僕が言っているのは日常レベルで発生するの設計変更って言ったほうがいいかもですね。読み替えて頂けると助かります。
2014-08-31 11:51:59ゲームのプログラム設計ってほんとすごい勢いで動くことがあって、「んー、敵キャラもアイテム判定が必要だな」みたいなことが途中で出てくると、キャラクタークラスが実はアイテム機能を内部に持つかするとかして、全体のクラス図がガッコンガッコン変化するので、それに耐えないといけない。
2014-08-31 11:57:49敵がアイテム判定ってのはあくまで例だけど、ンドゥバ(というか、ンバマ)とかミミックとか、ありえない話ではないので。あの場合はアイテムが敵のIDを持てるようにするんだろうけど。
2014-08-31 11:59:24@tail_y 面白くなるからという理由だけでガッコンガッコン変化するような追加仕様を完成直前でぶち込んでも許される土壌についての是非はまた別の問題で
2014-08-31 12:03:35@munegon それはお前最初のほうで想定できただろ!みたいなのは怒るけど、怒ってもやらないといけないので、耐えられる言語使いたいです。Haxeのenumと、部分的構造型のどちらかを使えば上記の問題に対応できますしね。
2014-08-31 12:05:03ちなみに、ゲーム業界に単体テストの文化が薄いのは今言った「んー、敵キャラもアイテム判定が必要だな」が起こって、あっという間にクラス構造とメソッドが移動しまくるからテストが結局ついてこれないからだと思ってるんだけど、どうなんでしょうか。
2014-08-31 12:06:55オープンワールドみたいに、ルールと物理(魔法)法則だけ先に決めて、後はイベント配置で何とかするって手法はこういう点では有利になる。イベントがみんなお使い風になっちゃうのが残念な点だけども。
2014-08-31 12:12:03ゲームは面白バグなら許されるというか、むしろそんなのひとつもないゲームはメタな楽しみが減ってダメみたいな変な前提がありそうなので、バグが最初から潰されてしまうテスト駆動は歓迎されないんじゃないかというひねくれ論
2014-08-31 12:13:28@munegon 気にしすぎるなというツイッターさんからのお達しだと思っている。フォロワー1000人超えたらもう気にならない気もするし。
2014-08-31 12:13:44@tail_y 『例えば他人に渡すライブラリへのテストの量に差が出てくる』えっと、tail_yさんは動的言語を使うときそのようなテストを書いているということでしょうか。そしてそれが静的言語と比べて大量に存在するという理解でいいでしょうか。
2014-09-01 09:30:10