16/09/01 22:12:28.00 scPPFiSF.net
もしかしてさ、テストを書いてリファクタリングして
よりシンプルに書き直して、以前と全く同じように動くコードなのに、
元のコードとは記述が違うから、そういう修正はするなって言うタイプの人なの?
138: ◆SEdFBOkLSw
16/09/01 22:16:55.85 x5Fi8ahc.net
>>136
それES6じゃないじゃん。正確にはES6でもあり、お前が否定していた古いJavaScriptじゃんww
$msg='hello world';
echo $msg;
が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
何か違うか?見た目も動作も同じだけど、別物だよね。
>>137
手弁当で全部終わらせるんならいいんじゃねーの?
予算使うなら、余計なことすんなって言うけど。
139:デフォルトの名無しさん
16/09/01 22:19:19.19 scPPFiSF.net
>>138
古いJavaScriptだからなの?
babelで変換した結果とFirefoxがネイティブで動かすコードは
全く一緒なのに何が問題なの?って聞いてる。
重要なのは同じように動くこと(仕様を満たしていること)であって
中身の実装なんてどうでもいいでしょw
140:デフォルトの名無しさん
16/09/01 22:20:42.89 scPPFiSF.net
>>138
> が、perlなのかphpなのかは、どっちに食わすかによって決まるんじゃねえの?
> 何か違うか?見た目も動作も同じだけど、別物だよね。
どちらもFirefoxに食わせていますよw
babelで動かすんじゃなくて
babelで変換したコードをFirefoxで動かすか、
babelで変換しないコードをFirefoxで動かすかって
話をしてるんだから。
141:デフォルトの名無しさん
16/09/01 22:27:03.04 scPPFiSF.net
>>138
お前が何を不安がっているのかわかったわw
前提条件: どちらも同じブラウザFirefoxで動かします。
1. ES6のコードをそのままFirefoxで動かす
(※ES6のコードのテストの結果は当然問題ない)
2. ES6のコードをbabelで変換してESにしたコードをFirefoxで動かす
(※ES5のコードのテストの結果は当然問題ない)
どちらもテストでOKとでてるのに、もしかしたら
バグがあるんじゃないか?って思ってるだろw
142:デフォルトの名無しさん
16/09/01 22:40:53.56 UGSC1Nbq.net
美しいソースを志すプログラマからしたら自動生成には美学をまるで感じない
男なら黙ってprototype
不便に堪えて手書きでNative JavaScript
という冗談はともかく、納品するスクリプトはクライアントが使うんだから変な書き方も最新の玩具も使わずにネイティブのみで分かりやすくコメント添えながら書くのが普通じゃないのか?
143:デフォルトの名無しさん
16/09/01 22:40:55.87 Yfa1ihki.net
babelがたまたま実行結果が読めるというだけで
ブラウザみたいな巨大なブラックボックスと区別する意味がよく分からん
144:デフォルトの名無しさん
16/09/01 22:46:12.95 scPPFiSF.net
>>142
ネイティブかどうかは重要じゃない。
正しく動くことが重要。
そのためにテストをするんだよ。
145:デフォルトの名無しさん
16/09/01 22:50:05.31 scPPFiSF.net
>>143
だよね。例えば内部でES6をES5に変換してから
実行するブラウザがあったっておかしくない。
そもそもJavaScriptなんてコンパイルして
バイナリにてから動かしているわけで、
そのバイナリなんてブラウザが違ったら違うだろうし、
同じブラウザでもバージョンアップしたら違う可能性もある。
どういう変換が行われて実行されるかは大した問題じゃない。
仕様通りに動いているかが重要。
146: ◆SEdFBOkLSw
16/09/01 23:09:24.58 x5Fi8ahc.net
>>141
全然わかってねえじゃん。
147:デフォルトの名無しさん
16/09/01 23:15:55.41 scPPFiSF.net
>>146
ん?ってことは、
ES6をbabelで変換してFirefoxで動かすのと
ES6をそのままFirefoxで動かすのは
全く同じだってことでいいかい?
はい か いいえ で答えてくれ。
148:デフォルトの名無しさん
16/09/01 23:21:14.21 uGmloWI1.net
>>122
細かい話だけど、extendsは古いブラウザでは完全にエミュレートされないよ。
extendsはprototypeだけでなくstaticなメソッドも継承する。
つまり、任意のプロトタイプを持つコンストラクタを作れないと行けないのだけど、
これはES2015以前ではブラウザの独自実装の__proto__を使わないと実現できない。
149:デフォルトの名無しさん
16/09/01 23:25:45.46 scPPFiSF.net
>>148
完全にエミュレートできないことでバグになることはなく、
エミュレートできない機能を使っていればバグになる。
でも、それを含めてテストするわけだからね。
動かないならテストで分かる。
ブラウザ間の互換性がない問題と同じよ。
互換性がない部分があっても、テストで動けば問題ない。
150:デフォルトの名無しさん
16/09/02 00:00:38.90 OcKaQeg4.net
>>149
客「IE8で動かないんだけど?」
151:デフォルトの名無しさん
16/09/02 00:01:45.81 gFIXdWf6.net
>>150
IE8でテストしろよw
152:デフォルトの名無しさん
16/09/02 00:04:27.07 gFIXdWf6.net
うーん、マジで分かってない気がするわ。
テストコードっていうのは、一つ書くだけで
それをどのブラウザでも実行可能にしておくものなんだよ。
もちろん同じテストを何度も短時間で実行できる。
いろんなブラウザが有って色んなバージョンがあって
バージョンアップが頻繁なウェブの世界ではそれができてないと
やってられないでしょ?
コードを修正するたびにサポートしてる全ブラウザ
(IE8をサポートするのならIE8以上)で全部テストしてる。
153: ◆SEdFBOkLSw
16/09/02 00:28:38.18 nUqjDcPO.net
>>147
いいえ、だな。それは。
全く同じではない。挙動が同じでも。
>>149
エミュレートできないコードを使わない、って事は、
エミュレート前提で書いてて、やっぱ違うんじゃねえの?そういう意味でもないけど。立ち位置の話は。
>>152
テストコードが一つでいいわけ無いじゃん。。
単体ならいざ知らず。
154:デフォルトの名無しさん
16/09/02 00:29:55.10 OcKaQeg4.net
IE8で開いたことあるならBabelが如何に実用性が低いかくらい察しとけよ……
155: ◆SEdFBOkLSw
16/09/02 00:34:20.17 nUqjDcPO.net
>>154
babelでトランスパイルするために書いたJSと、webkitで動かす為のJSが、同じES6で記述するから意味論的にも同じスクリプトなんだってさw
コンパイラや実行環境の為のスクリプトじゃなくて、言語仕様で、それが同じものか決まるらしい。
意味としては前者はなんの意味もなく、立ち位置的にはAltJSの類と同じ意味のものだと思うんだけどね。
156:デフォルトの名無しさん
16/09/02 00:35:15.71 gFIXdWf6.net
>>154
> 全く同じではない。挙動が同じでも。
なら挙動が同じ場合に何が問題になる?
そこだよね。挙動が同じななのに全く同じではないというだけで
問題点を今までなにも言ってない。
例えば、
var foo = function() { console.log(123) }
foo()
と
function foo() { console.log(123) }
foo()
は、全く同じではないと言うだろう。
そう、全く同じではないと言うだけで、
何が問題かを言わない。
157:デフォルトの名無しさん
16/09/02 00:37:02.54 gFIXdWf6.net
>>153
> テストコードが一つでいいわけ無いじゃん。。
じゃあいくつ用意するんだよ?
なお普通のウェブサイトであり使うブラウザは
ユーザーが決めることなので、まったく制御できないものとする。
いくつ用意するんだよ?じゃなくて
いくつ用意してるんだよ?って聞いたほうが良いなw