お世話になります。
経験が浅く、プログラミングのベストプラクティスのようなものがわからないため教えてください。
前提
私のスキルレベル
- VB.NETで簡単な画面アプリを作れる程度
環境
- Windows 10 (開発環境・動作環境ともに)
- VB.NET (VisualStudio2017pro)
- SPREAD 11J
- Oracle Managed Driver
重視する点
- 効率性も見ないわけではないですが、ソースコードの可読性や保守性を重視します。
- 改修頻度は年に数回程度です
内容
DataTableについて複数個所から変更されるデータに連動して同じ行のデータを変更する場合の実装方法について
詳細
VB.NET
にて、ユーザ手入力、RS232cなどで入力されたデータをOracleDB
に保管するクライアントアプリを開発しています。
処理の流れは大まかに以下の通りです。
OracleDB
に保存されたデータをDataTable
にFillするDataTable
に保管されたデータをSPREAD
のDatasoruce
に紐づけて画面にスプレッドシートを表示- ユーザ手入力、バーコードリーダ入力、デジタル入力、RS232c通信入力があれば画面 プレッドシートに反映
この時、A列が変更されたら自動的にB列を変更するような処理があり、A列は様々な処理から変更されます
上記のB列自動変更処理については、SPREAD
のdatamodel.Changed
イベントでA列の変更を検知してB列を変更しています - 変更されたデータを
OracleDB
に保存
そのような中でSPREADのバージョンアップを行ったところ、それまでのバージョンが出ていなかったStackOverflowExceptionエラーが表示されてしまいました。
エラーが表示されたこともあり、B列自動変更処理の見直しを行っています。
お聞きしたい点
現在は下記①で実装していたのですが、②や③のような実装方法も考えられ、皆様はこのような場合はどのように処理されているか教えてください。
- 詳細で書かれているように、A列の変更イベントをトリガーにしてB列を変更する
- メリット: 改修の際に1か所の変更でよい、改修の際に処理忘れなどがない
- デメリット: イベントの存在を知らないと勝手にデータが変わったかのようにふるまう、処理の流れが乱れるためデバッグがしにくい、ミドルウェアに依存してしまう
- A列を変更するすべての関数にてB列の変更処理を行う。
- メリット: データの処理が見やすい、デバッグしやすい、ミドルウェアに依存しない
- デメリット: 改修の際に変更忘れなどが発生する
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/28 09:31
2019/06/28 09:44
2019/06/28 10:11
2019/06/28 10:35
2019/07/01 07:31
2019/08/05 04:43