任天堂「今後C++は捨てJavaScriptで開発していく」 (887レス)
1-

158
(1): 2013/03/22(金)03:00 AAS
>>153
Object.seal()を直接書いて回るとか何の冗談だよ
いまどきJavascriptでそれなりのプロダクトを作るなら
クラス継承の手順なんかも隠蔽したオブジェクト生成関数を用意してそれを使う
センスとか以前の問題じゃね?
159
(1): 2013/03/22(金)03:03 AAS
書き忘れたら書き間違えで新たなプロパティ扱いになるって言っても
C++はC++で書き忘れたら色んなものが解放されないという言語なのだけれど…
160
(1): 2013/03/22(金)03:06 AAS
>>158
残念ながらそれでも駄目なんだ。
なぜなら、JavaScriptでは実引数の型を強制できないから、hoge({maxLength:10})とかできちゃうし。
161
(1): 2013/03/22(金)03:08 AAS
>>159
念のため説明すると、new禁止にすると、hoge = new Hoge();でコンパイルエラーになるから
これが根本対策になり得る。
162
(1): 2013/03/22(金)03:13 AAS
>>160
それはオブジェクトというより今時の大抵の言語にあるハッシュとしての使いかただね
Javascriptは両方とも同じものだけど
ハッシュのキーワードミスって別のプロパティ弄っちゃうとか
Javascript固有の問題じゃないだろう
オブジェクトの生成はプロジェクトで決めた生成方式で統一すればいい
163
(1): 2013/03/22(金)03:23 AAS
オブジェクトの生成ルール決めてるプロジェクトでhoge({maxLength:10})とかやって自爆するのは
C言語で型とか適当でキャストしまくって自爆するのと同じようなものだろw
164
(1): 2013/03/22(金)03:39 AAS
>>162
ルールを決めても、それを言語仕様的に強制できなければ、誰かが間違える可能性が残る。
誰かというのは、将来のメンテナも含めてね。
それと、xの仕様を変えることによって問題を解決するのなら、maxLengthを
プライベート変数にして、setter,getterにした方がいいと思うんだけど、どう?
165
(1): 2013/03/22(金)03:41 AAS
>>163
自爆するのが悪いというのは、typoするのが悪いというのと変わらないよ。
166
(1): 2013/03/22(金)03:44 AAS
>>164
>>49を見直してこいよ
maxLengthをset/getにしてもmaxlengthを作れちゃうから問題だと言ってるのに
167
(1): 2013/03/22(金)03:47 AAS
>>165
どんな言語でも、言語仕様で強制される以外のルールも守らなければ自爆するって言ってるんだよ?w
168: 2013/03/22(金)04:22 AAS
JavaScriptでnew禁止するのは簡単。
169
(1): 2013/03/22(金)05:15 AAS
>>161
ではC++で解放忘れをコンパイルエラーにする方法は?
170: 2013/03/22(金)06:18 AAS
どんなに優れた言語でもウンコードは書ける
171: 2013/03/22(金)06:44 AAS
TSRが書けなくなるの?
172
(1): 2013/03/22(金)06:48 AAS
>>166
setterにすれば、>>49はsetMaxLength()とsetMaxlength()のtypoの問題にかわる。
173: 2013/03/22(金)06:50 AAS
typoうんぬんが開発の生産性と関係あると思ってるヤツは素人
174: 2013/03/22(金)06:50 AAS
>>167
そんなの当たり前だが、今回の問題と何の関係があるのかな?
175: 2013/03/22(金)06:52 AAS
>>169
ない。
176
(1): 2013/03/22(金)06:52 AAS
>>172
setterにすると>>49のコードが具体的にどう変わるか書いてみてくれない?
177
(1): 2013/03/22(金)06:54 AAS
>>176
書いたじゃん。
理解できないのか?
178
(1): 2013/03/22(金)07:01 AAS
>>177
function hoge(x) { x.setMaxLength() = 100; } // 正
function hoge(x) { x.setMaxlength() = 100; } // 誤
ってこと?
179
(2): 2013/03/22(金)07:06 AAS
178
悪いが、JavaScriptを知らない奴にまで説明する優しさは持ってない。
180
(4): 2013/03/22(金)07:08 AAS
>>179
いやおれは普通にこういうことだとおもったんだが
x = { val:0, get maxLength() {return this.val}, set maxLength(v) {this.val = v}}
function hoge(x) { x.maxLength = 100; } // 正
function hoge(x) { x.maxlength = 100; } // 誤
x.maxlengthに間違ったら意味無いよね?
181
(1): 2013/03/22(金)07:13 AAS
ああ、xを実引数にしてhoge()を呼び出すと思ってくれ
182: 2013/03/22(金)07:16 AAS
>>180
俺の話からそんなコードを想像したのなら、そりゃ話は噛み合わないな。
183: 2013/03/22(金)07:18 AAS
念のため言っとくが(めんどくさいから、これが最後だよ)、その「正」は
正しくないよ。
184: 2013/03/22(金)07:18 AAS
コード書けないアホが無理するから...
185: 2013/03/22(金)07:19 AAS
>>179
>>178はこうか、>>180を意識してたんでちょっと間違った
function hoge(x) { x.setMaxLength(100) } // 正
function hoge(x) { x.setMaxlength(100) } // 誤
186
(1): 2013/03/22(金)07:25 AAS
>>180-181は実際に動作することを確認済み
いまどきjavascriptのsetter/getterって言ったら>>180だろ
187: 2013/03/22(金)07:29 AAS
実際にコード例を示さない奴が偉そうだなw
188
(1): 2013/03/22(金)07:39 AAS
>>186
俺のレスをちゃんと読んでるか?
maxLengthをプライベート変数にし、と俺は言ったぞ?
189
(1): 2013/03/22(金)07:55 AAS
>>188
>>180はmaxLengthをプライベート変数(=val)にしてるだろ?
少し日本語不自由じゃないの?具体的なコード書けば勘違いされないのに
190
(1): 忍法帖【Lv=40,xxxPT】(3+3:5) 2013/03/22(金)07:56 AAS
さすがに今時全部x.setMaxLength(100)みたいにしろとかありえないんでseal()が導入された
191
(2): 2013/03/22(金)08:04 AAS
>>189
x = {var maxLength;}

