# Thread 常に Thread の生成と破棄が繰り返されているのが気になる 必要であれば Thread.Pool を使う 本当に必要? # TIntefacedObject を無くす メモリ管理をプログラマが行う # CommManager サーバとの通信を統括する **1スレッド** Queue による仕組み コマンドとその返値を処理するハンドラを渡す ```delphi TCommManager.Send( Command, procedure(const ARevceived: String) begin {処理} end); ``` # DialogManager Dialog を一元管理する Dialog Queue を作る Dailog に種類を作り Queue 内で優先順位を作る ### 優先度 * Emergency 緊急。何よりも急いで出す * Primary 優先順位高 * Normal 通常の順位 ### 属性 * OnlyOne Queue 内には1つしか存在できない(エラーなど) * Toast トースト表示する # Redux Redux の仕組みは Delphi に合っている? # View の仕組み 複雑になりすぎているような… # 積極的なコンポーネント化 カプセル化を徹底し、単体テストをやりやすくする # ContextMenu ChatMessage 毎に作っているみたいに見える # 戻り値について TByteBufUtils.ToStream などで見られる方法で、戻り値としてインスタンスを返す方法が採用されている。 例えば↓のような。 ```delphi function Foo: TStream; begin Result := TBytesStream.Create; end; ``` これだと、メモリ解放の責任を呼び出し側に求めることになるが、ToStream からインスタンスが返ってくるかどうかは ToStream を読まないと判らない。 なので、呼び出し側でインスタンスを作って、そのインスタンスを渡す様にする方が一般的かと。 ```delphi var Stream := TBytesStream.Create; try TByteBufUtils.ToStream(Stream); finally Stream.Free; end; ``` もしくは、Delphi の命名規則に則って CreateXXX を使うと Delphi プログラマーは、これが生成したインスタンスを返すと判断できる。 ```delphi var Foo := TBytesBufUtils.CreateStream; // ToStream を改名 try // なにか処理 finally Foo.Free; end; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up