のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,620,598人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.132 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
551 : Name_Not - 2018/03/26(月) 01:10:34.14 ID:???.net (+79,+29,-22)
>>530>>523と、
>>533の引用部分、似た言葉を使ってはいるけど
内容同じと思いきやそうじゃないな
552 : Name_Not - 2018/03/26(月) 01:17:44.66 ID:???.net (+99,+29,-76)
533を読んでみたけど

難解な処理を書かない、読んですぐ意図がわかるコードを書く、
遠くで宣言された変数の代入・再利用などわかりづらいことをしない、
そうすればバグが目に見えて減ると思う、

と、こういう主張だった
全然違くね?使ってる単語が似てるっぽいURLを後付で見つけてきただけじゃね?
553 : Name_Not - 2018/03/26(月) 01:21:38.74 ID:???.net (+120,+29,-39)
あと、>>533を主張してるURLは、例にならってGoogleで調べたところ
他の1つのURLで引用されているのみだった
これでは一般的、世間に広く認められている、とはとても言えない
554 : Name_Not - 2018/03/26(月) 01:46:51.52 ID:???.net (+173,+30,+0)
>>552
いや、あってるよ?
だから俺は疑問なんだ。

>>519がなんで固有とか列挙可で変なバグを出すのか?
ライブオブジェクトで変なバグを出すのか?

俺はここ数年(十年超えるかもね)そんなことでバグを出したことはない
かと言って、ぜったいにバグを見逃ししないぞと気を張って作業してるわけじゃない

俺のコーディングスタイルは最小のコード記述量で書くこと
書く量が少なければそこに入るバグも最小になる
もちろん難解な処理なんてないし、意図が変わるコード
遠くで宣言する変数とか再代入もしない、まさにそのサイトで主張している通り

それで俺はそんなバグなんか起きてないのに、
>>519がそんなことでバグでハマるのはそもそもの書き方に
問題が有るんじゃないかってこと。

おそらく些細なバグが起きないように、毎回対策のためのコードを書いてるのが原因じゃないか?
俺は些細なバグが起きないように、コードを書かない状態で対策されてる状態にしている。
555 : Name_Not - 2018/03/26(月) 01:47:34.82 ID:???.net (+15,-12,-18)
× 意図が変わるコード
○ 意図がわかりにくいコード
556 : Name_Not - 2018/03/26(月) 02:08:06.90 ID:???.net (+97,+30,-72)
>>520「書かなくていいコードを書くからバグが出る」
>>533「手を抜いた状態が最善でなければならない」
>>533「手を抜くとバグるというのはヤバい」

Googleで出てきたURL「人間が見てわかりやすいコードはバグが出ないと思う」

曖昧な表現で逃げ、主張をコロコロ変える>>554はバグってるな
557 : Name_Not - 2018/03/26(月) 02:12:08.76 ID:???.net (+125,+30,-96)
>>554いわく
>俺のコーディングスタイルは最小のコード記述量で書くこと
>書く量が少なければそこに入るバグも最小になる

>>537のURLいわく

>ゆっくりと考えを巡らせてもっと簡素にかけないかを考える。
>ここで言う簡素というのはプログラムの長さではない。

「まさにそのサイトで主張している通り」って
558 : Name_Not - 2018/03/26(月) 02:19:13.05 ID:???.net (+55,+29,-31)
なんか伸びてるとおもってきたら
バカが暴れてるのか
559 : Name_Not - 2018/03/26(月) 02:23:08.54 ID:???.net (+90,+30,-270)
>>557
タイプ数って勘違いしたのかw
面倒くさいな

そりゃ横に長い行を短くするのに一時変数に入れたりはするよ
そういうことじゃなくて、実行行と言ったら良いか?
定義行(代入行)ではなく処理の数を減らすんだよ。

と言ったら関数の先まで数えて同じとか言いそうだなw
コードというのは汎用的な処理とビジネス固有の処理に分けることができる
コード全体から汎用的な処理を切り離すことで、ビジネス固有の処理を減らすんだよ

汎用的な処理っていうのは、他で十分テストされ、例えば他のプロジェクトとかでも使われ
仕様が大きく変化することも、互換性が壊れる形で変化したりもしない、安定しているコード
だから基本読み飛ばすことができる。

読み飛ばせる部分を多くして、ビジネス固有の処理をへらす。これがバグをでなくするための方法
>>519はそういう所を毎回書いてるからバグだしてるんじゃねーのって話
560 : Name_Not - 2018/03/26(月) 02:25:51.73 ID:???.net (+57,+29,-11)
書けば書くほどボロが出る
その口でこうすればバグが最小になると言う
561 : Name_Not - 2018/03/26(月) 02:29:40.88 ID:???.net (+91,+29,-6)
じゃあ反論どうぞ

