[過去ログ] + JavaScript の質問用スレッド vol.126 + [転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
535: 2015/11/03(火)16:36 ID:??? AAS
ロジック上の無駄は省くべきだが、コードが短ければ良いというものでもないよな
536
(1): 2015/11/03(火)16:44 ID:??? AAS
どっちにしろ
var foo = new Hoge(text);
var line = foo.getLine();
while (line !== null) {
 なんか;
line = foo.getLine();
}
とか
foo.bar(function (line) {
 なんか;
省2
537
(2): 2015/11/03(火)16:48 ID:??? AAS
どちらかというと俺は>>530の関数で第一引数がString型でない時に例外が発生する仕様が気になる
>>531も同様の問題を抱えているが、>>534のように書けば修正されるな
538
(1): 2015/11/03(火)17:59 ID:??? AAS
>>537
配列を引数にとると例外すら発生しなかったので修正した
外部リンク:jsfiddle.net
539
(2): 2015/11/03(火)19:31 ID:??? AAS
お前らの話を見ている限り、お前らは絶対的にコードを書き足りていない。
書けば上手くなるものではないけど、書かなければ上手くなることはない。
だから、今のお前らはもっとコードを書かないと駄目だ。

>>530,538
君はコードを書いた。それはいいことだと思うし、君はそれによって前進したいようだ。
ならばちょっと手助けしてみようと思う。

getFirstLine1では、Math.minを使ってはいけない。そして処理の順番が逆だ。
多分君には意味が分からないと思うが、逆に、この順番にした理由、Math.minを使った理由もないだろ?
だったら何故駄目なのか考えてみることだ。

getFirstLine2では、前置にこだわりが見られるが、ここら辺は流儀にもよる。
省2
540: 2015/11/03(火)20:11 ID:??? AAS
>>539がコード書きまくった熟練のコードを見せてくれるそうです
541
(2): 2015/11/03(火)20:16 ID:??? AAS
足りてないのはコードを書くのではなく、読む量が全然足りてない。
新人のコードをレビューすると全然他者のコードを読んできていないのがわかる。
俺の下に付いた人には、先人の美しいコードをどんどん読ませることにしている。
すぐに生産性が上がりバグの作り込みが減る。
542
(4): 2015/11/03(火)20:33 ID:??? AAS
質問させてください。

特定時間にページ更新、カートをクリック

この機能だけ使えるスクリプトを作りたいのですが、どれから始めていいか分かりません。
お勧めの書籍がありましたら教えてください。
よろしくお願いします。
543: 2015/11/03(火)20:40 ID:??? AAS
>>542
>どれから始めていいか

まずはあなたのレベルを申告することから
でないとどこから始めるべきか他人にわかるわけがない
544
(1): 2015/11/03(火)20:53 ID:??? AAS
jsなんてゴミから入ったら悪い癖がつくだけだ
やめとけ
545: 2015/11/03(火)20:53 ID:??? AAS
完全な素人です

>>544
ほかどんなものがお勧めでしょうか?
546: 2015/11/03(火)21:21 ID:??? AAS
>>541
コードを読ませること自体はいいことだし、その教育方針も妥当だと思うが、
既に読んでいることを新人に期待するのは無理がある。それがないから新人なのだから。

とはいえ、JavaScript界隈はコードを読んでいる方だと思うぞ。
お前らも結局読んで返事をしているみたいだし、他の連中もそんな感じだ。
これは一つにはJavaScriptの構造上、基本的にコードは晒されるというのがあって、
読めるという前提で文化が醸成されているからだと思う。
これは他言語にはない特徴であり、JavaScript界隈が活発な一つの要因だと思う。
他言語の場合は、読みたくても読めないことが大半だからね。
547
(13): 2015/11/03(火)21:38 ID:??? AAS
>>539
書いた
外部リンク:jsfiddle.net
Math.minは確かに迷った結果のコードだが、ダメとする絶対的な理由が足りない
(他が比較演算子を使用するので統一感はないとは思うが)

処理順に関しては値の切り分けによって後述処理を都合よく処理する為だ
falsy, truly な例外処理を先にするかは状況によるし、ポリシー次第だと思う
(構造化プログラミング的にはこの手法はダメだが、出口を一つにするメリットがなかったので採用しなかった)
そこまで否定される理由はないと思ったが、あなたはどのような理由でダメだと思った?

>>541
省1
548
(1): 2015/11/03(火)23:40 ID:??? AAS
>>547
おー書いたか。ご苦労様。ならばその労に報いよう。
はじめに俺はJavaScriptが専門ではないと断っておく。しかしここら辺はプログラミングで共通だからね。

一般的に、JavaScriptではコード自体のフットプリントが問題になることはまずない。
したがって、実用的には
A. 見やすいコード
B. 速いコード
のどちらかを採用することになる。逆にいえば、これ以外のコードは要らない。
ただしJavaScript特有として「イレギュラーに対する対処」を考慮する必要がある。(後述)

ここではコードの量に異常にこだわる奴が散見されるが、見やすいコードというのは
省6
549
(1): 2015/11/03(火)23:41 ID:??? AAS
getFirstLine2はcharAtを使うのならこの実装で妥当だろう。
イレギュラー対策をdo/whileにしてstring.chaAtで引っかけるというのは若干トリッキーではあるが、
これが許可されるのならこれでいい。(少なくとも速度オーバーヘッドはない)
ただしJavaScriptだと一般的にはgetFirstLine1の方が速いはずなので、これが使われることはないだろう。
(C言語ならgetFirstLine2が最速)

さてgetFirstLine1だが、先述の通り、ここはB(速度)を目指さないといけない。(存在価値がない)
記述にもこの意識は見られ、Stringオブジェクト変換を減らしている。この辺はいい。
そこで処理順なのだが、速度を目指すのだから、よくある順にショートカットにして組むことが必要になる。
つまり、-1 && -1 の「例外」を最初に見るのではなく、
20,21とかの「通常」のケースを最初に処理しないといけない。
省13
550
(1): 2015/11/03(火)23:41 ID:??? AAS
さてイレギュラー対策だが、多分(ここら辺は本職から聞くべきだが)
α. 安全重視、全箇所でチェック。
β 速度重視、最初にチェック、以降は「型」までは確定、値については保証無し。
のどちらかで組むのだと思われる。
ポリシーαで、どういう状態でも安全性を明示するために「最初に例外処理」のルールなら旧コードが妥当になるが、
実用的にこれはないように思われる。
普通の仕様としては、「イレギュラーなら例外、それ以外は正しく処理」であり、関数内の記述順まで規定される必要はない。
記述順を規定する=ソースコードを見てデバッグするということだが、その場合は普通は「例外を投げずに自分で処理しろ」となるからだ。
またJavaScriptの場合はgetFirstLine3のように「暗黙的なイレギュラー対策」が出来ることも多く、(確認していないが)
「明示的なイレギュラー対策を最初に行え」というルールだと色々無理が生じてしまう。
省12
551
(2): 2015/11/03(火)23:45 ID:??? AAS
まあ漏れらベテランは、nullが返されて、
nullオブジェクトで関数を呼んだら、
そんな関数はありませんという実行時エラーを、
無数に経験しているからな。
用心深くもなるわな

>>542
Firefoxで、Selenium IDEで、
ボタンをクリックしたり、
ページをリロードしたり試してみれば?

JavaScriptもプログラミング素人には難しいよ
552: 2015/11/03(火)23:46 ID:??? AAS
gdgdはいいからはよコード書けよ
553: 2015/11/03(火)23:54 ID:??? AAS
getFirstLine3が最速だろ
実際のコード書いてないのがバレバレ
554
(1): 2015/11/04(水)00:24 ID:??? AAS
>>547
ついで。もうコードは書かなくていいから。

細かいことを言うと、indexOf('\n')はLFのみのテキストの場合引っかからないので、最後まで見に行ってしまう。
結果、getFirstLine1はMac/UNIXの大規模テキストを食わされると極度に遅くなる。
とはいえ、良い対策は無い。

この危険性は 2/3 にはない。
だからまあ、普通は 3 を使っておけということになる。
1-
あと 448 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.080s*