トップページ > プログラム > 2016年06月11日 > ZhHlBSFM

書き込み順位&時間帯一覧

4 位/199 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000006315001016



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
オブジェクト指向システムの設計 170 [無断転載禁止]©2ch.net

書き込みレス一覧

+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
547 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:07:35.34 ID:ZhHlBSFM
>>537
良い記事だ。
が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
俺は展開して書いていて、特に問題を感じない。
要求が「脳筋無限ループの例ぐらい単純な構造で」「非同期処理を実現する」
「処理は上から下へ」「ネストが深くならない」ならば、これでいいと思うのだが。
好きずきはあると思うが、このような場合にでも例としても出てこないのは謎なんだが。

function Main(){
console.log("a");
setTimeout(Main_1,2000);

function Main_1(){
console.log("b");
setTimeout(Main_2,1000);
}
function Main_2(){
console.log("c");
}
}
Main();
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
551 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:26:52.64 ID:ZhHlBSFM
>>549
そうか?ぶった切られているだけで、実は同じだろ。追加部分を見やすいように編集しておいた。
同期的に「放り投げて終わり」にしたいという気持ちも分かるが、無理にネスト/Promise化するより見やすくないか?
脳内 s/setTimeout...function(){// で全く問題ないはずだが。

function Main(){
console.log("a");

setTimeout(Main_1,2000); // 追加
function Main_1(){ // 追加

console.log("b");

setTimeout(Main_2,1000); // 追加
} // 追加
function Main_2(){ // 追加

console.log("c");

} // 追加
}
Main();
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
554 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:36:17.69 ID:ZhHlBSFM
>>550
「名前」が増えるのは事実だけど、関数内関数で隠蔽するし、
そもそも処理を必ず「上から下に」書くのでその点は問題にならない。
つまり、このように展開した場合、その関数は直前のsetTimeoutからしか呼ばれない。
したがって、覚える必要はないし、
処理があちこちに飛ぶこともない。(ただこれはそう書く、ということだが)

ちなみにクロージャーにはなっている。

> もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。
いや、結構糞長い奴もそこに書くよね?
$.ajaxとかその場にだらだら全部書くほうが普通じゃないか?
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
556 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:39:52.50 ID:ZhHlBSFM
>>553
ああ、ちょっと遅れたが、それは既に書いたように、俺内コーディングルール

処理を必ず「上から下に」書く

で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
「上から下に」書けるところでは「上から下に」書くのが常識だろ。
名前もこの手の場合は XXX_1, XXX_2, ..... と順に付けていく。おかしな名前を付けたりすることはない。
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
560 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:44:38.09 ID:ZhHlBSFM
>>555
何が言いたいのか分からんが、これでいいか?

function Main(){
var count = 0;
console.log('a: '+count++);
setTimeout(Main_1,2000);

function Main_1(){
console.log('b: '+count++);
setTimeout(Main_2,1000);
}
function Main_2(){
console.log('c: '+count++);
}
}
Main();
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
564 :デフォルトの名無しさん[sage]:2016/06/11(土) 16:54:15.22 ID:ZhHlBSFM
>>561
いや勝手に書き換えたのはお前だろ。
>>555のコードでは var v=1 は Mainの中じゃないか。
Main_1の中で新しい変数が必要なら、

・Main_2をMain_1内に移動する(ネストが増える)
・v を Main内で定義しておく

のどちらかだろ。俺なら後者的アプローチを取ることが多いと思う。
ただ、途中で変数が必要なときも管理しなくていいというのは確かにメリットかもな。
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
565 :デフォルトの名無しさん[sage]:2016/06/11(土) 17:02:05.55 ID:ZhHlBSFM
>>559
それはクラスの時の話だ。

クラスの場合は、コンストラクタだけ呼べても意味がないだろ。
Hoge.prototype.XXX = function(){...};
の記述が「順序が必要」なので、どのみちその記述以降じゃないと new Hoge() 出来ないんだよ。

誰も普通の関数 hoge を全部 var hoge = function(){} と書けとは言ってない。
お前が話について来れてないだけ。


まあ分かった、お前が「文法的に読み込める方が善」というのならそれでいい。
で、他の連中もそうなのか?
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
566 :デフォルトの名無しさん[sage]:2016/06/11(土) 17:09:12.67 ID:ZhHlBSFM
>>557
ちと細かいがこれにも言っておくと、
> 俺は関数に分けるべき理由が生まれれば当然分ける。
彼等は「関数に分けるべき理由」が分からないのではなくて、その必要がないという判断でそこに書いているんだよ。
下手なわけではない。

通常、$.ajaxの場合はそこでしか使われない関数になるから、ネスト派ならそこにだらだら書く方が自然なんだ。
ただ、「ネストが深くなる」のが嫌いなくせに、「ネストでしか書かない」のが俺には疑問なんだ。
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
218 :デフォルトの名無しさん[sage]:2016/06/11(土) 17:39:28.29 ID:ZhHlBSFM
>>217
キモいわ。

個人が作った勝手ルールだろ。それに従いたければ勝手にしろよ。
googleの方は「こういう問題があるから、こういうルールにしました」という、極めて実用的なものだ。
俺がgoogle側のルールを妥当とするのはこの点からだ。
コーディングルールは、見やすさではなく、バグを含まないためにある。
セミコロン程度の見やすさなんて、所詮慣れでしかない。
付いている方が無駄バグが発生しにくいのなら、当然それがルールで、見にくいのなら慣れろ、という立場だ。

お前はこのスレに来るべきではない。テンプレ読めよ。
お前は3,000行のコード、書けないだろ。
オブジェクト指向システムの設計 170 [無断転載禁止]©2ch.net
970 :デフォルトの名無しさん[sage]:2016/06/11(土) 18:00:28.79 ID:ZhHlBSFM
>>951
完全に同意。てか、分かりやすいわ。

>>961
> 物事には順序があるが出来る奴の中にはそれをやってるという意識なく脳内で手順を終えて「やってない」と言い放つ奴がいるんだよ
ふむ。言い得て妙だな。

しかしあんた、だいぶ頭いいよな。
なかなかこのレベルの説明は出来ない。
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
219 :デフォルトの名無しさん[sage]:2016/06/11(土) 19:12:42.34 ID:ZhHlBSFM
>>217
つうかおめー、マジで頭おかしいぞ。
有名どころは全部「セミコロン付けろ」だぞ。
個人レベルでの勝手ルール持ち出すとか、キチガイだと分からないか?
それともGitHubを勘違いしているか?あれは誰でもアカウントを作れる。もちろん君でも。

> JavaScriptのスタイルガイドまとめ(おすすめ4選)
> google
> jQuery JavaScript Style Guide
> Airbnb JavaScript Style Guide
> > https://github.com/airbnb/javascript (star 36,207、対して feross は 5,886)
> Node
> http://qiita.com/takeharu/items/dee0972e5f39bfd4d7c8
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
220 :デフォルトの名無しさん[sage]:2016/06/11(土) 19:13:01.99 ID:ZhHlBSFM
> npm
> https://www.npmjs.com/package/standard
npmだけは確かに「省けるセミコロンは省け」と言っている。
ざっくり見た感じは、「JavaScriptについてよく知れば、それが出来る」ということらしい。
つまり、どういうケースでAutomaticSemicolonInsertionが動くか理解して、
常にそれを考えながらコーディングしろ、ということなのだが、
そんなことやってるからJavaScriptの連中は上達してないんだと思うけどね。

本来のプログラミングの「技能」は、言語をまたいで汎用的なものだ。
その言語でしか使えない知識は、「文法」でしかない。
俺たちはJavaScriptのおかしな文法を極めたいわけでもない。JavaScriptを使いたいだけだ。
君の論理なら、使いたいだけのために勉強を強いるのもまた「独りよがり」でしかないだろ。

不思議なのは、JavaScriptの連中にはこの主張をする輩が多い事だ。
npmが震源だったということなのか?
C++で「テンプレートを極めてから来い」
C#やJavaで「クラスライブラリを極めてから来い」
なんていう奴はいない。それはどだい無理だからだ。
だから知っている範囲でコーディングを開始していく。そして「そんな機能あったのか!」ってのも割とよくある。
JavaScriptはギリギリ極められるくらいの軽量言語ではある。
しかしだからといって、それを極めたところで益はない。せいぜいセミコロンが省けるだけだ。
そんなことに時間をかける価値なんてないだろ?
全部セミコロン付けてリントで落とし、さっさと本題に行こうというのが普通だ。
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
573 :デフォルトの名無しさん[sage]:2016/06/11(土) 19:28:03.24 ID:ZhHlBSFM
>>571-572
すまんが意味が分からんし、お前の主張も分からん。
その場合の駄目なコードとそちらの主張を対で出せるか?(以下例のように)

一応こちらの意見をもう一度言っておくと、

function hoge(){} // OK。通常の関数はこちら。
var Hoge = function(){}; // コンストラクタの場合はこっちの方がよさそう

となる。
そのコードが「共通プロトタイプを持たない場合」に限定しているつもりなら、勝手にどうぞでしかない。
オブジェクト指向システムの設計 170 [無断転載禁止]©2ch.net
999 :デフォルトの名無しさん[sage]:2016/06/11(土) 19:36:28.35 ID:ZhHlBSFM
>>984
あれは「見えている」らしい。
彼等にとっては、そこに絵があって、それをなぞっているだけなんだと。

まあ、プログラミングにも割と当てはまると思うが。
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
575 :デフォルトの名無しさん[sage]:2016/06/11(土) 19:40:17.64 ID:ZhHlBSFM
>>574
何が言いたいのか分からん。
そちらが説明しきれないのなら、相互理解は不能だから終わりでいい。
+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net
577 :デフォルトの名無しさん[sage]:2016/06/11(土) 22:29:21.64 ID:ZhHlBSFM
>>576
なるほど、お前は人殺し君か。
どおりで話が通じないわけだ。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。