JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
※前スレ
JavaScript の質問用スレッド vol.122
http://echo.2ch.net/test/read.cgi/tech/1472426483/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
JavaScript の質問用スレッド vol.123 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 73c8-oPzN)
2017/04/03(月) 00:31:25.68ID:82yaJsi70173デフォルトの名無しさん (ワッチョイ 838c-O3YC)
2017/05/14(日) 00:18:55.77ID:UzoQivKq0174デフォルトの名無しさん (ワッチョイ 9321-n/2N)
2017/05/14(日) 00:45:18.37ID:zJfJO46R0 >>167
「値は引数を関数に適用させて作るもの」ってのはラムダ計算の基本的な考え方だから、大抵の関数型言語ならそうじゃない?
そもそも例えばHaskellなんかは今回でいうget_tagを同一スコープ内で何回実行したところで、
引数が同じなら計算結果は最初のものを常に使い回すしね
別に好きに書けばいいんだよ
ただ最初に宣言的って言ってたのが何か勘違いしてそうで引っかかっただけで
「値は引数を関数に適用させて作るもの」ってのはラムダ計算の基本的な考え方だから、大抵の関数型言語ならそうじゃない?
そもそも例えばHaskellなんかは今回でいうget_tagを同一スコープ内で何回実行したところで、
引数が同じなら計算結果は最初のものを常に使い回すしね
別に好きに書けばいいんだよ
ただ最初に宣言的って言ってたのが何か勘違いしてそうで引っかかっただけで
175デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/14(日) 01:10:19.27ID:Rp58SwPv0 >>174
> ただ最初に宣言的って言ってたのが何か勘違いしてそうで引っかかっただけで
これについてはそちらの指摘通り、俺は勘違いしていると思う。
俺は関数型言語を使ってはいないからね。
これは、俺の用語に誤用がある可能性を考慮しつつ話をしてもらうしかない。
> そもそも例えばHaskellなんかは今回でいうget_tagを同一スコープ内で何回実行したところで、
> 引数が同じなら計算結果は最初のものを常に使い回すしね
Haskellってインミュータブルだったっけ?忘れたけど、
確かにインミュータブルだったらこれで終わりだね。
つべこべ言わずに何回も書いても関係ない事になる。
しかもHaskellの場合は遅延評価だから事前に書いても大してオーバーヘッドもない。
まあこの辺が便利なのかもね。
> 大抵の関数型言語ならそうじゃない?
そうか。了解した。
> ただ最初に宣言的って言ってたのが何か勘違いしてそうで引っかかっただけで
これについてはそちらの指摘通り、俺は勘違いしていると思う。
俺は関数型言語を使ってはいないからね。
これは、俺の用語に誤用がある可能性を考慮しつつ話をしてもらうしかない。
> そもそも例えばHaskellなんかは今回でいうget_tagを同一スコープ内で何回実行したところで、
> 引数が同じなら計算結果は最初のものを常に使い回すしね
Haskellってインミュータブルだったっけ?忘れたけど、
確かにインミュータブルだったらこれで終わりだね。
つべこべ言わずに何回も書いても関係ない事になる。
しかもHaskellの場合は遅延評価だから事前に書いても大してオーバーヘッドもない。
まあこの辺が便利なのかもね。
> 大抵の関数型言語ならそうじゃない?
そうか。了解した。
176デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/14(日) 01:12:21.75ID:Rp58SwPv0 すまん、
× インミュータブル
○ 再代入禁止
だね。
× インミュータブル
○ 再代入禁止
だね。
177デフォルトの名無しさん (ワッチョイ cf75-yoyE)
2017/05/14(日) 02:45:59.49ID:wDkNkjbA0 >>157
>> 短絡評価も、後ろの式が実行されるかどうか、分かりにくいので、
>> 使わない方がよいと言われる
> いやそれはCの世界では嘘だ。あっちは短絡評価ありきで組む
後ろの式に、副作用がある場合、バグ含みになるから、危険。
それで、Pythonでは、以下のように書けるようになってる
1 < f() < 10
MISRA-C 2004 のコーディング規則を参照
>> 短絡評価も、後ろの式が実行されるかどうか、分かりにくいので、
>> 使わない方がよいと言われる
> いやそれはCの世界では嘘だ。あっちは短絡評価ありきで組む
後ろの式に、副作用がある場合、バグ含みになるから、危険。
それで、Pythonでは、以下のように書けるようになってる
1 < f() < 10
MISRA-C 2004 のコーディング規則を参照
178デフォルトの名無しさん (ワッチョイ 2370-NgNF)
2017/05/14(日) 05:32:19.86ID:QAEk2mhn0 >>172
俺はお前の見方
俺はお前の見方
179デフォルトの名無しさん (ワッチョイ cf75-yoyE)
2017/05/14(日) 07:47:04.55ID:wDkNkjbA0 <tr>
<td><%= name %></td>
<td><%= gender %></td>
<td><%= job %></td>
</tr>
lodash.js (underscore.js)には、template があるから、
jQueryですべての要素を作らなくても、HTMLファイルに値を埋め込むだけでよい
<td><%= name %></td>
<td><%= gender %></td>
<td><%= job %></td>
</tr>
lodash.js (underscore.js)には、template があるから、
jQueryですべての要素を作らなくても、HTMLファイルに値を埋め込むだけでよい
180デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/14(日) 08:05:39.42ID:Rp58SwPv0 >>177
つかMISRAを持ち出すのなら番号まで指定してくれ。
あれは膨大な数があるんだから。
つっても、見てもそうだとしか書いてないとは思うが。
> 1 < f() < 10
Pythonがそう書けるのはいいとは思うが、そもそもCプログラマで
> 1 < f() && f() < 10
をやる奴はいないんだよ。これは常識だから。
次に、関数型が「参照透過(キリッ」とかやっているのも
Cだと最初からほぼ参照透過なんだよ。
クロージャはないし、グローバルもほぼ使わないんだから。
(通常はポインタを与えないと非参照透過にならない。
ポインタについては明示的に見えるから、
クロージャのある言語のように「参照透過」を気にする必要がない)
だからそこら辺の文化は明らかに違う。
実際、whileループなんて短絡評価ありきでないと組めないし、
俺が出した例なんてマジで頻出だぞ。
で、それを「俺は配列の長さなんて管理したくない。
該当するインデックスが欲しいだけだ」と言うのなら、
コード例も既に出したように、それが明示的には見えないコードにすればいいだけだろ。
ただ俺はあれで効率が上がるとは思えないがね。
根本的に違うのは、
while (i<arr.length && arr[i].prop != xxx) i++;
はCに於いてはarrに対して副作用を持ち得ないんだよ。(通常はvolatileでないから)
ところがJavaScriptではゲッタやプロキシがあるし常用されるから、これだけでは言い切れない。
だからそもそも「副作用」に対する感覚が全然違うんだよ。
つかMISRAを持ち出すのなら番号まで指定してくれ。
あれは膨大な数があるんだから。
つっても、見てもそうだとしか書いてないとは思うが。
> 1 < f() < 10
Pythonがそう書けるのはいいとは思うが、そもそもCプログラマで
> 1 < f() && f() < 10
をやる奴はいないんだよ。これは常識だから。
次に、関数型が「参照透過(キリッ」とかやっているのも
Cだと最初からほぼ参照透過なんだよ。
クロージャはないし、グローバルもほぼ使わないんだから。
(通常はポインタを与えないと非参照透過にならない。
ポインタについては明示的に見えるから、
クロージャのある言語のように「参照透過」を気にする必要がない)
だからそこら辺の文化は明らかに違う。
実際、whileループなんて短絡評価ありきでないと組めないし、
俺が出した例なんてマジで頻出だぞ。
で、それを「俺は配列の長さなんて管理したくない。
該当するインデックスが欲しいだけだ」と言うのなら、
コード例も既に出したように、それが明示的には見えないコードにすればいいだけだろ。
ただ俺はあれで効率が上がるとは思えないがね。
根本的に違うのは、
while (i<arr.length && arr[i].prop != xxx) i++;
はCに於いてはarrに対して副作用を持ち得ないんだよ。(通常はvolatileでないから)
ところがJavaScriptではゲッタやプロキシがあるし常用されるから、これだけでは言い切れない。
だからそもそも「副作用」に対する感覚が全然違うんだよ。
181デフォルトの名無しさん (ワッチョイ cf75-yoyE)
2017/05/14(日) 08:55:23.90ID:wDkNkjbA0 MISRA-C 2004 ルール12.4
論理演算子 && または || の右側のオペランドには、副作用があってはならない。
volatile もダメ
論理演算子 && または || の右側のオペランドには、副作用があってはならない。
volatile もダメ
182デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/14(日) 09:13:34.23ID:Rp58SwPv0183デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/14(日) 11:13:06.81ID:Rp58SwPv0 というか今更気づいたが、カンマ演算子ってほとんどの言語ではないんだな。
むしろある方が異端のようだ。
ある:C/C++, JavaScript, Perl
ない:Java(ただしfor文内のみ可), C#, Ruby, てか多分他全部
JavaScriptの場合は匿名関数をその場で定義して使っても構わないから、
文が書けないからカンマ演算子という時は大抵この方法でも回避出来る。
といっても余計に見にくくなるが。
例: (function(){ /*何かの動作*/ })()
むしろある方が異端のようだ。
ある:C/C++, JavaScript, Perl
ない:Java(ただしfor文内のみ可), C#, Ruby, てか多分他全部
JavaScriptの場合は匿名関数をその場で定義して使っても構わないから、
文が書けないからカンマ演算子という時は大抵この方法でも回避出来る。
といっても余計に見にくくなるが。
例: (function(){ /*何かの動作*/ })()
184デフォルトの名無しさん (アウアウカー Sa67-n/2N)
2017/05/14(日) 12:11:34.87ID:pHcsRThma 普通にif-elseifで書けばいいのに、カンマ演算子にこだわりすぎて暴走しとるな
185デフォルトの名無しさん (ワッチョイ 13bc-O3YC)
2017/05/14(日) 12:37:42.55ID:j3QiJPk20 構文なんだから人間様解るように記述すればいいだけ
ただのオナニー
ただのオナニー
186デフォルトの名無しさん (ワッチョイ 838c-O3YC)
2017/05/14(日) 12:43:51.10ID:UzoQivKq0 関数型風に書けよw
カンマ演算子なんて関数型風でも
一旦変数に入れるだけの話だろ
カンマ演算子なんて関数型風でも
一旦変数に入れるだけの話だろ
187デフォルトの名無しさん (ワッチョイ 838c-O3YC)
2017/05/14(日) 12:49:06.75ID:UzoQivKq0 そういや短絡評価は殆どの言語にあるんだな。
188デフォルトの名無しさん (アウアウカー Sa67-n/2N)
2017/05/14(日) 13:27:08.87ID:pHcsRThma そもそも関数型風のメリットは論理と計算の分離であって、どっちがいいとかじゃないし
三項演算子を使ってcaseAの場合aが返ってくるなら、そうでない場合は同等の型のbが返ってくるのが基本
三項演算子をネストさせるってことはそもそも論理と計算が分離されてない
それを気にしないなら別に好きにすればいいんだよ
見やすい見にくいみたいな主観に任せればいい
三項演算子を使ってcaseAの場合aが返ってくるなら、そうでない場合は同等の型のbが返ってくるのが基本
三項演算子をネストさせるってことはそもそも論理と計算が分離されてない
それを気にしないなら別に好きにすればいいんだよ
見やすい見にくいみたいな主観に任せればいい
189デフォルトの名無しさん (ワッチョイ 838c-O3YC)
2017/05/14(日) 13:30:55.25ID:UzoQivKq0 関数型風にすればconstを使えるようになる。
変数に入れた値が変わらないから、コードを把握しやすくなるし
バグも減るのがメリット
変数に入れた値が変わらないから、コードを把握しやすくなるし
バグも減るのがメリット
190デフォルトの名無しさん (ワッチョイ 2370-NgNF)
2017/05/14(日) 20:32:09.27ID:QAEk2mhn0 全部プロトタイプベースで書けばいいと言うのと同じくらい無意味な綺麗事
つうかconstは長いし普通の人にとっては読みにくい
意地っ張りの価値観の押しつけをする気が無いのなら
手元では好きに書いていいが挙げるときは置換くらいしてくれ
それが最低限のマナー
つうかconstは長いし普通の人にとっては読みにくい
意地っ張りの価値観の押しつけをする気が無いのなら
手元では好きに書いていいが挙げるときは置換くらいしてくれ
それが最低限のマナー
191デフォルトの名無しさん (ワッチョイ 238c-O3YC)
2017/05/14(日) 20:57:23.20ID:pZ8yqHc90 > つうかconstは長いし普通の人にとっては読みにくい
英語読めない人?
英語読めない人?
192デフォルトの名無しさん (アウアウカー Sa67-n/2N)
2017/05/14(日) 21:01:57.87ID:pHcsRThma 新しいものが一般的でないのなんて当たり前なんだよなぁ
いかにそこから普及させれるかだ
先人の叡智を無駄にしてはいけない
いかにそこから普及させれるかだ
先人の叡智を無駄にしてはいけない
193デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/14(日) 21:11:34.04ID:HLo7v2s80 > つうかconstは長いし普通の人にとっては読みにくい
constが長かったらdocument.body.innerHTMLとかもはや解読不能だろ
constが長かったらdocument.body.innerHTMLとかもはや解読不能だろ
194デフォルトの名無しさん (ワッチョイ 13f5-oVa1)
2017/05/14(日) 22:56:24.87ID:LykvO83v0 むしろconstは多用したほうが保守性は上がるでしょ。今時var宣言使っちゃだめよ
195デフォルトの名無しさん (ワッチョイ 3317-gidy)
2017/05/15(月) 07:30:07.09ID:vbGagq9z0 constでキレイにインデントできたら最高なんだけどなぁ
196デフォルトの名無しさん (ブーイモ MM87-xXC6)
2017/05/15(月) 10:39:17.61ID:ChsP7NlFM 仮にconstが消えてもletになるだけで
varにはならん
varにはならん
197デフォルトの名無しさん (エムゾネ FF9f-PEl/)
2017/05/15(月) 11:43:14.43ID:vXJw7fGsF 全部constにするんなら、宣言要らない関数型altJS使えばいいじゃん
198デフォルトの名無しさん (アウアウカー Sa67-n/2N)
2017/05/15(月) 12:37:45.42ID:Nyf5aX+Ca 自分で言語決めれる開発なんてほとんどないし
199デフォルトの名無しさん (ワッチョイ 8392-287W)
2017/05/15(月) 14:42:16.22ID:k1YI7zCW0 ES6なら末尾呼び出し最適化が働くのでforは再帰で書ける
なのてletは不用 constだけで良い インデントも揃う
なのてletは不用 constだけで良い インデントも揃う
200デフォルトの名無しさん (ワッチョイ 2370-NgNF)
2017/05/15(月) 18:12:27.51ID:5bRXjaUX0 >>198
いやいや、フルconstの自由があるならAltJSくらい余裕でしょ
つうかconstの実際価値があるっていうのじゃなくて
単にconst、constって書いて自己満足、安心「感」を得たいだけになってるでしょ
いやいや、フルconstの自由があるならAltJSくらい余裕でしょ
つうかconstの実際価値があるっていうのじゃなくて
単にconst、constって書いて自己満足、安心「感」を得たいだけになってるでしょ
201デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/15(月) 18:39:27.33ID:Z3hdp57V0 マ板っぽい話になってきたな
202デフォルトの名無しさん (ワッチョイ b3d1-Y6YN)
2017/05/15(月) 23:41:39.28ID:rGWruaOX0 ヤフー知恵袋のjavascriptマスターがドヤ顔で公開してるカレンダーのコード読むと、
グローバル変数だらけで非常に見辛いし、グローバル汚染されたコードだった
悪い例として参考になったな。
たまに、参考になる質問と回答が、知恵袋とか2chにあるが、
玉石混交だな、
グローバル変数だらけで非常に見辛いし、グローバル汚染されたコードだった
悪い例として参考になったな。
たまに、参考になる質問と回答が、知恵袋とか2chにあるが、
玉石混交だな、
203デフォルトの名無しさん (ワッチョイ b38c-O3YC)
2017/05/16(火) 00:06:49.67ID:ufkb+DTs0 どれのことかね? JavaScriptマイスターの俺が
修正してあげよう
修正してあげよう
204202 (ワッチョイ b3d1-Y6YN)
2017/05/16(火) 00:25:50.14ID:FdkA0PdW0 >>203
これです。
グローバル変数だらけで、グローバル汚染されているし、
クロージャ使って、モジュールにしろよって思ってしまいます。
非常に読みづらし、解読するのが骨が折れると思われます。
ttp://miwa850125.php.xdomain.jp/programming/content/00001.html
これです。
グローバル変数だらけで、グローバル汚染されているし、
クロージャ使って、モジュールにしろよって思ってしまいます。
非常に読みづらし、解読するのが骨が折れると思われます。
ttp://miwa850125.php.xdomain.jp/programming/content/00001.html
205デフォルトの名無しさん (ワッチョイ b38c-O3YC)
2017/05/16(火) 00:40:25.65ID:ufkb+DTs0206デフォルトの名無しさん (ワッチョイ b38c-O3YC)
2017/05/16(火) 00:47:14.10ID:ufkb+DTs0 × 関数の定義だけ聞いて
○ カレンダーの仕様だけ聞いて
○ カレンダーの仕様だけ聞いて
207デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/16(火) 07:16:46.00ID:bc694O2E0 >>204
> グローバル変数だらけで、グローバル汚染されているし、
> クロージャ使って、モジュールにしろよって思ってしまいます。
まあこれも問題なんだけど、それ以上に構成が酷い。というか平べったすぎ。
こいつそもそもサブルーチンすら使ってなくね?
> 非常に読みづらし、解読するのが骨が折れると思われます。
ちなみにこれは違う。平べったいコードは読むのは面倒だが難しくはない。
ただしまともに読む気にならないが。見た瞬間ゴミだと分かるレベルだし。
俺も>>206に同意だな。
そしてみんなそうらしいぞ。まあそりゃそうだが。
http://miwa850125.php.xdomain.jp/notice/content/00012.html
ただ、素人が組んだ500行前後のコードってこうなりがちではあるんだがね。
(というか多分300-500行程度で組めるはず)
> グローバル変数だらけで、グローバル汚染されているし、
> クロージャ使って、モジュールにしろよって思ってしまいます。
まあこれも問題なんだけど、それ以上に構成が酷い。というか平べったすぎ。
こいつそもそもサブルーチンすら使ってなくね?
> 非常に読みづらし、解読するのが骨が折れると思われます。
ちなみにこれは違う。平べったいコードは読むのは面倒だが難しくはない。
ただしまともに読む気にならないが。見た瞬間ゴミだと分かるレベルだし。
俺も>>206に同意だな。
そしてみんなそうらしいぞ。まあそりゃそうだが。
http://miwa850125.php.xdomain.jp/notice/content/00012.html
ただ、素人が組んだ500行前後のコードってこうなりがちではあるんだがね。
(というか多分300-500行程度で組めるはず)
208デフォルトの名無しさん (ワッチョイ 13f5-oVa1)
2017/05/16(火) 10:23:51.85ID:jyI5CijS0 今時githubで管理してない時点でお察しだな。zipでダウンロードしてーとかしんどすぎる。
209202 (ワッチョイ b3d1-Y6YN)
2017/05/16(火) 19:48:46.02ID:FdkA0PdW0 ちなみに、このカレンダーの作者は
javascript歴17年の自称30〜39歳の女性です。
知恵袋で
「javascrit初心者相手にfor文もわからんのかww」
っておらついてます。
多分、プログラム書いて「動いたwww スゲー 自分は天才やんwww」
とかのレベルで止まってしまったと思われる。
勉強しないと、いつまでも初心者レベルから抜け出せいってことだせない教訓になった
javascript歴17年の自称30〜39歳の女性です。
知恵袋で
「javascrit初心者相手にfor文もわからんのかww」
っておらついてます。
多分、プログラム書いて「動いたwww スゲー 自分は天才やんwww」
とかのレベルで止まってしまったと思われる。
勉強しないと、いつまでも初心者レベルから抜け出せいってことだせない教訓になった
210デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/16(火) 20:45:52.90ID:bc694O2E0 >>209
ついでに言っておくと、
初心者は「コードが読めないのは汚いからだ」と主張しがちだが、実際はそうじゃない。
初心者が技術的に至らないからというケースがほとんどだ。
とはいえ、実際に駄目なコードは散見されるし、初心者がこれらを区別するのは無理だ。
だからこういう場所で聞いてみるのは一つのやり方だとは思う。
そしておそらくこれが目的だろうからこういう回答になる。
実際に高度に組織化されたコードは、初心者には全く読めないと思う。
逆に、こういった平べったいコード、上から順に一通り動いて終わりですね、
みたいなコードの方が初心者にも読める。
そして「上達するのは『書く』時ではなくて『減らす』時だ」という主張をする奴もいて、
実際「書く」よりも「減らす」方が頭を使うのも事実なので、
君がこのコードに相応しい初心者で上達を望んでいる場合、
このコードを減らして同じ動作を得ること、つまりリファクタリングを薦める。
それをやれば、このコードのどこが駄目なのか具体的に分かるし、いい練習になる。
(はっきり言って全部駄目なんだけどさ)
グローバルが〜ってのは実は大した問題じゃない。
(function(){
})()
でくくってやればすぐ解決するだけの話でしょ。
初心者はそういう文法的なところにばかりこだわるから上達しない。
最も重要なのは構造/構成なんだよ。
ついでに言っておくと、
初心者は「コードが読めないのは汚いからだ」と主張しがちだが、実際はそうじゃない。
初心者が技術的に至らないからというケースがほとんどだ。
とはいえ、実際に駄目なコードは散見されるし、初心者がこれらを区別するのは無理だ。
だからこういう場所で聞いてみるのは一つのやり方だとは思う。
そしておそらくこれが目的だろうからこういう回答になる。
実際に高度に組織化されたコードは、初心者には全く読めないと思う。
逆に、こういった平べったいコード、上から順に一通り動いて終わりですね、
みたいなコードの方が初心者にも読める。
そして「上達するのは『書く』時ではなくて『減らす』時だ」という主張をする奴もいて、
実際「書く」よりも「減らす」方が頭を使うのも事実なので、
君がこのコードに相応しい初心者で上達を望んでいる場合、
このコードを減らして同じ動作を得ること、つまりリファクタリングを薦める。
それをやれば、このコードのどこが駄目なのか具体的に分かるし、いい練習になる。
(はっきり言って全部駄目なんだけどさ)
グローバルが〜ってのは実は大した問題じゃない。
(function(){
})()
でくくってやればすぐ解決するだけの話でしょ。
初心者はそういう文法的なところにばかりこだわるから上達しない。
最も重要なのは構造/構成なんだよ。
211デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/16(火) 20:46:28.78ID:bc694O2E0 なお、
> 「javascrit初心者相手にfor文もわからんのかww」
> っておらついてます。
これについては初心者の方が悪い。
for文なんてどの言語でも基本中の基本だし、
そこら辺は最低限押さえてから質問しないと駄目だ。
初心者だからって何でも許されると思っているのはただの傲慢だ。死ねでいい。
> 勉強しないと、いつまでも初心者レベルから抜け出せいってことだせない教訓になった
これも違う。
というか多分、ソフトウェア産業は未だに「上達への王道」を開発出来ていない。
つまり、今現在の方法で「勉強」すれば上達するわけではないということ。
ここら辺は学校教育の物理や数学で
人類が数千年掛けて築き上げた叡智をわずか数年でインストールしてしまうのとは次元が違う。
ソフトウェアは高々100年程度の歴史しかないし、教育方法もよく分かってないんだよ。
だから繰り返すが、今現在溢れている本を仮に全部読んでみても、達人にはなれないよ。
関数型とか言っているのも、実はまだどうすべきか分かってない証拠でもあるしね。
数学や物理は、学校でやってるのが完全に王道だと確定してる。あれとは違うんだよ。
そして、いくら「勉強」しても、駄目な奴は駄目なまま。
ただそれをどうやって改善すればいいのか分かってないんだ。
だからセンター試験みたいな物を作ることが出来ない。
そしてその人が「勉強してない」って事にも(直接的には)ならない。
(実際は勉強してない確率が90%以上だし、
実際書くなり本読むなりすれば『大半の人は』自然と上達するのも事実だけどね)
> 「javascrit初心者相手にfor文もわからんのかww」
> っておらついてます。
これについては初心者の方が悪い。
for文なんてどの言語でも基本中の基本だし、
そこら辺は最低限押さえてから質問しないと駄目だ。
初心者だからって何でも許されると思っているのはただの傲慢だ。死ねでいい。
> 勉強しないと、いつまでも初心者レベルから抜け出せいってことだせない教訓になった
これも違う。
というか多分、ソフトウェア産業は未だに「上達への王道」を開発出来ていない。
つまり、今現在の方法で「勉強」すれば上達するわけではないということ。
ここら辺は学校教育の物理や数学で
人類が数千年掛けて築き上げた叡智をわずか数年でインストールしてしまうのとは次元が違う。
ソフトウェアは高々100年程度の歴史しかないし、教育方法もよく分かってないんだよ。
だから繰り返すが、今現在溢れている本を仮に全部読んでみても、達人にはなれないよ。
関数型とか言っているのも、実はまだどうすべきか分かってない証拠でもあるしね。
数学や物理は、学校でやってるのが完全に王道だと確定してる。あれとは違うんだよ。
そして、いくら「勉強」しても、駄目な奴は駄目なまま。
ただそれをどうやって改善すればいいのか分かってないんだ。
だからセンター試験みたいな物を作ることが出来ない。
そしてその人が「勉強してない」って事にも(直接的には)ならない。
(実際は勉強してない確率が90%以上だし、
実際書くなり本読むなりすれば『大半の人は』自然と上達するのも事実だけどね)
212デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/16(火) 20:50:54.00ID:28fcRnPx0 > ソフトウェア産業
プログラミングはナチュラルに趣味グラマーがハブられることが多くて
いっぱいかなしい
プログラミングはナチュラルに趣味グラマーがハブられることが多くて
いっぱいかなしい
213デフォルトの名無しさん (ワッチョイ 2370-NgNF)
2017/05/16(火) 22:27:17.83ID:UlJ2aQ8H0 それは思い込み、実際は逆だよ
趣味でやってる人達は自由、好きにやればいいだけの優位者
職業としてやってる人達の方にハンデがあるんだから尊重してもらわないと困る
趣味でやってる人達は自由、好きにやればいいだけの優位者
職業としてやってる人達の方にハンデがあるんだから尊重してもらわないと困る
214デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/16(火) 22:45:21.09ID:bc694O2E0 >>212
前それ別スレで話題になっていたが、
個人的には「天然」の方が「養殖」よりも上質だと思っているよ。
ただ毎日毎日コードを眺めているのと、せいぜい月に2〜3日では場数が違うわけでさ。
とはいえ場数をこなせば上達するわけでもないというのは事実なのだが、
個人的には奇妙だとも思っている。
普通は場数をこなせば次第に上達するものではあるからね。
いずれにしても、「勉強しよう」と思うのは良いことだけど、
いわゆる「お勉強」で単純に上達するというものでもないんだ。まだ今は。
さてもう一度見直して気づいた。コードを書き慣れていない奴の特徴は、
・無駄な改行が多い
・空行が多い
これは多分共通だし、初心者でも見て分かるはず。
つかね、10,000行とかのソースだとただでさえスクロールしまくりなので、
1画面に出来るだけ沢山詰め込みたいという欲求が発生し、
空行とか無駄改行は全くやらなくなってくるんだよ。ウザイから。
これは割と共通の癖だと思う。
Pythonerが括弧を嫌うのも閉じ括弧だけの行がウザイからだし。
詰めて書いても今時色分けされるから見間違えることもないし。
(ただもちろん中には例外もいて、どんだけスクロールしても問題ないらしい奴もいる)
見た目、せいぜい50行程度しかまともに書けない奴が、
頑張って2,000行書きました、えっへん!みたいなコードだね。
ただ、これって誰しもが通る道だから、これ自体が悪いとは思わないけど。
なおコード自体は昔の定義の「コピペプログラマ」がこんな感じ。
実は結構いたりすると思うよ。
前それ別スレで話題になっていたが、
個人的には「天然」の方が「養殖」よりも上質だと思っているよ。
ただ毎日毎日コードを眺めているのと、せいぜい月に2〜3日では場数が違うわけでさ。
とはいえ場数をこなせば上達するわけでもないというのは事実なのだが、
個人的には奇妙だとも思っている。
普通は場数をこなせば次第に上達するものではあるからね。
いずれにしても、「勉強しよう」と思うのは良いことだけど、
いわゆる「お勉強」で単純に上達するというものでもないんだ。まだ今は。
さてもう一度見直して気づいた。コードを書き慣れていない奴の特徴は、
・無駄な改行が多い
・空行が多い
これは多分共通だし、初心者でも見て分かるはず。
つかね、10,000行とかのソースだとただでさえスクロールしまくりなので、
1画面に出来るだけ沢山詰め込みたいという欲求が発生し、
空行とか無駄改行は全くやらなくなってくるんだよ。ウザイから。
これは割と共通の癖だと思う。
Pythonerが括弧を嫌うのも閉じ括弧だけの行がウザイからだし。
詰めて書いても今時色分けされるから見間違えることもないし。
(ただもちろん中には例外もいて、どんだけスクロールしても問題ないらしい奴もいる)
見た目、せいぜい50行程度しかまともに書けない奴が、
頑張って2,000行書きました、えっへん!みたいなコードだね。
ただ、これって誰しもが通る道だから、これ自体が悪いとは思わないけど。
なおコード自体は昔の定義の「コピペプログラマ」がこんな感じ。
実は結構いたりすると思うよ。
215デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/16(火) 22:52:40.26ID:bc694O2E0 なんつうかね、
長文に全く慣れてない奴ってこんな風に、いちいち改行したりするでしょ。
それって長文に慣れてるとものすごくウザイでしょ。
余計に読みにくいし。(多分斜め読み出来なくなるから)
だけどコードに慣れてない奴って、やけに改行や空行入れたがるんだよ。
それは、改行をウザイと思うほどコードを読んだことがないってこと。
つまり、初心者だって事だね。
長文に全く慣れてない奴ってこんな風に、いちいち改行したりするでしょ。
それって長文に慣れてるとものすごくウザイでしょ。
余計に読みにくいし。(多分斜め読み出来なくなるから)
だけどコードに慣れてない奴って、やけに改行や空行入れたがるんだよ。
それは、改行をウザイと思うほどコードを読んだことがないってこと。
つまり、初心者だって事だね。
216デフォルトの名無しさん (ワッチョイ 8392-+8ye)
2017/05/16(火) 23:30:21.74ID:28fcRnPx0 「初心者プログラマーにありがちなこと」ってスレタイでプログラマースレに立てるべき内容になってきてるぞ
すぐ「プログラマー」の話にズレていくのは職業プログラマーの悪い癖
すぐ「プログラマー」の話にズレていくのは職業プログラマーの悪い癖
217デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/17(水) 00:00:46.55ID:kS+euEi/0 まあその通りだが、あのコードから技術的にってのは無いからね。
ただ、一般的にあの規模のコードだと、割と平べったくなりがちなのも事実。
これ自体は不思議ではないんだよ。
ちょうど一つのクラスとして切り出すか?というサイズだから。
で、おそらくお互いが相手をヘボだと見なし、
無駄に争っていたのだろうというのも想像に難くない。
先に言ったように、あのコードをさらに大規模化する場合、
functionで囲ってクラスに変える。
そうするとグローバル→インスタンス変数になるわけで、これ自体は問題ない。
だから「グローバルが〜」ってのも初心者にありがちな間違った指摘で、
あの規模のコードならあれで良いんだよ。
結局、文法的なことしか見えない程度のくせに
コードの善し悪しなんて議論するからアレな事になる。
あのコードは不思議なコードではないんだ。
良いコードでもないし、上手いコードでもないけど。
でも誰しもが通る道だよ。
ただ、一般的にあの規模のコードだと、割と平べったくなりがちなのも事実。
これ自体は不思議ではないんだよ。
ちょうど一つのクラスとして切り出すか?というサイズだから。
で、おそらくお互いが相手をヘボだと見なし、
無駄に争っていたのだろうというのも想像に難くない。
先に言ったように、あのコードをさらに大規模化する場合、
functionで囲ってクラスに変える。
そうするとグローバル→インスタンス変数になるわけで、これ自体は問題ない。
だから「グローバルが〜」ってのも初心者にありがちな間違った指摘で、
あの規模のコードならあれで良いんだよ。
結局、文法的なことしか見えない程度のくせに
コードの善し悪しなんて議論するからアレな事になる。
あのコードは不思議なコードではないんだ。
良いコードでもないし、上手いコードでもないけど。
でも誰しもが通る道だよ。
218デフォルトの名無しさん (ワッチョイ b3d1-Y6YN)
2017/05/17(水) 00:11:36.09ID:r9YOxAGU0 「技術的ってか、この辺はセンスの問題だな」ってさ、仕事しててもよく言われる
装置のログの解析とかもそうだけど
なんで1時間とかそこらでログの解析できんだ?
なんで、そんなにコーティング早いんだ?
センスって言われると、習得しずらいんだよな。
まるで職人技だよな
装置のログの解析とかもそうだけど
なんで1時間とかそこらでログの解析できんだ?
なんで、そんなにコーティング早いんだ?
センスって言われると、習得しずらいんだよな。
まるで職人技だよな
219デフォルトの名無しさん (ワッチョイ 9321-n/2N)
2017/05/17(水) 00:43:36.95ID:aIm9uZNt0 センス関係ない
「とりあえず動くコード」で満足するか、より良い品質にこだわるかの考え方の違いだ
「とりあえず動くコード」で満足するか、より良い品質にこだわるかの考え方の違いだ
220デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/17(水) 00:45:04.71ID:kS+euEi/0 >>218
> 仕事しててもよく言われる
つまりセンスが無い方の人なんですね乙
ただまあ「センス」って言っているのは教えようがないからだよ。
それは俺はまだ教育技術が未発達だからだと思っている。
数学とかのセンスって、
「ところでこれをどうやって思いつくんだ?」
であって、明らかに東大とかよりもはるか上のレベルでしょ。
今のプログラミングが要求している「センス」って、もっと断然低いところでしかない。
それでIDEやインテリセンスで効率が上がる(キリッとか間抜けなこといっているわけでさ。
「なるほど確かにこの構造にすれば恐ろしく簡単に実装出来るが、
ところでどうやってこれを思いついたんだ?」では全然無いよね。
フェルマーの最終定理(x^n+y^n=z^n)とか、問題の意味は分かるがどうしろと?だろ。
あれを「センス」と言うべきなんだよ本来は。
> なんで1時間とかそこらでログの解析できんだ?
当たりを付けているからだよ。
映画やアニメでハッカーがでてきたら「ほらビンゴだ!」ってよくやってるだろ。
> なんで、そんなにコーティング早いんだ?
コーディングに速さは必要ない。
最終的にデバッグ終了までの時間が勝負で、実際デバッグの方が遙かに時間かかるでしょ。
ただまあ、あのコードはいずれにしても不思議なコードではないから、
見た瞬間、ああ、このレベルですね、ってのは順当に分かるようになるはずだし、
そこまでの上達にはセンスは必要ないはずだから、
君が今やるべき事は、とにかく何でもいいから書くことだよ。
> 仕事しててもよく言われる
つまりセンスが無い方の人なんですね乙
ただまあ「センス」って言っているのは教えようがないからだよ。
それは俺はまだ教育技術が未発達だからだと思っている。
数学とかのセンスって、
「ところでこれをどうやって思いつくんだ?」
であって、明らかに東大とかよりもはるか上のレベルでしょ。
今のプログラミングが要求している「センス」って、もっと断然低いところでしかない。
それでIDEやインテリセンスで効率が上がる(キリッとか間抜けなこといっているわけでさ。
「なるほど確かにこの構造にすれば恐ろしく簡単に実装出来るが、
ところでどうやってこれを思いついたんだ?」では全然無いよね。
フェルマーの最終定理(x^n+y^n=z^n)とか、問題の意味は分かるがどうしろと?だろ。
あれを「センス」と言うべきなんだよ本来は。
> なんで1時間とかそこらでログの解析できんだ?
当たりを付けているからだよ。
映画やアニメでハッカーがでてきたら「ほらビンゴだ!」ってよくやってるだろ。
> なんで、そんなにコーティング早いんだ?
コーディングに速さは必要ない。
最終的にデバッグ終了までの時間が勝負で、実際デバッグの方が遙かに時間かかるでしょ。
ただまあ、あのコードはいずれにしても不思議なコードではないから、
見た瞬間、ああ、このレベルですね、ってのは順当に分かるようになるはずだし、
そこまでの上達にはセンスは必要ないはずだから、
君が今やるべき事は、とにかく何でもいいから書くことだよ。
221デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/17(水) 00:56:37.57ID:kS+euEi/0 >>219
これはあるね。よく言われる「職人気質」って奴だよ。
プログラミングは自己完結して己の美学を目指せる奴しか上達しない。
これは一般には「職人気質」と言われる。
おそらく職人も同様にこの性格じゃないと上達しないため、
結果的に生き残っている職人はこのタイプが多くなるのだと思う。
だからそうじゃない奴は、向いてないから止めた方がいい。
あのコードは、まさに
> 「とりあえず動くコード」で満足する
タイプが書くコードなんだよ。だから悪いと言うほど悪いコードでもない。
なんつーか、手堅く動くだろうが、動くだけのコードですねってとこ。
しかしカレンダーなんて今更仕様変更はないし、保守性なんてどうでもいい。
自分で書き直すのもかったるいし、俺的には渡されたら使うかは迷うところだね。
これはあるね。よく言われる「職人気質」って奴だよ。
プログラミングは自己完結して己の美学を目指せる奴しか上達しない。
これは一般には「職人気質」と言われる。
おそらく職人も同様にこの性格じゃないと上達しないため、
結果的に生き残っている職人はこのタイプが多くなるのだと思う。
だからそうじゃない奴は、向いてないから止めた方がいい。
あのコードは、まさに
> 「とりあえず動くコード」で満足する
タイプが書くコードなんだよ。だから悪いと言うほど悪いコードでもない。
なんつーか、手堅く動くだろうが、動くだけのコードですねってとこ。
しかしカレンダーなんて今更仕様変更はないし、保守性なんてどうでもいい。
自分で書き直すのもかったるいし、俺的には渡されたら使うかは迷うところだね。
222デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/17(水) 01:17:15.04ID:kS+euEi/0 ところでMapだが、
> for (var [key, value] of myMap.entries()) {
> console.log(key + " = " + value);
> }
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
これって分割代入で、chrome49〜ですってオチあり?
Mapはchrome38からになっているし、entries()もそうなのだけど。
> for (var [key, value] of myMap.entries()) {
> console.log(key + " = " + value);
> }
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
これって分割代入で、chrome49〜ですってオチあり?
Mapはchrome38からになっているし、entries()もそうなのだけど。
223デフォルトの名無しさん (ワッチョイ b38c-O3YC)
2017/05/17(水) 01:34:13.73ID:y0sg8W2t0 >>222
babelを使えば古いブラウザでも動くのではないか?
babelを使えば古いブラウザでも動くのではないか?
224デフォルトの名無しさん (ワッチョイ 43c8-SU9n)
2017/05/17(水) 01:44:59.69ID:kS+euEi/0 いや無駄に対応バージョン上げたくないんだ。
やっぱそうなんだよな?
今回はkeys()で1箇所書き直せばいいだけだからそうするよ。サンクス。
やっぱそうなんだよな?
今回はkeys()で1箇所書き直せばいいだけだからそうするよ。サンクス。
225デフォルトの名無しさん (ワッチョイ 2370-NgNF)
2017/05/17(水) 07:29:14.42ID:L5+4x8hM0 Chromeのバージョンを気にする、しかも10も前とか普通じゃないな
226デフォルトの名無しさん (ワッチョイ f7d1-kLyQ)
2017/05/18(木) 23:57:01.79ID:QkFLciDt0 オレがいままで作ったjavascriptのアプリケーション
・画像うuplodar (2012年から公開してる今年で5年目)
→javascript,html5,mysql,phpで作成
・単語帳(非公開、TOECI勉強用に使った自分専用の単語帳)
→複数のtxtに書いたjsonデータの文字列を読みんで表にして表示する
今のとこ、とりあえず動くレベル→自分で読みづらいとこと修正と改善
を延々とやってる。
ってか、仕事と英語の勉強が忙しいから、javascript勉強してる暇があまりない
購入して積ん読になってる、日経ソフトウェアのjavascript特集を読みたいがいまいち暇がない
・画像うuplodar (2012年から公開してる今年で5年目)
→javascript,html5,mysql,phpで作成
・単語帳(非公開、TOECI勉強用に使った自分専用の単語帳)
→複数のtxtに書いたjsonデータの文字列を読みんで表にして表示する
今のとこ、とりあえず動くレベル→自分で読みづらいとこと修正と改善
を延々とやってる。
ってか、仕事と英語の勉強が忙しいから、javascript勉強してる暇があまりない
購入して積ん読になってる、日経ソフトウェアのjavascript特集を読みたいがいまいち暇がない
227デフォルトの名無しさん (ワッチョイ 0ff5-sZ5x)
2017/05/19(金) 00:58:06.06ID:+ix37Tej0 むしろchromeの古いバージョン使う方法ってあるの?ネットが使えない環境とか?
228デフォルトの名無しさん (ワッチョイ cb7b-kvD5)
2017/05/19(金) 21:19:25.76ID:PWVc802d0 ReduxはReact専用じゃないというけど、React以外で使いやすいのはどのフレームワークかな?
229デフォルトの名無しさん (ワンミングク MM3a-lo86)
2017/05/20(土) 00:04:22.78ID:T9Vl1Go7M >>227
サブの動作確認用スマホとか古いままだけどなぁ
サブの動作確認用スマホとか古いままだけどなぁ
230デフォルトの名無しさん (ワッチョイ fff5-sZ5x)
2017/05/20(土) 04:04:11.15ID:Q+8+XcCz0231デフォルトの名無しさん (ワッチョイ cb7b-kvD5)
2017/05/20(土) 08:41:00.64ID:ZTnw5ZtI0 その「subscribeするだけ」の具体的なやりかたを知らないんで、そういうライブラリや資料が
そろっていたりして使いやすいものがあるか探してる。
Reactならreact-redux入れてその通りにやればよかったんだけど。
>>230は何のフレームワークを使ってどんなふうにやったことがあるの?
そろっていたりして使いやすいものがあるか探してる。
Reactならreact-redux入れてその通りにやればよかったんだけど。
>>230は何のフレームワークを使ってどんなふうにやったことがあるの?
232デフォルトの名無しさん (ワッチョイ 9ec8-icqO)
2017/05/20(土) 11:00:51.79ID:Vxiesmpy0 phinaとかpixiとかenchantとか色々あるけど結局ゲーム製作用ライブラリとしてはどれがいいの?
233デフォルトの名無しさん (スププ Sdea-OyqH)
2017/05/20(土) 11:43:08.14ID:2QFlCqZ1d それらはゲームにも使えるというだけの汎用描画フレームワークだから
本当に描画部分から音周りまで完璧に揃っているフレームワークは
例えばノベル専用みたいな汎用性の無いものしかない。
ガチで作りたいならやっぱりUnity等のゲームエンジンからの書き出ししかない。
本当に描画部分から音周りまで完璧に揃っているフレームワークは
例えばノベル専用みたいな汎用性の無いものしかない。
ガチで作りたいならやっぱりUnity等のゲームエンジンからの書き出ししかない。
234デフォルトの名無しさん (ワッチョイ fff5-sZ5x)
2017/05/20(土) 17:11:04.67ID:Q+8+XcCz0235デフォルトの名無しさん (ワッチョイ fff5-sZ5x)
2017/05/20(土) 17:16:56.10ID:Q+8+XcCz0 >>231
ごめんreactからしか使ったことはないけどchrome-extension作るのに使ってて、react以外からdispatch投げたり、イベント処理する必要があるからよく使う。
なんつーかただのjsonの塊だよね結局。typescriptから使ってるから問題ないけど、素のjsから使うとなるとあの巨大なjsonの塊をよくいじれるよなーと思う。
ごめんreactからしか使ったことはないけどchrome-extension作るのに使ってて、react以外からdispatch投げたり、イベント処理する必要があるからよく使う。
なんつーかただのjsonの塊だよね結局。typescriptから使ってるから問題ないけど、素のjsから使うとなるとあの巨大なjsonの塊をよくいじれるよなーと思う。
236デフォルトの名無しさん (ワッチョイ cb7b-kvD5)
2017/05/20(土) 22:18:55.23ID:ZTnw5ZtI0 なるほど、ありがとう
237デフォルトの名無しさん (ワッチョイ 9f21-UzNQ)
2017/05/21(日) 16:49:46.53ID:BQHBWsZS0 要素数が1か1以上かわからない(0ではない)配列をsortするとき、特に要素数を
数えて条件分岐しなくてもそのままsort関数適用させてもいいですかね?
何かパフォーマンス的に問題出たりしますか?
数えて条件分岐しなくてもそのままsort関数適用させてもいいですかね?
何かパフォーマンス的に問題出たりしますか?
238デフォルトの名無しさん (ワッチョイ ca88-aHqd)
2017/05/21(日) 18:45:14.37ID:Qcnnq4EA0 elmはいいぞー
239デフォルトの名無しさん (ワッチョイ 4ec8-KLhJ)
2017/05/21(日) 21:42:26.20ID:feqlkx7U0 >>237
問題は出ますん
問題は出ますん
240デフォルトの名無しさん (ワッチョイ 678c-bwHs)
2017/05/21(日) 22:26:43.45ID:8o9mWviY0241デフォルトの名無しさん (ワンミングク MM3a-lo86)
2017/05/21(日) 22:55:20.58ID:fcCJNl/UM そのレベルで効率化ガーは本当に間抜けな話だとおもうよ
何も変わらんさ考えるだけ時間の無駄でただのオナニー行為
最近流行のHTML5でのパーティクル表現なんて毎秒数百オブジェクト新たに生成して一定時間生存させ消していく
その管理の配列がどんどんインデックス追加でオブジェクトがあるかないかのif判定を毎秒数万、数十万とかやってるプログラムとかよく見る
馬鹿げた設計だとおもってもそれで普通に動いてるから笑える
今はそんな時代だよ
何も変わらんさ考えるだけ時間の無駄でただのオナニー行為
最近流行のHTML5でのパーティクル表現なんて毎秒数百オブジェクト新たに生成して一定時間生存させ消していく
その管理の配列がどんどんインデックス追加でオブジェクトがあるかないかのif判定を毎秒数万、数十万とかやってるプログラムとかよく見る
馬鹿げた設計だとおもってもそれで普通に動いてるから笑える
今はそんな時代だよ
242デフォルトの名無しさん (ワッチョイ 9f21-UzNQ)
2017/05/21(日) 23:52:11.78ID:BQHBWsZS0 皆さんありがとうございます
上司が割と効率にうるさいので怒られるのが嫌で気になった次第です
問題ないみたいなのでこのままいきます
上司が割と効率にうるさいので怒られるのが嫌で気になった次第です
問題ないみたいなのでこのままいきます
243デフォルトの名無しさん (ワンミングク MM3a-lo86)
2017/05/22(月) 00:04:03.94ID:FRIGOkgNM >>242
効率化というより、ソースのわかりやすさ、管理のしやすさを考えればいいよ
判定文を入れることで皆がわかりやすくなるなら入れれば良いし
今度どう使われるかはっきりわからないモジュールならエラー処理をしっかりいれるとか
効率化というより、ソースのわかりやすさ、管理のしやすさを考えればいいよ
判定文を入れることで皆がわかりやすくなるなら入れれば良いし
今度どう使われるかはっきりわからないモジュールならエラー処理をしっかりいれるとか
244あ (スププ Sdea-qU+J)
2017/05/22(月) 00:15:50.44ID:KxRThp41d これで効率云々言われるなら、保守の効率引き合いに出して揉めたほうが良いと思う。
245デフォルトの名無しさん (ワッチョイ 0bc8-kvD5)
2017/05/22(月) 01:16:10.94ID:jp4wTISD0 つかその上司もここで怒る事はないだろ。
新人なりに思いついたから聞いてみただけだろ。
てか上司に聞けよ。
新人なりに思いついたから聞いてみただけだろ。
てか上司に聞けよ。
246デフォルトの名無しさん (スププ Sdea-OyqH)
2017/05/22(月) 11:36:54.13ID:0kkPVdOqd そこまで気にすることはないけど、理由がここまで言われてるのとは違う
実装見れば分かるけどsort関数は要素数などによってアルゴリズムが使い分けられてて、汎用的なソート関数としてはこれ以上ないくらい最適化されている。
エンジン側の主張は、それ以上を求めるなら専門的なアルゴリズムのものを自作しろとのこと。
実装見れば分かるけどsort関数は要素数などによってアルゴリズムが使い分けられてて、汎用的なソート関数としてはこれ以上ないくらい最適化されている。
エンジン側の主張は、それ以上を求めるなら専門的なアルゴリズムのものを自作しろとのこと。
247デフォルトの名無しさん (ワッチョイ 0bc8-kvD5)
2017/05/22(月) 20:24:53.55ID:jp4wTISD0 ちげーだろ。つか>>246はもうちょっと状況を把握しろ。
よく上司に「無駄なことをするな」と言われる新人がいて、
そいつがふと「要素数1のArrayに対してsortは無駄じゃね?」と考えた。
だからここで聞いてみた。結果はご覧の通り。
新人だから何が無駄で何が無駄ではないのか分かってないんだよ。
それは仕方ない。だから新人なりに考えてみた、これは正しい。
しかしこのレベルの話は上司に聞いたほうがいい。
俺たちに聞いて回答が食い違ったとき、誰が正しいか新人君には分からないだろ?
現在のところキチガイは現れておらず、常識的な回答が揃っているが、これは偶々。
ここにはマジで頭おかしい奴はいる。
最低限そいつらを見分ける能力がないと、ここは使えない。いわゆる嘘を嘘と(ry
だったらとりあえず一応は信頼できる(ことになっている)上司に聞いたほうがいい。
そして、どうしてもその上司の判定に納得できなければ、ここで出来るだけ詳しく晒せ。
そしたら俺たちがどっちの頭がおかしいか判定してやるから。
なお質問は、「arr.sort() は if (arr.length>1) arr.sort() にすべきか?」だろ。
ここには日本語が不自由な奴もいる。
誤解無く伝えたいのなら、コードで書くのも手だよ。
よく上司に「無駄なことをするな」と言われる新人がいて、
そいつがふと「要素数1のArrayに対してsortは無駄じゃね?」と考えた。
だからここで聞いてみた。結果はご覧の通り。
新人だから何が無駄で何が無駄ではないのか分かってないんだよ。
それは仕方ない。だから新人なりに考えてみた、これは正しい。
しかしこのレベルの話は上司に聞いたほうがいい。
俺たちに聞いて回答が食い違ったとき、誰が正しいか新人君には分からないだろ?
現在のところキチガイは現れておらず、常識的な回答が揃っているが、これは偶々。
ここにはマジで頭おかしい奴はいる。
最低限そいつらを見分ける能力がないと、ここは使えない。いわゆる嘘を嘘と(ry
だったらとりあえず一応は信頼できる(ことになっている)上司に聞いたほうがいい。
そして、どうしてもその上司の判定に納得できなければ、ここで出来るだけ詳しく晒せ。
そしたら俺たちがどっちの頭がおかしいか判定してやるから。
なお質問は、「arr.sort() は if (arr.length>1) arr.sort() にすべきか?」だろ。
ここには日本語が不自由な奴もいる。
誤解無く伝えたいのなら、コードで書くのも手だよ。
248デフォルトの名無しさん (ワッチョイ 4a8c-bwHs)
2017/05/22(月) 21:36:29.80ID:6t8os15O0 > よく上司に「無駄なことをするな」と言われる新人がいて、
普通は無駄な作業って意味だよ。
人的コスト=時間がかからない方法を選択しろといういこと
問題になってない部分のパフォーマンスの良し悪しに
悩むっていうのも無駄な作業の一つ
ただ新人の場合は、特に勉強しないと無駄な作業が減らせない。
無駄な作業を減らすにも、時間がかかる。
だから上級者によって「無駄なことをしないコード」が
必ずしも時間がからない方法とは限らない。
どれだけ勉強すればいいかは本人次第なのだから、他人にそれがわかるわけがない。
だからこういう場では上級者(質問に答える人)にとって無駄がないコードを提示するしかない
質問に答える人は、もし前提となる知識が特殊なものや大きければ、○○を知っているならば、
この方法を使うのが一番無駄がない(=時間がかからない)と答えるのが良いだろう。
普通は無駄な作業って意味だよ。
人的コスト=時間がかからない方法を選択しろといういこと
問題になってない部分のパフォーマンスの良し悪しに
悩むっていうのも無駄な作業の一つ
ただ新人の場合は、特に勉強しないと無駄な作業が減らせない。
無駄な作業を減らすにも、時間がかかる。
だから上級者によって「無駄なことをしないコード」が
必ずしも時間がからない方法とは限らない。
どれだけ勉強すればいいかは本人次第なのだから、他人にそれがわかるわけがない。
だからこういう場では上級者(質問に答える人)にとって無駄がないコードを提示するしかない
質問に答える人は、もし前提となる知識が特殊なものや大きければ、○○を知っているならば、
この方法を使うのが一番無駄がない(=時間がかからない)と答えるのが良いだろう。
249デフォルトの名無しさん (ワッチョイ 0bc8-kvD5)
2017/05/22(月) 22:57:40.88ID:jp4wTISD0250デフォルトの名無しさん (ワッチョイ 9f92-cm4/)
2017/05/22(月) 23:11:11.24ID:XhRKlUOx0 javascriptスレかと思ったら社畜プログラマーが新人指導についてご高説を垂れていた
251デフォルトの名無しさん (ワッチョイ 4ec8-KLhJ)
2017/05/22(月) 23:29:33.71ID:vGCFGEpe0 おまいらそんなすぐ煽るなや
252デフォルトの名無しさん (ワンミングク MM3a-lo86)
2017/05/22(月) 23:30:12.68ID:FRIGOkgNM >>248
だからさー、配列要素1の時にif文かますのとそのままソート掛けるのとどっちが効率いいかおまえにわかるのか?ん?
環境の実装しだいだろそんなもん
どちらにせよ何も気にするレベルじゃないという回答以外に何があるっているんだ?ん?
だからさー、配列要素1の時にif文かますのとそのままソート掛けるのとどっちが効率いいかおまえにわかるのか?ん?
環境の実装しだいだろそんなもん
どちらにせよ何も気にするレベルじゃないという回答以外に何があるっているんだ?ん?
253デフォルトの名無しさん (ワッチョイ 9f21-UzNQ)
2017/05/22(月) 23:37:56.72ID:GGalZ9mO0 変なこと聞いてスレを荒れたような結果にしてしまってすみません
254デフォルトの名無しさん (ワッチョイ 4a8c-bwHs)
2017/05/22(月) 23:40:11.09ID:6t8os15O0255デフォルトの名無しさん (ワッチョイ 9f92-cm4/)
2017/05/22(月) 23:40:15.75ID:XhRKlUOx0256デフォルトの名無しさん (ワッチョイ 4a8c-bwHs)
2017/05/22(月) 23:41:49.08ID:6t8os15O0257デフォルトの名無しさん (ワッチョイ 9f92-cm4/)
2017/05/22(月) 23:49:15.91ID:XhRKlUOx0 「パフォーマンスの問題」について質問したのにいつの間にかに「作業コスト」の問題に変わっている
これが動的型付けって奴だな
これが動的型付けって奴だな
258デフォルトの名無しさん (ワッチョイ cb92-a1Gw)
2017/05/22(月) 23:55:39.55ID:CEFnqLB20 Array.prototype.sortに判定させた方が当然に速い
259デフォルトの名無しさん (ワッチョイ 0bc8-kvD5)
2017/05/23(火) 00:00:19.33ID:ac/v7j2N0260デフォルトの名無しさん (ワッチョイ 9f92-cm4/)
2017/05/23(火) 00:05:49.69ID:OxXI/az90261デフォルトの名無しさん (アウアウカー Sacb-UzNQ)
2017/05/23(火) 15:57:30.36ID:i5pqu4ALa >>259
ありがとうございます
そうですね…業務上のコードは自分なりに調べてからちゃんと上司に相談します
あとこれは仕事は全然関係なくてちょっと気になっただけなので恐縮ですが、JavaScriptには擬似的な
プライベート変数を持たせるためにクロージャという仕組みがあって、関数内で関数を宣言できると聞きました
その場合
function hoge(){
function piyo(){ }
}
と
function hoge(){
var piyo = function(){};
}
という二種類の宣言方法があって、「前者は呼び出し時に巻き上げされて後者はされない」というところまでは
わかったのですが、それだけだと後者にするメリットが無いような気がするのですが、何か他に
抑えておくべきポイントはありますか?
普通は皆さんどちらを使われてるんでしょう
ありがとうございます
そうですね…業務上のコードは自分なりに調べてからちゃんと上司に相談します
あとこれは仕事は全然関係なくてちょっと気になっただけなので恐縮ですが、JavaScriptには擬似的な
プライベート変数を持たせるためにクロージャという仕組みがあって、関数内で関数を宣言できると聞きました
その場合
function hoge(){
function piyo(){ }
}
と
function hoge(){
var piyo = function(){};
}
という二種類の宣言方法があって、「前者は呼び出し時に巻き上げされて後者はされない」というところまでは
わかったのですが、それだけだと後者にするメリットが無いような気がするのですが、何か他に
抑えておくべきポイントはありますか?
普通は皆さんどちらを使われてるんでしょう
262デフォルトの名無しさん (アウアウウー Sa2f-rMcO)
2017/05/23(火) 19:13:13.15ID:3X8zsS83a >>261
正解は人それぞれだが、関数定義後に関数呼び出しをするのは一般的で、そう決める事で厳格なコードになる。
前者のコードの場合、関数定義より手前で関数呼び出し出来るが、後者は出来ない。
従って、ある関数定義を見つけたい場合、関数呼び出しより前に存在する事が確約されており、関数呼び出しコードの後ろを読む必要はない。
前者はコーディング規約で制限することは出来ても、後述で関数定義されることを止めることが出来ない。
最も、そのあたりを気にする人は let, const を使用する方が無難ではあるが。
IE10- がMicrosoftのサポート対象外となった今では const, let の実用性は増している。
http://kangax.github.io/compat-table/es6/
正解は人それぞれだが、関数定義後に関数呼び出しをするのは一般的で、そう決める事で厳格なコードになる。
前者のコードの場合、関数定義より手前で関数呼び出し出来るが、後者は出来ない。
従って、ある関数定義を見つけたい場合、関数呼び出しより前に存在する事が確約されており、関数呼び出しコードの後ろを読む必要はない。
前者はコーディング規約で制限することは出来ても、後述で関数定義されることを止めることが出来ない。
最も、そのあたりを気にする人は let, const を使用する方が無難ではあるが。
IE10- がMicrosoftのサポート対象外となった今では const, let の実用性は増している。
http://kangax.github.io/compat-table/es6/
263デフォルトの名無しさん (アウアウカー Sacb-UzNQ)
2017/05/23(火) 19:27:23.00ID:OSHuKcjsa264デフォルトの名無しさん (エムゾネ FFbf-2jdj)
2017/05/25(木) 02:28:11.58ID:XwREWC52F >>247
だからそれも含めて気にする必要ないといったんだよ
だからそれも含めて気にする必要ないといったんだよ
265デフォルトの名無しさん (ワッチョイ 9f8c-yauO)
2017/05/25(木) 02:46:59.65ID:kwmzBMx/0 >>262
> 正解は人それぞれだが、関数定義後に関数呼び出しをするのは一般的で、そう決める事で厳格なコードになる。
php、perlでは関数定義より手前で関数呼び出しができますよね?
関数定義後に関数呼出しするのが一般的という根拠はなんでしょうか?
> 正解は人それぞれだが、関数定義後に関数呼び出しをするのは一般的で、そう決める事で厳格なコードになる。
php、perlでは関数定義より手前で関数呼び出しができますよね?
関数定義後に関数呼出しするのが一般的という根拠はなんでしょうか?
266デフォルトの名無しさん (ワンミングク MMbf-C8dY)
2017/05/25(木) 04:37:45.02ID:EJLYJcDnM この痛いおっさんのせいで毎回荒れるな
267デフォルトの名無しさん (ワッチョイ 4b92-nHMD)
2017/05/25(木) 07:07:39.46ID:sTAredU30 JavaScriptを勉強しようとしてる
目標として言語仕様の習得段階を分けようとしてるんだけど良い切り分け段階ないかな??
C++なら変数の型、ポインタ、クラスの基本的な扱い方みたいな
htmlの基本的な扱い方と、JavaScriptの連動がはじめにくるのかなって思うけど次の段階はなにだろうか
目標として言語仕様の習得段階を分けようとしてるんだけど良い切り分け段階ないかな??
C++なら変数の型、ポインタ、クラスの基本的な扱い方みたいな
htmlの基本的な扱い方と、JavaScriptの連動がはじめにくるのかなって思うけど次の段階はなにだろうか
268デフォルトの名無しさん (ワッチョイ 9f8c-yauO)
2017/05/25(木) 09:45:27.07ID:kwmzBMx/0 もともと関数定義後に関数呼び出しをするというのは
C言語ではプロトタイプ宣言と言われ、
正確に言うならばこっちは関数呼び出しができるか?ではなく
コンパイルができるか?という話なので少し意味が違うが、
まあ、ともかく特殊な方法が必要だった。
それが面倒だってことで改良したJavaでは、
関数定義の順番とは無関係に関数呼び出しが
コンパイルできるようになった。
コンパイル言語とスクリプト言語の違いがあるから全く同じ考え方ではないが、
定義の順番とは無関係に呼び出せる設計に進化してきている。
巻き上げという仕様だって本来はないほうが実装は簡単なんだよ。
だけど定義の順番とは無関係に呼び出せるようにあえてそういう機能を搭載している
だから関数定義後に関数呼び出しをするのは一般的といわれると違和感がある
C言語ではプロトタイプ宣言と言われ、
正確に言うならばこっちは関数呼び出しができるか?ではなく
コンパイルができるか?という話なので少し意味が違うが、
まあ、ともかく特殊な方法が必要だった。
それが面倒だってことで改良したJavaでは、
関数定義の順番とは無関係に関数呼び出しが
コンパイルできるようになった。
コンパイル言語とスクリプト言語の違いがあるから全く同じ考え方ではないが、
定義の順番とは無関係に呼び出せる設計に進化してきている。
巻き上げという仕様だって本来はないほうが実装は簡単なんだよ。
だけど定義の順番とは無関係に呼び出せるようにあえてそういう機能を搭載している
だから関数定義後に関数呼び出しをするのは一般的といわれると違和感がある
269デフォルトの名無しさん (ワッチョイ 9f8c-yauO)
2017/05/25(木) 09:55:31.20ID:kwmzBMx/0 それから変数の巻き上げと関数の巻き上げは意味が違う。
変数の巻き上げは、その変数が使えたとしても
無効な値(undefined)が入っているから通常は役に立たないが
関数の巻き上げ
foo();
function foo() {}
↑こういうのは、正常に動作する。
"正しく動かない" からメリットがない。だから変数の巻き上げは危険
という話なので、 そもそもの前提が違って
"正しく動く" ならば、なんのデメリットもないんだよ。
変数の巻き上げは、その変数が使えたとしても
無効な値(undefined)が入っているから通常は役に立たないが
関数の巻き上げ
foo();
function foo() {}
↑こういうのは、正常に動作する。
"正しく動かない" からメリットがない。だから変数の巻き上げは危険
という話なので、 そもそもの前提が違って
"正しく動く" ならば、なんのデメリットもないんだよ。
270デフォルトの名無しさん (ワッチョイ 9f8c-yauO)
2017/05/25(木) 10:03:02.23ID:kwmzBMx/0 >>262
> 最も、そのあたりを気にする人は let, const を使用する方が無難ではあるが。
本末転倒。
var piyo = function(){}; なんて書き方を使うから、
piyoが書き換えられたらどうする?
constにした方がいいんじゃね?なんて話が出てくる
function piyo(){ } であれば piyo に別の関数を代入することはない。
もちろん代入できるが誰もこんなコード↓は書かないだろ?
function piyo() {}
piyo = function() {}
そしてこんなコードを書いたら関数に代入すんなと
ESLintでちゃんと警告出してくれる。
> 最も、そのあたりを気にする人は let, const を使用する方が無難ではあるが。
本末転倒。
var piyo = function(){}; なんて書き方を使うから、
piyoが書き換えられたらどうする?
constにした方がいいんじゃね?なんて話が出てくる
function piyo(){ } であれば piyo に別の関数を代入することはない。
もちろん代入できるが誰もこんなコード↓は書かないだろ?
function piyo() {}
piyo = function() {}
そしてこんなコードを書いたら関数に代入すんなと
ESLintでちゃんと警告出してくれる。
271デフォルトの名無しさん (ワッチョイ fb92-/6qz)
2017/05/25(木) 10:30:51.91ID:DNIeToc+0 テキストファイルは行ごとに順番に読み込んでいくからな
順番があったほうが分かりやすい
プログラミングのコードは、特にスクリプト言語のコードは
プログラムを動かすための命令であると同時に
それ自体がプログラムで分析される対象となりうるテキストファイルでもあるのだ
順番があったほうが分かりやすい
プログラミングのコードは、特にスクリプト言語のコードは
プログラムを動かすための命令であると同時に
それ自体がプログラムで分析される対象となりうるテキストファイルでもあるのだ
272デフォルトの名無しさん (ワッチョイ 9f8c-yauO)
2017/05/25(木) 10:46:20.22ID:kwmzBMx/0 関数の呼び出しは順番に実行しないし、
順番に実行すると言うならばなおのこと
このように書いたほうがわかりやすい
step1();
step2();
function step1() {
step1_1();
step1_2();
}
function step1_1() {
・・・
}
function step1_2() {
・・・
}
function step2(); {
・・・
}
順番に実行すると言うならばなおのこと
このように書いたほうがわかりやすい
step1();
step2();
function step1() {
step1_1();
step1_2();
}
function step1_1() {
・・・
}
function step1_2() {
・・・
}
function step2(); {
・・・
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【悲報】SANA、発言撤回拒否 [769931615]
- カルピスみたいに水で薄めるジュースでおすすめ他にない?
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 俺性格悪いなって思った瞬間あげてけ