ってか>>519はどんなコード書いてんのかって話なんだ
562 : Name_Not - 2018/03/26(月) 02:35:27.91 ID:???.net (+36,-29,-52)
ライブなコレクションってgetElementsByClassName()の戻り値とかでしょ

ループに使うのがforでもfor inでもかかわりなく
ループの最初で別の変数に移して参照を持っておかないと
処理中に対象要素がなくなったら問題が出る
そういうもんじゃないの?
563 : Name_Not - 2018/03/26(月) 02:41:43.05 ID:???.net (+99,+29,-52)
>>562
そういう場合は処理中に対象要素がなくなるような書き方をしなければいい
ループの配列から取り除くのとDOMから取り除くことを同時にやるからそうなる
564 : Name_Not - 2018/03/26(月) 02:46:31.97 ID:???.net (+124,+29,-111)
仮に「最小のコード記述量=バグが最小になる」が
「コード分離して使い回せば記述量が減る」という意図だったとして
コードを分離できる状況かどうかや抽象性の設定などの問題もおいておくとして

しかしそれでもコード分離の話は>>537のURLには出てきていないな
565 : Name_Not - 2018/03/26(月) 02:49:40.07 ID:???.net (+125,+30,-65)
>>563
ライブなコレクション使うときはあれをしてはいけないこれを書いてはダメ
などと神経使わなきゃいけないのは使いづらい
そういう意味では>>537のURLの人が言ってることと同じだと思うんだけど

神経使わないで済むようにポインタじゃなくて文字列使えとか
スタックオーバーフローを怖がらずに定義どおりに再帰関数を書けとか
566 : Name_Not - 2018/03/26(月) 02:50:52.41 ID:???.net (+98,+30,-78)
>>537のURLの趣旨はまとめるとこういうこと
「(速度やリソース消費など難が多少あっても)やりたいことをストレートに書けばバグが出ない」
富豪的プログラミングへの言及や神経を使うポインタを避ける

どの辺が「まさにそのサイトで主張している通り」なんですか
567 : Name_Not - 2018/03/26(月) 02:51:15.56 ID:???.net (+136,+30,-80)
>>564
> しかしそれでもコード分離の話は>>537のURLには出てきていないな

そりゃそうよw

だって>>537のURLを出したのは
>>526
> その一般論、見たことないんだけど

って言ったからで、その一般論というのは
この話なんだから

> 一般論としてコードというのは一番手を抜いた状態が
> 最善な方法になっていないといけない
>
> ましてや手を抜くとバグになる状態っていうのは一番やばい
> もしそんな状態が有るとするならまずそれを解決すべき
568 : Name_Not - 2018/03/26(月) 02:55:35.62 ID:???.net (+73,+30,+0)
569 : Name_Not - 2018/03/26(月) 02:56:13.92 ID:???.net (+140,+30,-152)
>>565
> ライブなコレクション使うときはあれをしてはいけないこれを書いてはダメ
> などと神経使わなきゃいけないのは使いづらい
> そういう意味では>>537のURLの人が言ってることと同じだと思うんだけど

そういうこと。
神経を使わずに適切なコードが書ける状態になってないのが問題という話

コード書く時に神経使っちゃダメだよ?レビューする方も神経使うだろ?
あれこれ考えて抜けがないよな?抜けがないよな?と何度も確認しなきゃ安心できないコードよりも、
ひと目見ただけで、このコードにバグはないと言い切れるコード、
逆にどうやればこのコードにバグを入れられるんだよ?みたいな方が良いに決まってるだろ?
570 : Name_Not - 2018/03/26(月) 03:01:41.20 ID:???.net (+146,+29,-49)
>>569
勘違いさせちゃって悪いんだけど、565のそのレスは
どちらかといえばむしろ>>519のほうが
>>537のURLと同じようなこと言ってると思う、っていう意味なんだ

hasownpropertyとか考えなくて良いようにオブジェクトを使わないで済む方法を選択
バッファ長や\0とか考えなくて良いようにポインタを使わないで済む方法を選択
ほら
571 : Name_Not - 2018/03/26(月) 03:05:06.56 ID:???.net (-22,-29,-134)
ライブコレクションでハマるパターンは以下のようなもの