>>190
俺の感覚だと、sealしたインスタンスを戻すFactoryメソッドを定義して、それを使うのを
ルール化するというほうがもっとあり得ないんだけど、最近じゃseal使うのが流行ってたりするの?
192
(1): 2013/03/22(金)08:05 AAS
>>191
>x = {var maxLength;}
文法エラーです
193
(1): 2013/03/22(金)08:19 AAS
>>192
それは悪かった。今スマホなんで完全なコードを書くのが難しい。
var x = (function() {var maxLength;})();が完全なコードかな。
194
(1): 2013/03/22(金)08:29 AAS
あと、seal()方式には重大な欠点がもうひとつある。
それは、x内部のtypoを防げないってこと。
195
(1): 忍法帖【Lv=40,xxxPT】(2+3:5) 2013/03/22(金)08:30 AAS
>>191
インスタンス生成はフレームワークが提供するのを使うことも多いかな
seal自体は流行ってはいないんじゃないの?ES5サポートしてないブラウザもあるし
でもここは任天堂がこれから提供する独自環境の話をするスレだから、
strict mode前提でsealなんかのES5の機能を積極的に使っていけるんじゃないかなと思ってる
196
(2): 2013/03/22(金)08:40 AAS
>>193
>var x = (function() {var maxLength;})();
意味がわからない。このコードじゃxに入るのはundefined

あんたがやりたいのはこんな感じのことじゃないのか?
var x={maxLength:0,
setMaxLength:function(v){this.maxLength=v},
getMaxLength:function(){return this.maxLength}};
197: 2013/03/22(金)08:41 AAS
>>195
なるほど、そういうことか。了解。
198: 2013/03/22(金)08:42 AAS
>>196
悪いけど、昼休みまで待ってくれ。
199: 2013/03/22(金)08:44 AAS
>>194
seal()方式だとx内部にどんなやばいtypoが発生するの?
200
(1): 2013/03/22(金)10:23 AAS
なんか基礎的な知識がなくて回り道しそうだから
お前らに最低限の知識を与えておこう

