sakura
sakura copied to clipboard
CNativeW クラスの SetString メソッドに std::wstring_view 型を受け取るものを追加
PR の目的
SetString メソッドを呼ぶ際に、std::wstring 型のインスタンスの c_str() メソッドでポインタを引数にして呼びだすと、CNativeW::SetString( const wchar_t* pszData ) の実装で std::wstring_view のコンストラクタで文字列の要素数を調べる処理が走ります。文字列の要素数の情報は std::wstring 型の size や length メソッドで定数時間で取得できるので、それを使う方が効率が良いと思い変更しました。
カテゴリ
- リファクタリング
PR の背景
PR のメリット
.c_str() の記述が無くせるので記述が短くなります。
PR のデメリット (トレードオフとかあれば)
特にないと思います。
仕様・動作説明
PR の影響範囲
テスト内容
テスト1
手順
関連 issue, PR
参考資料
https://cpprefjp.github.io/reference/string/basic_string/length.html https://cpprefjp.github.io/reference/string_view/basic_string_view.html
:white_check_mark: Build sakura 1.0.3933 completed (commit https://github.com/sakura-editor/sakura/commit/07e122c14d by @beru)
:white_check_mark: Build sakura 1.0.3937 completed (commit https://github.com/sakura-editor/sakura/commit/0d59e8cf3f by @beru)
Draftのままですが、残課題とかありましたっけ?
Draftのままですが、残課題とかありましたっけ?
テスト未実施なのでDraftにしています。
このPRって続行します?
-
趣旨
CNativeW::SetString(std::wstring_view str)を追加することにより、dist.SetString(str.c_str(), str.length())のようなlength()呼出を削減し「高速化」したい。 -
停止理由 単体テストを整備したいが時間がとれない。
個人的に懸念は「修正によって既存コードがクラッシュする事態にならないか?」だけです。
CNativeW dist;
const wchar_t* pNull = nullptr;
dist.SetString(pNull); //←これがstd::wstirng_view型引数と解釈された場合、クラッシュしてしまう。