1. ある条件の要素のコレクションを取得
2. 全要素をループ
3. 条件1に該当するものは、要素に対して処理を行う
4. 条件2に該当するものは、要素を削除する
5. 削除によって「全要素」の内容が変わってしまう
6. 2に戻る(「全要素」の中身が代わってしまってるのでバグになる)

これは以下のように書けば良い

1. ある条件の要素のコレクションを取得
2. 条件1に該当するものだけをフィルタして処理をする
3. 条件2に該当するものだけをフィルタして削除

シンプルになってバグではまることもない
572 : Name_Not - 2018/03/26(月) 03:06:12.96 ID:???.net (+77,+29,-34)
>>570
ライブなオブジェクトでハマってる時点で
問題解決してねーだろw
573 : Name_Not - 2018/03/26(月) 03:14:29.94 ID:???.net (+99,+29,-41)
>>571
変換などにより静的な配列を用いるのが確実
参照を保持している限り回収されず他関数等による影響も受けない
処理の順番や構造を気にする必要もなくなる
574 : Name_Not - 2018/03/26(月) 03:14:36.76 ID:???.net (+63,+30,-140)
ループを二回に分ければスッキリするのに
なぜか一つのループで別々の処理を行うやつが多い

>>571の例では要素に対しての処理と要素の削除
この別々の処理に対してループを使いまわしするのがいけない

なんでループを使いまわしてしまうのか?という答は
ループ処理を書くのが面倒くさいからではないのか?

だが>>571の下を見れば分かる通り、ループそのものがなくなってる。

ループ処理を書くのが面倒だからというのはわかるが、
1つのループにしてかつ注意して書くよりもそもそもループを無くした方が良い
根本的な問題を解決するのではなく、対処療法的な方法を取るから
逆に面倒になってることに気づこう
575 : Name_Not - 2018/03/26(月) 03:17:57.09 ID:???.net (+105,+30,-153)
>>573
> 参照を保持している限り回収されず他関数等による影響も受けない
> 処理の順番や構造を気にする必要もなくなる

じゃあどうするかって話だけど答えられる?
「ライブなコレクション」を保持して、ループで
一つ一つ処理している限りその問題は解决しない

>>571の後者の方法を更にシンプルにしよう(最初からそうしておけって?w)

1. ある条件の要素かつ条件1に該当するものだけをフィルタして処理をする
2. ある条件の要素かつ条件2に該当するものだけをフィルタして削除

たったの2工程。しかもこれ1と2の順番を逆にすることだってできる
576 : Name_Not - 2018/03/26(月) 03:29:28.19 ID:???.net (+113,+29,-72)
>>575
君の話は、前提として
・順番を逆にすることができる
・各々の処理が相互に関係しない
という処理である場合のみ利用可能すなわち汎用性に乏しいのでは
静的な配列にしてしまえばまず問題がない
答えられるかというのは何をだ
577 : Name_Not - 2018/03/26(月) 03:36:54.00 ID:???.net (+78,+29,-53)
>>576
> 静的な配列にしてしまえばまず問題がない

ではそこが問題だな。
"毎回" 静的な配列になるようになっていないのが問題

静的な配列にするのが "追加作業" になっているならば
それを追加作業ではなく、標準(一番楽な書き方)で
そうなるようにしておくのが正しい

追加作業だとどうしても手抜きで見逃してしまう
ましてや追加作業が必要な場合がレアケースだと絶対にハマる
578 : Name_Not - 2018/03/26(月) 03:53:53.69 ID:???.net (+103,+17,-15)
もうすぐjqueryくるで
579 : Name_Not - 2018/03/26(月) 04:05:26.68 ID:???.net (+80,+23,-2)
そんなオールスターいらんwww
580 : Name_Not - 2018/03/26(月) 04:13:04.26 ID:???.net (+32,-30,-54)
変な引用文と改行入れてんのはいつもの荒らしだから触んのやめなさいよ

>>544
const {width:a, height:b} = {width:100, height:100};
581 : Name_Not - 2018/03/26(月) 04:21:42.08 ID:???.net (+61,+29,+0)
>>580
そんな書き方があったのですねー
ありがとうございました
582 : Name_Not - 2018/03/26(月) 10:23:32.60 ID:???.net (+68,+29,-27)
>>579
オールスターって何?
単に一番単純な書き方が一番安全にするという話だけど
安全側に倒しておくだけ
583 : Name_Not - 2018/03/26(月) 11:22:43.09 ID:???.net (+62,+30,+0)
>>578-579
584 : Name_Not - 2018/03/26(月) 11:50:52.84 ID:???.net (+3,-29,-55)
http://dictionary.goo.ne.jp/word/en/all-star/

