uupaaさんのCoffeeScript利用時の注意点

気になる話だったのでまとめておく CoffeeScriptに限った話しじゃなくて,JavaScriptでの匿名関数利用時の注意点でもあります.
12
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

CoffeeScriptやる人に一言。jsはシングルスレッドだけど匿名関数でラップすると関数の出口でスレッドコンテキストする可能性あるから、並列処理にスレッドもってかれないように気をつけて。最近某アレで「朝までにページ表示が不安定なのを直して」と泣き付かれた奴はまさにそれだったよ

2011-05-06 01:12:53
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

CoffeeScriptはうっかり匿名関数でラップするから、「タイミングに依存する作りで、状態遷移をしっかりせず、手抜きしてると先にxhrが終わってしまい、そこで処理もってかれて、準備できてないのにページ表示処理が走って、全体が不安定になる」って奴だった

2011-05-06 01:15:23
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

ステートマシン書けない人が、CoffeeScript使うと、スレッドコンテキストではまると思われるので注意ね

2011-05-06 01:17:03
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

jsのスレッド周り理解できている人が、CoffeeScriptをわざわざ使う人ケースは少ないと思うから、そこが不安ポイント。匿名関数でラップするとクロージャ/GC入るのでゲーム書く場合もCoffeeScriptはマイナスポイントだね。

2011-05-06 01:20:18
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

匿名関数の問題は、名前解決,スレッドコンテキスト,GCなどのコストの問題もあるけど、追っかけたときにスタックトレースが謎くなるので(追えなくなる)、デバッグ大変だし、他人にデバッグを頼む時も大変に。関数や変数に適切な名前がついてないと、デバッグでは良い事一つもないんね

2011-05-06 01:40:44
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

1万行こえるような中~大規模jsだった、ライブラリとして他人に提供するコードを匿名関数でラップしまくると、トラップになるので極力さけるべきかと。

2011-05-06 01:42:12
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

他人にbugfixを絶対にお願いしなくても良い状況なら、コード書く人が気持ちよく早く書けるツールを選択するのが正義だけど、そうじゃない場合はデバッグする人に配慮したコードにしとかないと、全員不幸になる

2011-05-06 01:50:28
もう暑くってェ グッタリしちゃってェ…んじに🐈にゃーん🍓🫐🍅🌽🍈🍆🥒🍇🦝 @uupaa

(ε・﹏・)з 中の人は「CoffeeScriptをdisったわけではないので間違っちゃだめだよ。CoffeeScriptに限らず無駄に匿名関数でラップすると罠る事あるから気をつけて」っていってるよ

2011-05-06 01:59:57