- PR -

ファイルのテンプレート作成

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-11-06 11:48
こんにちは。

>>はい、最初から一応そのようにして全てをMustoverrideで定義しては
>>いません。ただ、今回はポリモーフィズムをいくつかもちいるため、
>>そのためのメソッド群をMustOverrideで定義しています。

 MustOverrideだと、実装を入れられないですよね。Overridableにしてはいかがですか?こちらは実装可能なので、全く同じであればオーバーライドせず、違うところがあるならオーバーライドするという使い方ができます。

 ところで、
ABSTRUCT(A)
|
REALIZED(A'1), REALIZED(A'2)
|
INHERITED(A'1'1)(A'1'2)(A'1'3), INHERITED(A'2'1)(A'2'2)(A'2'3)
(これで伝わるかな?)
というように、形だけの抽象型(親)Aと、それに実装を加えインスタンスを作成できる(子)A’、それを元にポリモーフさせた(孫)A’’というような設計はできませんか?
#VBの場合、多重継承できないので、インターフェースを用いると、難しいんですけどね。
あと、昨日知ったのですが、デリゲートといって、処理を委譲することもできるようです。そういった機能も使えないでしょうか。

 と、思ったのですが、「継承」することが問題なのではなく、開発要員の足並みをそろえることが問題なのですね。それはもう、「教育」「啓蒙」しかありません (^^;


 コードは、折りたためば1行選択するだけですべての行を選択したことになります。こうすれば、全体を見ながらコードを移動させることができます。また、クラスエクスプローラを使うと、メソッド、プロパティ一覧から定義にジャンプすることもできます。そういった機能も活用しましょう。また、#REGIONも、かなり評価できます(入れ方を間違えなければ)。

 メソッド名、変数名については、一覧表を作成します。これは、ユーザの用語をまとめるためにも役に立ちます。コードのリファクタリング(見直し)を行い、規則に沿っていないものについては修正を要求します。(私は最初にコーディング規約を渡され、「この通りに書かないと給料もらえないからな」と言われました )他人のコードの修正をさせれば、大概は統一の重要さに気づきます。(それでもダメなやつは上司に言ってチームから外す!ができたら、楽なんだけどなぁ)

 「他人にもわかるように書く」というのは重要なことで、「3ヶ月たったら自分のコードも他人のコード」だということに早く気づかせる必要があります。
 確かに、スケルトンが作成できれば楽ですが、その楽は一時的なもので、規則の下に作る、という意識付けを行わないと、結局リーダだけがいつまでもしんどい目を見ることになります(経験則)。
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-11-06 12:15
通常の名無しさんの3倍さん、七味唐辛子さんご意見感謝します。

>後ろのほうの話は、言語というより
>コミュニケーションの問題のように僕には感じられます。
>コーディング標準を策定するとか、
>そういった解決策もあるのではないでしょうか

>そう思います。それほど本質的な問題ではないと思う。

実際にはそうなんです。しかし、実際にコーディング標準を作成していても
問題は発生するものです。処理手順などまで規定するわけにはいきませんし
特に開発チームのスキルにばらつきがあるとき理想論だけでは対応できないことも
あります。


>VBのときはこうだったとかいうのは手放したほうがいいです。

私はVBからNETへ移行した言語的なことをこだわっているわけではありません。
(文字列のFormatが使えなくなったとか、そのようなことをいっているのでは
ありません)。おっしゃられている内容は主に言語体系に関してはあてはまると
思いますが、ツールの使い勝手に関して適用するのはどうかと思います。


テンプレートファイルを作ってそれを配布する方法はVB6のときから
使っていますが、管理をする側からすると負担がかなり減りました。
そういった経緯があるため、結構こだわっているのです。

ご意見はごもっともだと思いますし、趣旨も理解しております。
お気を悪くなさらないでください。


無論テンプレートファイルを使うことが出来ないということであれば
それはそれで何か違う方法で対応するしかないと理解しております。


>TemplateMethodパターンで親クラスに流れを定義できませんか

もう少しテンプレートファイルを使う方法がないか模索した後、
再度、検討して見直します。ありがとうございます。

べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-11-06 12:43
Jittaさん、ありがとうございます。

>MustOverrideだと、実装を入れられないですよね。Overridableにしてはいかがですか?
>こちらは実装可能なので、全く同じであればオーバーライドせず、違うところがあるなら
>オーバーライドするという使い方ができます。

一応現在はそうなっています。

>(これで伝わるかな?)
>というように、形だけの抽象型(親)Aと、それに実装を加えインスタンスを作成できる
>(子)A’、それを元にポリモーフさせた(孫)A’’というような設計はできませんか?

検討して見る価値はありそうですね。というか面白いアイデアですね。
技術者として興味が沸きました。

>と、思ったのですが、「継承」することが問題なのではなく、開発要員の足並みを
>そろえることが問題なのですね。それはもう、「教育」「啓蒙」しかありません (^^;

その通りなのです。


>メソッド名、変数名については、一覧表を作成します。これは、ユーザの用語を
>まとめるためにも役に立ちます。コードのリファクタリング(見直し)を行い、
>規則に沿っていないものについては修正を要求します。(私は最初にコーディング規約を
>渡され、「この通りに書かないと給料もらえないからな」と言われました )他人の
>コードの修正をさせれば、大概は統一の重要さに気づきます。(それでもダメなやつは
>上司に言ってチームから外す!ができたら、楽なんだけどなぁ)
>「他人にもわかるように書く」というのは重要なことで、「3ヶ月たったら自分の
>コードも他人のコード」だということに早く気づかせる必要があります。
>確かに、スケルトンが作成できれば楽ですが、その楽は一時的なもので、規則の下に
>作る、という意識付けを行わないと、結局リーダだけがいつまでもしんどい目を見る
>ことになります(経験則)。

まったくもってその通りなんですけどね。でもVBの経験はあるけれどクラスを使って
プログラムをしたことがないメンバーを前にするとですね(おまけに年末納期)
「ぐだぐだいわずに、このテンプレート使って」という風になるのです。

つまりコーディング規約もそうですが、ほっとくとコーディング規約にのっとったまま
クラスを一切使用しない力技で動くプログラムを書いてしまう可能性があるのです。
一時凌ぎであることは重々承知なんですが、ある意味テンプレートファイルを通じて、
クラスを使ったプログラムの勉強をさせる意図もあるのですよ。

「クラスも使えん奴はいらん」その一言、言えるものなら言いたい。


なんとかならないのかな。
AYA
会議室デビュー日: 2002/10/29
投稿数: 10
投稿日時: 2002-11-06 13:11
こんにちは、AYAと申します。

常連さんの中に混じって意見をいうのはとても気恥ずかしいのですが、
一応私なりの気づいた点を・・・

べーちゃんさんの行いたい事を手っ取り早く行うには、VisualStudioの
マクロを利用されてはどうでしょうか?

VS6のころからVC++にはあった機能なのですが、VBScriptでプロジェクト
の作成や、ファイルの作成、ファイル内の文字列操作など、いろいろで
きます。

テンプレートの内容をプログラマブルに変更しなくても良いのであれば、
外部ファイルの内容を差し込むだけのAddinなどはベクターなどにもあっ
た気がします。
そういうのを利用すれば、VSのオートメーションオブジェクトを学習
しなくても良いので楽だと思います。

もうちょっと見栄えが良いものを作りたいのであれば、カスタムウィザード
を作成されてはいかがでしょうか?

さらに本気モードの場合はエンタープライズテンプレートという機能
があるようですが、こいつは詳しくは調査していません。(^-^;;

的外れな意見でなければよいのですが・・・
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-11-08 12:48
こんばんは、べーちゃんです。

情報を提供してくださった皆様に深く感謝しています。
AYAさん、VBScriptの件は私もVCを使っていましたが知りませんでした。
実際には時間が無く、まだ試せていませんが、VB6やVC6の開発も無くなった
わけではないのでそのうちに試して見たいと思います。

ところで、表題の件ですがとりあえず、最低限の要求を満たす方法が
見つかりましたのでご報告したいと思います。ってあまりに灯台下暗しの
方法だったので拍子抜けでした。

1.テンプレートファイルを作成する
2.Exclude from Project(プロジェクトからはずす?)
 すいません。環境が英語なんで日本語のメニューリソースがわからないんです。
3.ソリューションエクスプローラの設定をShow All Files(全ファイル表示)に
 設定する。こうするとプロジェクトからはずしているファイルでも表示・取込みが
 可能になります。
 *余談なんですがこの「全ファイル表示」(ソリューションエクスプローラの上部の
 アイコン)なかなか便利で、ASPXファイルに階層が現れ、ASPX.VBファイルが
 階層下に見えるようになるのです。そんでもってこのASPX.VBファイルのVSSによる
 差分を直接マウスで操作して見ることができるんです。以前はASPXファイルしか
 現れていなかったため、ASPXファイルの差分しか見れず、コードの差分を見るときは
 毎回手作業で比較するファイル名の後に".vb"を付加しなければならなかったので
 本当に助かります。

4.先ほど作成したファイルを選択し、コピーする。
5.ファイルを作成したいフォルダでペーストする。
6.ペーストしたファイルは"コピー・・・・"というファイル名でそのままでは
 プロジェクトから外れた状態になっています。ファイル名を変更して
 ファイルをInclude to Project(プロジェクトに取込む)
7.ファイルを変更しても中のクラス名称は変わっていないのでクラス名を
 変更する。

と以上の方法で簡単にテンプレート(スケルトン)を使ったファイルを
作成できます。Windowsプロジェクトでも使えるかは不明ですが。
余りにあっけない方法だったのでこの1週間悩んでいたのは何だったのか
ちょっとボーゼンとしてます。

いろいろなご意見を下さった方々、今回はやり方にある意味固執した
部分もありご意見を十分には反映させることができず残念ですが、
これが全てというわけでもなく、徐々にメンバー教育と共にご意見を
取入れていこうと考えています。
今後ともよろしくお願いします。



[ メッセージ編集済み 編集者: べーちゃん 編集日時 2002-11-08 12:59 ]

スキルアップ/キャリアアップ(JOB@IT)