((限定的)) (ある地域・リーグの中から選抜された)一流選手をそろえた,オールスターの
((限定的)) スター総出演の,人気俳優をそろえた
━━ [名詞] 〔スポーツ〕 ((通例 all-stars)) オールスターチームに選ばれた選手.

やっぱり意味が分からん。何をそろえたの?
585 : Name_Not - 2018/03/26(月) 12:20:48.83 ID:???.net (+66,+30,+0)
>>578-579
586 : Name_Not - 2018/03/26(月) 12:21:20.46 ID:???.net (+47,+29,-1)
なんだあらしか
587 : Name_Not - 2018/03/26(月) 16:07:20.25 ID:???.net (+99,+29,-74)
ネットの記事で、jQueryやlodashの機能は今では標準のJSに取り込まれているので
使う必要がないという記述を見ました
そうなのでしょうか?
自分はそこそこは取り込まれているものの、
やはり今でも使った方がいいように思います
588 : Name_Not - 2018/03/26(月) 16:11:11.06 ID:???.net (+57,+29,-44)
取り込まれているのが本当なら、
jQueryやlodash使っていれば、これからも使えるってことだよ
だって標準で取り込まれたんだからw
589 : Name_Not - 2018/03/26(月) 16:55:07.46 ID:???.net (+57,+29,-14)
必要だと思った奴だけ使えばいい
必要かどうか自分で判断できないと開発はやっていけない
590 : Name_Not - 2018/03/26(月) 19:00:37.43 ID:???.net (+57,+29,-39)
なるべくライブラリを使わない方針にしても
生JSがカバーしてない部分が出てくる
→その部分はライブラリを使う
→全面的にライブラリの作法に則った方が全体として綺麗になる
ってなりがちですよね
591 : Name_Not - 2018/03/26(月) 19:06:46.41 ID:???.net (+52,+29,-15)
なりがちじゃないかもしれませんね
592 : Name_Not - 2018/03/26(月) 20:24:35.39 ID:???.net (+41,-28,-88)
自分のブログ内の記事タイトルをランダムに表示させるスクリプトを作成することは可能でしょうか?
下記サイトのようにボタンをクリックするとランダムで過去記事のタイトルリンクが表示されるというものです
http://www9.plala.or.jp/oyoyon/html/script/randomlink.html

ツールを埋め込めば簡単なのですが、ページが重くなってしまうのでできればJavascriptやphpなどで対応できたらと考えてます
よろしくお願いします
593 : Name_Not - 2018/03/26(月) 20:27:46.78 ID:???.net (+67,+28,+0)
可能です。
お礼は三行
594 : Name_Not - 2018/03/26(月) 20:38:14.06 ID:???.net (+35,+0,+0)
できますん
595 : Name_Not - 2018/03/26(月) 20:53:26.70 ID:???.net (+76,+30,-195)
>>587
lodashはおいといて、jQueryで言うとその互換性担保の役割と
仮想DOM的な役割は終わりつつあるのは確かだと思う

jQueryって、荒れた凸凹の溶岩の上でも耐えられるオリハルコンの仮設住居を置いて
強制的にその中で作業させるくような感じだからね
でも今からは地面の荒れもだいぶ収まってきて気が利いた砂利くらいが引いてあるようになったから
いきなり仮設ドーンじゃなくて、舗装から少しずつ構築していって
必要十分な建物を作っていく方が良いんじゃないかって感じなのよ
596 : Name_Not - 2018/03/26(月) 21:02:53.32 ID:???.net (+78,+26,-3)
>>592
javascriptにできないことはない
史上最強の言語
597 : Name_Not - 2018/03/26(月) 21:20:47.26 ID:???.net (+91,+29,-78)
jQueryに「仮想DOM的な役割」(プギャーハライテーwww)などない。徹頭徹尾生DOMをイジるためのライブラリだ。
598 : Name_Not - 2018/03/26(月) 22:07:26.50 ID:SO96wGYY.net (+32,+27,-10)
>>593
>>594
>>596
ありがとうございます
トライしてみます
599 : Name_Not - 2018/03/26(月) 22:11:44.01 ID:???.net (+57,+29,-7)
オリハルコンとかゲーム脳が過ぎるんじゃないかね
600 : Name_Not - 2018/03/26(月) 22:19:31.11 ID:???.net (+5,-27,-67)
たしかにjQueryの互換性を吸収する役割はかなり小さくなったと思います
でもquerySelectorがあっても
removeClassみたいなのはないのでは?
複雑な処理ではありませんが、わざわざ自分で書きたくはありません
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について