参照先どこ?状態

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

参照先どこ?状態

投稿記事 by もるも » 6年前

一体何回作り直したら気が済むのか・・・(;^ω^)
前のはメインフォームのソースファイルが1000行超えてやる気なくした(笑)

サイズ変更とか、タイルの呼び出しとか追加したら、
アンドゥリドゥがまともに機能しなくてかなり悩む。
描画できても、もどした後やりなおして再現されなかったり。
サイズ変更後の古いビットマップにアクセスしたままで描画されなくなったりというのが原因。

ある程度進むと設計の慎重さが欠けてコードが散らかってくるのが悩ましい。
スクリーンショット (192).png
スクリーンショット (192).png (44.96 KiB) 閲覧数: 89 回

アバター
usao
記事: 1889
登録日時: 12年前

Re: 参照先どこ?状態

投稿記事 by usao » 6年前

>メインフォームのソースファイルが1000行超え

ちょっとした画面でも
・GUI操作を内部ロジックに伝達するための記述
・GUI更新用の処理
とか書いてるだけで1000行くらいにはすぐになっちゃうんじゃないでしょうか.

単純なメソッド1個書くだけでも

CODE:

  //(ここ:別のメソッドとの間 に空行)
//コメントだけで複数行
//引数がどうの…
//戻り値がどうの…
bool XXX( int a )	//ここで1行
{//括弧だけで1行
   if( a > 0 )	//引数のチェック
   {//括弧だけで1行
     //実質やりたい処理の記述はこの辺だけ
   }//括弧だけで1行
     //(なんとなく空行)
   return true;	//戻り値で1行
}//括弧だけで1行
とかで行数は簡単に膨れますし.

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: 参照先どこ?状態

投稿記事 by もるも » 6年前

500行ですら把握できなくなってくるレベルなので辛いです(;^ω^)
大きなプログラムを作ったことがないので1万行とか聞くとクラクラします。

アバター
usao
記事: 1889
登録日時: 12年前

Re: 参照先どこ?状態

投稿記事 by usao » 6年前

今,処理アルゴリズムの動作確認用の取って付けたような小さいダイアログを(C++でMFCですが)作ってますが,
・必要な設定値をコントロールから取得してアルゴリズムに流し込む
・アルゴリズムの結果値をコントロールに表示する
だけでもう500行は越えてます.GUIが絡む部分だとそんなもんだと思いますよ.

未来(3日後とか)の自分自身の記憶力と理解力に期待できなそうな処理を書いた場合には
迷子にならないためのコメントを盛大に残しましょう(そうすることで,もっともっと行数を膨らまそう!)

アバター
usao
記事: 1889
登録日時: 12年前

Re: 参照先どこ?状態

投稿記事 by usao » 6年前

フォームの行数…に微妙に関係あるかもしれない話.

ユーザコントロールの立ち位置(?)というか,そこらへんの考え方が,物によって(あるいは人によって?)違ってて,
説明しにくいけど

(A)ユーザコントロールは1つの独立したUI部品(TextBoxとかと同じような汎用部品的な)
(B)そもそもある特定のフォームを作るために,その一部分を切り出しただけのもの(そのAPPの特定のGUI専用)

みたいな?

(A)側の考えだと,ユーザコントロールは「どのフォームに使用される」とかそういう外側の都合と無関係な存在なので,
ものすごーくざっくり書くと
【データ】ー【フォーム】ー【ユーザコントロール】
みたいな関係.
ユーザコントロールに入力された値をデータに反映する作業とかはフォームが橋渡し(?)するような感じなので,フォームのコードはその分(B)よりも多くなるかも.

他方,(B)側の立場(?)の場合には
【フォーム】---【ユーザコントロール】
  |     /
 【 データ 】
みたいな関係.
ユーザコントロールとフォームを「合わせて1個の画面」みたく考えるので,ユーザコントロールはフォームを介さずにデータとやりとりする
(ユーザコントロール上にあるコントロール群を,(ユーザコントロールを作らずに)フォームにダイレクトに全て並べた場合にフォームに書かれただろう処理がたまたまユーザコントロール側のファイルに書かれているだけ,っていうか,そんな形).
なので,(A)と比べるとフォーム側のファイルの行数は少なくなるのかな.

アバター
usao
記事: 1889
登録日時: 12年前

Re: 参照先どこ?状態

投稿記事 by usao » 6年前

まぁなんやかんやで,
ちょっとデカめのAPPを複数人で作る際に,ガチの初心者が議論(と言う名の戦争)を重ねた結果として

【フォーム】 【ユーザコントロール】
 |      /
【   X   】―【↑の段のためだけに必要なデータ】
    |
【APP機能用データ(というかAPPの機能)】

って感じにするとなんとなくいいんじゃねーの!? という感じになったりして,
日夜【X】の行数が膨れ上がるのだった.

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: 参照先どこ?状態

投稿記事 by もるも » 6年前

パネル使ってユーザーコントロールとしてそれぞれ分けてメインフォームに張り付けたり、
処理系クラスを作って行数節約するのが精一杯ですねぇ・・・。
(整理整頓が得意になりたい)

アバター
usao
記事: 1889
登録日時: 12年前

Re: 参照先どこ?状態

投稿記事 by usao » 6年前

そういや,各種操作をUndo/Redoできるソフト,って作ったことないですね.
(仕事の分野がそういう方向じゃないので… とか言い訳しておこう!)

「とりあえずUndo/Redo無しの状態を作って,あとから機能追加しよう…」
とかいうのが不可能ぎみに思えるので,最初からそれありきで設計しないとまずそうですね.
(全ての操作をコマンドパターン(とか言うの?)で書く的な…???)

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: 参照先どこ?状態

投稿記事 by もるも » 6年前

私の場合は、アクションごとに基底クラスを持たせて派生させて命令を作ってから、
基底型のリストに詰め込んで一気に再現するようにしました。