size() == 0とempty() はどちらを使うべきか?の様々なご意見まとめ

個人的に気になったので後日読み返すためのメモです。
tada_suzu 16752view 38コメント
15
ログインして広告を非表示にする

コメント

  • _ @apstndb 8日前
    まとめで見てみるとそもそもの発端が議論の余地がないと思っていたところにこれだけ違う考えが出てくるというのが面白く、 empty の否定に二重否定的な気持ち悪さを感じるというのは全くない観点だった。
  • 白山風露@ᓚᘏᗢ @kazatsuyu 8日前
    とりあえず私の発言、前後の文脈が書いてないので何言ってんだこいつ状態だから消すか補完するかどっちかにしてほしい
  • bs;vzn?LKAVs @acnkhudq 8日前
    個人なら好みで、チームなら合意の上でどちらかに決めたらいい/sizeが容量を表すならcapacityのようなわかりやすい名前にラップするかな
  • SODA Noriyuki @n_soda 8日前
    元の話題が「size() == 0 じゃなくて empty()」で始まってるわけだし、まとめのタイトルも「size == 0とempty は」じゃなくて「size() == 0とempty() は」ってした方がいい気がするなあ。あ、僕はempty()一択派です。
  • Daregada @daichi14657 8日前
    昔、C言語に関して発生したmalloc-free論争「プログラム終了時まで解放されないことが確定しているバッファを、(OSが解放することが確定している場合にも)終了時に明示的に解放するか」を思い出すな
  • SODA Noriyuki @n_soda 8日前
    malloc-free 論争はどっちも実利がある (かならず free する方が valgrind のようなツールでメモリリーク検出しやすい vs free しない方が速い) ので揉めるのは仕方ないけど、size() == 0 と empty() で揉める理由は僕には分からないっスね。
  • さとうあきひろ @akihirosato1975 8日前
    これC++に限定した話って冒頭に書いとかないと混乱する。例えばPHPだとempty()は「変数に明示的に文字列の"0"やfalseが代入されてる場合」にもtrueを返してくるので、strlen()やsizeof()とかと評価した結果が明らかに異なるケースがあるし。
  • ちーけー @spr_tk 8日前
    こういうのって、コンパイラが最適化してくれるんじゃないのん? (そういう問題ではない)
  • trycatch777 @trycatch777 8日前
    20年この業界にいるとこの手の話はかなり食傷気味ですなあ。
  • SODA Noriyuki @n_soda 8日前
    spr_tk データ構造的に size() が O(N) のコストであるような状況で、size() == 0 を O(1) に最適化してくれるようなコンパイラは、ほぼ存在しないと考えて良いと思います。
  • 黒ネコかもーん @peketen 8日前
    自分基準で完全に違うモノとして使い分けてる感覚。ただし、Rubyならempty?、JavaScriptならsize() === 0 みたいなプログラミング言語依存はあるなぁ。ただし、混在されてるのの修正は疲れるw
  • _ @apstndb 8日前
    発端は C++ クラスタの人で isEmpty() ではなくて empty() なのもあって C++ 特有の話として見ていたけど、広がった結果一般的には強制しづらいという意見も強くなった感じ
  • いわた @wonderful_panda 8日前
    元の発言が「読みやすさの問題」と定義している以上、議論するならsize()がO(1)である場合の話だというのは前提とするべきで、こっちは独り言のつもりだから計算量がーみたいな話をしたんだけどこうして「議論」としてまとめられると微妙なかんじ
  • nothing @01_02_05 8日前
    ライブラリ作って、myEmpty関数内で、size == 0の処理も行おう!
  • さかなさかな @yuiyui999 8日前
    文脈しだいな気がする。
  • ゆーや @yuhya000 8日前
    STLだと空であることを知りたい場合はempty()してたなぁ。最近はC#ばっかりでめっきりempty()してないけどw
  • あごにー @Agony_01 8日前
    そもそも、内容を書きたいのであって、処理を書きたいわけじゃないから基本empty()でええやろ。
  • 株式会社さいたまテック 社長 @saitamasaitama 8日前
    大抵はエラーチェック的な処理で行われるものを、その意味が薄いのにわざとlengthチェックしてるようなコードは全部empty()にしちまえ、とは思う。 値の精査が必要な箇所は固めて配置しておく方がええ。
  • たるたる @heporap 8日前
    「全てnull(false、0など)で埋められた(初期化された)配列はempty()でtrueになるか」だと思う。
  • でき @dekijp 8日前
    size()==0 とは意味が違うモノが必要ならば、exists()==0 とか作るかも。 empty() って0やnullが入っていた場合はどっちの判定になるんだろう?
  • 青の666号 @mikata666 7日前
    動作がまったく同じなら100万回くらいループさせて処理が速いほうでいい
  • とっくん @tokkun01 7日前
    |-`).。oO(STLって何だろう?)
  • きゃっつ(Kats)⊿11/4京都個別 @grayengineer 7日前
    完全に同一の機能を持つメソッドが違う名前で複数あるのだとしたら、それは言語仕様があまりスマートではないっていう話になるんじゃないかなと。まあこのケースは厳密には意味が違うんだろうから該当しないだろうけど
  • trycatch777 @trycatch777 7日前
    string.IsNullOrEmpty()の闇
  • アルビレオ@炙りカルビ @albireo_B 7日前
    grayengineer この件は「size()とempty()の機能はまるで違うけど、意味としてはempty()とsize()==0は同じになる(代替可能)」って話なので「完全に同一の機能のメソッド」は的外れのような。どっちかというとアセンブラで「INC AじゃなくてADD A,1でもいいじゃん」みたいなのに近い
  • いちごまよ @15my 7日前
    「箱の中のボール数えて」「1、2、3、.... 12個です」「じゃあ空じゃないな」「おいそれ最初の一個見た時点で分かったろ余計な仕事させんな!!」
  • 眠れるミソサザイ@睡眠あれかし @marumasa58 7日前
    メモリを0バイト確保するとポインタを返すが、実際には0バイト確保しているためdeleteが必要な場合ってのがあるから怖い。この場合はempty()ではダメだな。
  • うにら @riafeed 7日前
    15my 今どき時間かけて頭から一個ずつ数えるとか古すぎぃ〜(C++11脳
  • 符号 @Fine_sugar_hill 7日前
    Non-empty(要素を持つ)を二重否定でない表現でどういうかって話題になってるっぽいけど、inhabitedっていうことが多いですね
  • 堀石 廉 @Holyithylene 7日前
    会社プログラミングだと有無を言わさず「プロジェクト標準に合わせろ」になること多いからな……。そもそも可変リスト禁止とかそういうのもある(リソースが限られてるから仕方ないんだけど)
  • ねや @AriaSub 7日前
    emptyという特殊実装がされている言語でしか使えない 有るか無いかまず知らなければならないemptyより、「長さを表す関数が0である」と設計することの容易性は考慮されないのかなぁ
  • ネギ@ガリガリきみを食べたい @negi__ 7日前
    可読性と計算効率は同時に議論すると収集つかなくなる
  • uu @uu32555 7日前
    可読性は明らかに美意識の宗教戦争でしかないけど、計算効率も最近は「効率厨」と「コンパイラが最適化するから無意味派」と「マシンスペック高性能だから誤差派」で宗教戦争してるよねー。異教徒と仲良くしろというね。
  • きゃっつ(Kats)⊿11/4京都個別 @grayengineer 7日前
    albireo_B だからこのケースは該当しないって言ってますよね…
  • アルビレオ@炙りカルビ @albireo_B 7日前
    grayengineer それに対して「厳密には違う」なんてレベルじゃねーですだいぶ別物です、というつっこみです
  • つりーべる @tada_suzu 7日前
    個人的なメモのつもりだったのでいっぱいコメントが付いて逆に恐縮です…とりあえず、タイトルは変更しました。誰でも自由に変更は出来るので、このツイートが無いと、とかあればご自由にどうぞ。
  • つりーべる @tada_suzu 7日前
    wonderful_panda ご指摘ありがとうございます。議論→様々なご意見まとめ、と変更しました。

カテゴリーからまとめを探す

「ログ」に関連するカテゴリー

ログインして広告を非表示にする
ログインして広告を非表示にする