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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    354 = :

    >>349
    まあまあだね。じゃあ勝手にレビュー。

    ソート関数が汎用的になっていない。
    ソート関数を実装する人がよくやりがちだけど、
    引数で処理を変えるんじゃなくて関数そのものを変えた方がいい
    そのほうが処理がスッキリして明確になる。

    つまりrows.sort内の処理を二つにわけ、
    $('button#numb').on('click',function(){ sortTable(0, numberSort); });
    $('button#name').on('click',function(){ sortTable(1, stringSort); });

    こうすうることで、tableと関係ない汎用的なsort関数にすることが出来る。

    この0と1からわかると思うけど、var obj = {略} の所、numberでソートの時は
    nameいらないわけで無駄な値を取ってきてるね。
    0と1だとマジックナンバーだから定数にした方がいいかもしれないけど。

    それとrowsを使っている所、mapを使った方がいい。
    配列 から 同数の配列を生成したいならばmapと言えば簡単だろう?

    360 = :

    >>353
    まあ色々やってみたかった、一つづつ処理を負いたかったってのはわかるよ。
    結果として無駄なことやってるだけだけどw

    他に人に最初に補足、これは実験的な機能を使ってるので
    Chromeでオプション変えないと動きません。

    まずtextsがsortされるし、関数実行中に画面描画はされないので、
    deliverChangeRecordsは不要。
    それ以前に関数実行中に画面描画はされないので、そもそもobserveを使う意味が無い。

    recs.lengthを見ればわかるが、値の合計は15。
    つまり8個しかないのに、tdへの代入が15回発生している。
    だからobserveを使わずにsortし終わってから代入したほうがいいね。

    あと細かいところで1/0は単純にInfinityでよい。

    363 = :

    >>340

    > return (!a || !b) ? a < b : a > b

    これが見にくいのは三項演算子だからではなく
    優先順位がわかりにくいからだよ。

    四則演算程度の優先順位ならだれでも知って当然だが、
    ?と<がでてきたら、えっ?えっ?ってなっちゃう。
    もしかしたらこうかも知れないしさ。

    (!a || !b) ? a < b : a   > b

    カッコでくくるだけでシンプルになる
    return (!a || !b) ? (a < b) : (a > b)

    もしてもう一つ、式を変更しよう。否定というのは何かとわかりにくい。
    (!a || !b) この形が出てきたら有名な、ドモルガンの法則がでてくる人は珍しいのかな?

    法則に従って直せば、! (a && b) となる。頭の!は三項演算子の残り二つを入れ替えれば消える。

    (a && b) ? (a > b) : (a < b)

    まあこれはこれで正しく動くのかよくわからんがw

    366 = :

    >>359
    そんなはずはないはずなんだが?
    何か勘違いしてね?

    367 = :

    他の言語でも同じだが、省略できる括弧は絶対に書かないのが
    coolだと信じてるヘボPGの多いこと多いこと。

    370 = :

    >>367
    > 他の言語でも同じだが、省略できる括弧は絶対に書かないのが
    > coolだと信じてるヘボPGの多いこと多いこと。
    その通り。

    確かに省略できる所を省略しても、
    正しく動く。正確に判断してくれる。

    だがそれは ”コンピュータが” だ。

    ソースコードは人間のために読みやすいように書こう。
    人間が読みにくいと思ったら、
    コンピュータが読めてもそれは
    人間が読むコードじゃないんだよ。

    えらいのは人間様です。人間様に優しくしましょうw

    371 = :

    >>369
    それは技術をわかってないだけ。

    ファイルサイズの話だと思うが、
    確かに文字は少ない方がいいんだが
    実のところほとんど意味は無い。

    なぜなら普通はgzip圧縮して配信するから
    その時長い単語や空白はよく圧縮できる。

    1バイトでもというが、本当に
    数バイトとしか変わらなかったりするよ。
    画像ファイルサイズを考えてみ?

    372 = 277 :

    >>371
    今はね、回線も太くなったしサーバも強固になったから楽なんだけど
    昔から書いてる人はそうもいかなかったんだよ

    ユーザから見たらたかが数バイトでも
    サーバから見ると×アクセス数だから
    その名残で、短く書く癖が付いちゃってる人もいるんだぜ、って話

    373 = :

    ちくしょう、考えちまったからレスしとくかw

    > (a && b) ? (a > b) : (a < b)

    そもそもソート関数で、比較条件が逆になるってことが
    おかしいことなんだよ。
    ソートは常に同じ条件を使うことで正しく並ぶはず。

    ただ例外はある。多分空文字だろう?
    空文字では適切に並ばなかったため、「じゃあ逆にしたら並ぶんじゃね?」という
    安直な発想で、条件を逆にしてしまったのだろうが、
    そうではなく、空文字を例外として扱うコードを書いた方がいい。

    いいというのは人間にとって読みやすいという意味。
    このように書くことで、空文字はちゃんとこのように扱っていると
    コード上に明確に書く事ができる。

    374 = :

    >>372
    それは最後までちゃんと計算してない。
    バイト数だけで考えていて、
    パーセンテージを出してないだろう。

    たかだか数バイト。それが積もり積もって1GB。
    大きいと思ったとしても1キロバイト中の1バイトであったら、
    1000GBもの通信をしているわけ。
    普段1000GBのデータ容量を使ってる所が
    1GBが問題になるようなことはないよ

    そんなことより人間の人件費を考えなさいと。
    読みにくいコードは読むのに時間がかかる。
    10秒余計にかかったら、それが積もり積もって(略

    381 = :

    クレクレ厨に餌をあたえないでください

    382 = :

    >>381
    まあこれくらいならやってほしいけど
    >>379
    http://ideone.com/U2HT6B
    とりあえずこれでオシマイ
    observeに凝るの疲れた

    384 = :

    せやな…

    385 = :

    >>382
    なんか無駄に複雑になってるなw
    面倒なのでもうレビューしないけど1つだけ。

    mapもさすがにそれだけあると
    目ざわりだからこうするといいよ。

    var map = function(array, func) { return [].map.call(array, func); };

    まあ、実際にはunderscoreとか使えっちゅー話でもあるが。

    386 = :

    >>385
    修正した

    あと読みやすいようにアロー関数にしてみた
    http://ideone.com/DRbOd4

    387 = :

    querySelectorAllってさ、イベントバインドするのに
    ループ使わないといけないの?

    jQueryみたいに

    $('a').on('click', function() {}); (全てのa要素にclickハンドラをつける)

    って簡単に書きたいんだけど?

    388 = :

    NodeList.prototype.map を作ったんだね。

    mapとして取り出すか、メソッドはやすかは
    方針次第だからどっちでもいいけど、
    俺は将来NodeListにmapが追加されたら・・・とか
    思っちゃうからあまり好きではないね。

    389 = :

    >>388
    あくまでお遊びだから
    あと暫くはES6の
    array = Array.from(arrayLike)
    を使ってねってなるんだと思ってる

    ってことで
    >>387
    これでいいんじゃね
    Node.prototype.on = function (evt, func) {
    this.addEventListener(evt, func)
    }

    NodeList.prototype.on = function (evt, func) {
    [].forEach.call(this, function (elm) {elm.on(evt, func)})
    }

    390 = :

    >>386
    アローって誰得なの…

    391 = :

    returnとfunctionを書かずに済むからmapなんかとの相性抜群
    やはり短いほうが読みやすい

    392 = :

    >>391
    短いほうが読みやすいってのはわかるんだけどな、
    その前にまず、自分のコードを読みやすくしてからにしろと。
    そんな小手先の書き方の前にまずやることがあるだろと。

    http://jsfiddle.net/NwA63/1/

    393 = :

    愚痴るけどさぁ、ぶっちゃけ初期バーションで
    これぐらいのコード書いて欲しいんだよね。仕事なら。

    上で出てるようなコードとか書かれてもさ
    レビューに時間がかかるだけで全部書き直しだもの。

    このコードもソート時の値の取得に、時間がかかりそうだから
    メモ化するとか改善する点はあるわけ。

    そのレベルでレビューしたいんだけど、
    現実は上で出てるようなコードを
    時間かけて読みといて、ダメな点を教えなきゃいけない。

    はぁ、ここまで育ってくれるのにどれくらいかかるのか。

    394 = :

    >>392
    講釈はありがたく受け取りますけど
    数字ソート失敗してますがな…

    395 = :

    足りんかった
    Firefoxで数字ソート失敗してます
    講釈は重々承知致しましたが…

    396 = :

    五月雨で申し訳ございません
    元の質問で、というか必要条件であるところの
    空文字列だった場合のソートも失敗しているようでございます

    お言葉は仰るとおりですので心に刻みたい所存であります

    397 = :

    ソートのルールはlocaleCompareでしょ?
    この規則は>>382丸パクリで変えてないよ。

    これだけ読みやすければ、修正するのも簡単でしょ?
    そのやり方でまたセンスが見えてくるんだが・・・。

    398 = :

    コード修正するつもり無いし、
    他の人のレスまとうと思ったけど
    面倒になったので、アイデアだけ。

    コード上でソートルールを書くのは
    せっかくコードがテーブルに依存しなくなったのにもったいない。
    (試してないけど、列数が増えてもコードに修正はいらないはず)

    ソートのルールというのは、本質的には値の型の問題なので
    colgroup要素とdata-*属性を使うかな。data-typeとか。

    399 :

    ワロタ
    >>392先輩は会社でも同じようなことしてんだろうなw

    400 = 399 :

    >>398
    そもそもなんでsortに比較関数渡せるのかっつーと
    本質はそういうことだろうねえ


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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