日々、感じたことをまとめる場として利用するこの広告は、90日以上更新していないブログに表示しています。2019-04-07unique_ptrについてC++ではポインタ管理用にunique_ptrが追加されており、これの使い方と解決できる問題をちょっとまとめ。生ポインタ(rawポインタ)をそのまま使うということはC言語からずっと行われており、C、C++に慣れた方なら言語もうみんな違和感がなくなっている。rawポインタの操作には実はどうしても不明瞭な部分があり、それをプログラマーが解決している。実は次の点が安全か疑問が残るんです。pとしているけど本当に大丈夫?createWidgetの宣言からわかるのはWidget*だけだから、解放の仕方は次の1~3のパターンがあって、(4は注意すること)コーディング時にプログラマが解放の仕方を調べて安全にする必要がある。例:戻り値がstaticな領域のポインタ、クラスメンバのポインタdelete[]。例:配列のポインタを返す解放用の関数がある。例:free関数がある全パスで一度だけ解放する。(リーク対策、2重開放対策)unique_ptrunique_ptrを使用するとcreateWidgetを使用する側は受け取ったポインタの消し方を考える必要がなくなる。1;}unique_ptrはただ一人がrawポインタを所有するという特性を持つため、createWidgetからポインタの所有権を移譲されたため、delete不要。例:戻り値がstaticな領域のポインタ、クラスメンバのポインタ→この場合はそもそも戻り値の型を参照型にすればいいと思うdelete[]。[]を呼んでくれる解放用の関数がある。例:free関数がある→deleterを定義できる全パスで一度だけ解放する。(リーク対策、2重開放対策)→RAIIになっているので必ずスコープを外れると解放される。11:45unique_ptrについてTweet広告を非表示にするもっと読むコメントを書く2019-03-31FutureについてメモFuture:未来→先物時間がかかる処理を行う際に、とりあえずFutureだけをもらってあとで結果を取得する。並列に処理を行ってスループットは上げられるけど、結局getで待つの?これだと重い処理がファイルIOとかで時間の予測も難しいから非同期にしたいというときに使えない。);}f1が完了した後の動作をthenに書くことができる。※C++14では上記の書き方はできない。将来的には対応するリストにまだある。http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3558.pdf■Futureを使うことのメリット以下の書籍がとても参考になりました。使い方の説明はWebにたくさんあるのですが、設計として何を意図しているかを説明してくれています。見るマルチスレッドを意識しているのは誰?Host:スレッド起動しているからFutureData:Dataのget/setで競合を防ぐ必要があるから実際にDataを作成する一番ロジックが入るRealDataに非同期を意識しなくてよくなる。:https://msdn.microsoft.com/ja-jp/magazine/dn818494.aspxにつながるのだろうか。environmentを使うとでてくる。C++だったので復習を兼ねてメモ。....}のようなことをしていた。binding参考書とかで以下のコードをghciで入力しようと、タイトルのようなエラーがでると思います。うまくいかないときはファイルに書いてロードするといい。factorial(n-1)ghciで上のコード一行ずつ入力してもエラーがでます。(宣言はあるけど定義がないなど、、、)だから、上のコードを一旦拡張子.hsのファイルに記述して:lでロードするといいです。Bool=>の前にあるのが型クラス制約というもので、"型aはEq型でないといけない"ことを意味する。全体では"==は同じ型aの引数をとって、型aをとってBOOLを返す関数です。型aはEq型のインスタンスである必要があります"ということを意味しています。canvas.多くの開発環境では、さまざまなビジュアルオブジェクト(「ウィジェット」)をキャンバスにドラッグアンドドロップすることで、ユーザーインターフェイスを視覚的に構築できます。with.これらのビジュアルオブジェクトには、ビジュアルオブジェクトに固有の可能なアクションまたはイベントの1つを選択し、IDEが提示するコードウィンドウにロジックを入力することによって、ビジュアルオブジェクトにビヘイビアを追加できます。objects.このロジックは、ユーザインタフェースの背後でアプリケーションを呼び出すことを伴い得るか、またはこのまたは他の視覚的オブジェクトの状態を変更することを含み得る。them.ビジュアルオブジェクトは、それらを呼び出すプレゼンテーションフレームワークに密接に結合されているため、効率的にテストすることは非常に困難です。requires.テストでは、ビジュアルオブジェクトに必要なすべての情報と機能を提供するために、その環境をシミュレートする必要があります。all.これはテストを非常に複雑にするので、多くの開発チームはプレゼンテーションロジックのテストを全く気にしません。Bugsにつながります。tests.ハンブルダイアログを作成するために、ビューコンポーネントからロジックのすべてを非同期テストでテスト可能な非ビジュアルコンポーネントに抽出します。argument.このコンポーネントがビューオブジェクト(ハンブルダイアログ)の状態を更新する必要がある場合、ハンブルダイアログが引数として渡されます。予想される動作(間接出力)で構成されたモックオブジェクトをハンブルダイアログに置き換えます。Dialogが見たい各イベントのフレームワークに自分自身を登録しなければならないGUIフレームワークでは、非ビジュアルコンポーネントは、ハンブルダイアログの代わりに自身を登録することができます。logic.次のコードサンプルは、VBのビューコンポーネント(.ctl)のロジックです。InteractiveのTestDirectorツール用に作成したカスタムプラグインの一部です。constructors.理想的には、ロジックをテストしたいのですが、パブリックコンストラクタを持たないため、渡されたオブジェクトをパラメータとして構築することはできません。classes.関数のパラメータの型が特定の具象クラスにハードコードされているため、他の型のオブジェクトを渡すことはできません。X)のリファクタリングを行うことができます。move.これには、通常、リファクタリングを理解しやすくするために元の例で行っていたいくつかの抽出メソッドリファクタリングを実行します。これは、移動するロジックの各チャンクに対して1つです。Classリファクタリングを実行して、新しいテスト可能コンポーネントクラスを作成します。[Fowler]リファクタリングの両方が含まれており、必要なロジックとデータをハンブルダイアログから新しいテスト可能コンポーネントに移動できます。interesting.このOcsScriptViewerImplクラスを簡単にインスタンス化し、VbUnitテストを作成することができます。私はスペースの理由でテストを省略しました。面白いことは何も実際に表示していないからです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。