-
Notifications
You must be signed in to change notification settings - Fork 163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CNative::Clear() → CNative::shrink_to_empty() に名前変更する #778
Conversation
経緯は了解。スジが通ってると思います。 |
単に名前だけの問題だったら、後で一括置換してもいいと思います。 |
詳細を一言で表すものが関数名だと思います。
CMemoryにメモリ縮小の機能がないからですよね。 視点を変えて、CMemoryにメモリ縮小の機能がない理由が分かったとします。 ・・・という方向に議論を展開させたほうがいいのか、 一人で考えてても仕方ないと判断したので、上記別案を共有しました。 |
どうせなら |
ここに納得がいってないです。 CNative::Clear()を実体に即した名前に変更するのはよいです。 しかし、CNative::Clear()を廃止新設して内容を変えるのはおかしいと思います。 string::clear() は補助記憶用の内臓メモリを開放し、lengthを0にする関数です。 厳密には同じことをしてるわけじゃないので、 CNative::Clear() を「length に 0 をセットする関数」にするのは違うと思います。 |
ヘビさんとラクダさんのどっちが好きか?については、どっちでもいいです。 caseの違いが大事なのはコンパイルするときだけで、 なんか、懐かしいCMを思い出しました・・・ キリンさんが好きです。(ry |
https://en.cppreference.com/w/cpp/string/basic_string/clear ここを読むと、Notes に、
と書かれてました。何やらC++標準規格ではメモリ解放しない事を明示的に要求はしてないけど既存の実装はメモリ解放してないみたいなんです。 現在の使用状況に合わせてメモリ解放してほしい場合用に 思い付きですが、Clear 呼び出し時にメモリ解放するかしないかはデフォルト引数で設定するやり方でも良いような気がします。 なんて事を言うとまた議論が発散、脱線してしまいそうですが…。 標準ライブラリと同じ名前を使った場合に挙動を合わせた方が良いかは、まぁそれに特に反対する理由は無いです。ただし、そうしなければいけない、とは思いません。ヘッダファイルを見た時にヘビとラクダが延々と交互に並んでいたらまぁ副作用で腹筋の運動にはなると思いますw |
なんと!ぼくの誤解ですね。 https://ja.cppreference.com/w/cpp/string/basic_string/clear vs2017とvs2013、vs2010でソースを確認しました。 あとは、 |
だとしたら、別にこの PR 対応しなくていいんじゃないかと思います。 現状 CNative::Clear() が使われている箇所はすべてローカル変数なので そのため、単に #777 をマージしてして、その後に #776 をマージすればいいと思います。 その後で、ShrinkToFit() を追加実装する必要があるか検討すればいいと思います。 |
既存7箇所の呼出箇所について、これClear()する意味なくね?という感想を抱いたことは秘密です。 というわけで #777 を approve してきました。 |
この PR は不要になったと思っています。 |
対応の背景
#776 でウィンドウタイトルを取得するユーティリティを実装する際に #776 (comment) のコメントをもらった。
それで #776 (comment) のコメントの通り
データサイズを空にするべく #777 を作成した。
そうした場合、#777 (review) のようにメモリサイズを減らしたい場合に対応できないというコメントをもらった。
対応内容
データサイズを空にするという処理を CNative::Clear() で実装することにして
std::basic_string::shrink_to_fit に近いバッファサイズを縮小する既存の CNative::Clear() を名前変更することにする。
この PR マージ後に #777 を rebase して、 CNative::Clear() でデータサイズを空にする処理を実装する予定。