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

156: 2013/03/22(金)02:54 AAS
new禁止テクニックの話は一言もしてないw
157: 2013/03/22(金)02:57 AAS
new禁止テクニックのような根本的対策じゃなきゃ意味ないよって言ってるのが
理解できないのか、new禁止テクニックを知らないのか。どっち?
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) } // 誤
1-
あと 702 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s