var hoge = (function() {
 var private_variable;

 function private_function() {
 }

 return {
省4
201: 2013/03/22(金)11:03 AAS
今やJavaScriptはここまで来た
外部リンク:gigazine.net
202: 2013/03/22(金)11:10 AAS
OdinMonkeyっておぢんモンキーでいいの?
203
(4): 2013/03/22(金)11:37 AAS
AA省
204
(2): 2013/03/22(金)11:38 AAS
AA省
205: 2013/03/22(金)11:54 AAS
それでは、
obj.setMaxLength(1) を
obj.MaxLength = 1 と
間違えてしまうことを防げない。
206
(1): 2013/03/22(金)11:55 AAS
>>203
グローバル変数に隠蔽とは斬新だなw
207: 2013/03/22(金)11:59 AAS
JavaScriptにグローバル変数は存在しない。
208
(1): 2013/03/22(金)12:03 AAS
>>206
実際のプロダクトコードでは、複数階層の名前空間に入れるけどね。
209
(1): 2013/03/22(金)12:08 AAS
>>208
ためしに
var y = new Foo();
y.setMaxLength(200);
x.getMaxLength();
ってやってみたら?
210
(1): 2013/03/22(金)12:21 AAS
>>209
どうなった?
211: 2013/03/22(金)12:40 AAS
>>210
あぁ、203に合わせると最後は
console.log(x.getMaxLength());


とりあえずやってみてよ?
212: 2013/03/22(金)13:16 AAS
基本的にJavaScriptでは「プライベート変数」はあきらめたほうがいいよ。
newも使わない方がいい。
男なら、publicなプロパティだね。
で、結局typoの問題は解決できないけど、それがJavaScriptってもんだ。
嫌ならTypeScriptがいいんじゃね(使ったことないから知らんけど)。
213: 2013/03/22(金)13:25 AAS
そもそもタイポと戦えないような奴はプログラマになっちゃいかん
214: 2013/03/22(金)13:26 AAS
そう、それがたとえ他人の書いたタイポであってもね
215: 2013/03/22(金)13:30 AAS
タイポは神様からの贈り物なんだよ
216
(2): 2013/03/22(金)13:46 AAS
Javaをやってると奴隷とかドカタとか煽れるけど、スペルミスなんて、JavaやC#なら入力した
瞬間にエディタが教えてくれるに、それを人間が目で探すとか、動的型の言語のプログラマは
マシーンですか。
217
(1): 2013/03/22(金)13:59 AAS
JSに限った話じゃないけどテストを書けば問題ないってのは机上の空論だな
>>203もテスト(らしきもの)を書いているけど、結局のところなんのチェックも出来てない訳だし
(203はそろそろ自分の間違いに気がついただろうか?)
218: 2013/03/22(金)14:25 AAS
>>216
チェックツールあるだろw
219: 2013/03/22(金)15:53 AAS
JSか
220: 2013/03/22(金)15:54 AAS
>>203
だからこれは何なんだよw
>var Foo = function() {var maxLength;};
>Foo.prototype.setMaxLength = function(val) {maxLength = val;}
>Foo.prototype.getMaxLength = function() {return maxLength;};
意味がわからんぞw
偉そうなこというまえに基礎からやりなおしてこいよw
221
(1): 2013/03/22(金)15:57 AAS
>>216
打ってる最中に画面見てないのか?
大文字小文字も規約決めてるだろうし…
222: 2013/03/22(金)16:02 AAS
l-1とか0-Oとか他人が打ち間違ったのを尻拭いする任務を与えよう
223: 2013/03/22(金)16:05 AAS
真に恐ろしいのは目の前で裸で立ちすくむソイツではなく
どこに潜んでいるかわからない見えないアイツ
2年前に学ばなかったのか
224: 2013/03/22(金)16:09 AAS
>>204とか
x.getMaxLength()をx.getMaxLengthってミスしてもとりあえず動いてしまうように見えるし最悪w
225: 2013/03/22(金)16:24 AAS
JavaScriptが開発効率高いなんてド素人の妄想
226
(1): 2013/03/22(金)16:27 AAS
>>221
やっぱりスペルミスは目を皿のようにして確認してるのか。
227: 2013/03/22(金)16:29 AAS
安い底辺プログラマが使えるから開発コスト下げられるとか妄想してるんだろうけど
228
(1): 2013/03/22(金)16:30 AAS
上のほうが他人のタイポがどうこう言ってる人がいるけど、
自分ならスペルミスしないってのもそうとう凄いと思う。
229: 2013/03/22(金)16:31 AAS
>>228
「上のほうが」じゃなくて「上のほうで」だな。
頭悪いから日本語でも誤字しまくりだわ。
230: 2013/03/22(金)16:46 AAS
実行時までエラー発覚しないような言語でバイナリ配信とかサポセン死亡か
231
(1): 2013/03/22(金)16:52 AAS
>>217
間違いに気づいたよ。指摘ありがと。
普段はnew使わないんだけど(JSONでサーバからデータを受け取ることがほとんど)、
なんとなくnewの例も書いてみたくなって背伸びしちゃった。

ほとんどの場合がViewかViewModelらしきものを使うから、>>204みたいなコーディングしてる。
あと、try-catchはテストじゃなくて、例外が発生することの確認。

結局、JavaScriptってtypoには無力だと思うんだが、反論ある人居る?
232
(2): 2013/03/22(金)16:57 AAS
>>226
眼を皿って…typoしたときって自分で違和感ない?
「ん?俺今typoしたかな」って…その時だけ見ればいいじゃん
233
(1): 2013/03/22(金)17:01 AAS
>>231
ES5以降で導入された(る)機能を活用すればインタプリンタが検出してくれたり、
エディタで補間なんかもやりやすくなるよ
>>203だってstrict modeならエラーがちゃんとでるし
もうちょっと勉強しましょう
234: 2013/03/22(金)17:24 AAS
>>232
ああそうなの。
おれ、タイポにぜんぜん気づかないときがあるわ。
IDEがスペルミスをチェックしてくれる環境とかすごい楽で好き。

スクリプトのstrictモードに需要があったり、JavaScriptにコンバートする
型付の言語が発表されたりするのをみたら、スペルチェックなんか
機械にやらせたいって人おおいんじゃないの。
235
(1): 2013/03/22(金)17:26 AAS
>>233
それで>>49のtypoの問題は解決できる?
236
(1): 2013/03/22(金)17:31 AAS
>>235
>>111
237: 2013/03/22(金)17:32 AAS
>>236
あー、そういうこと。ならいいや。
238: 2013/03/22(金)18:25 AAS
>>232
俺はちゃんと resultってタイプしてるのに、resalutが正解だったりするからな。
1-
あと 649 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s