LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://mesosune.blog123.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ |

【Notes】LotusScriptのオブジェクト指向

   ↑  2007/11/04 (日)  カテゴリー: Notes(LotusScript)
Notesはオブジェクト指向型だそうです。
JavaとかC++の自由なオブジェクト指向からみると
多重継承できないとかとかオーバーロードができないとか,

JavaScriptのように「なんちゃってオブジェクト指向型」に思えなくもなく,
単なる構造化言語の一種にしか感じないのですけどねw:
(指向型と指向は違うので注意(笑))

(ちょっと調べてみたら,
クラス継承とカプセル化はできているという話もありますが
コレできちんとできてるといわないとおもうんだよなぁ。)

--------------------
(1)UML図,書けますか?
--------------------
オブジェクト指向型言語なので,
設計時にUMLの記述をしたほうが良いことになります。

仕組みが良くわかっても無いのに設計をせずに組むのは言語道断な行為だと思います。
新人さんは特に,設計を書く手間を省くより,
紙上にでも簡単なフロー図を書いて
ちゃんと仕様を固めてから着手したほうが断然早いです。

はっきりといってしまえば,
設計とテストにどれだけ時間をかけられるかで品質は決まります。
また,どれだけテストや追加仕様,仕様変更を見越して設計をきちんとできるかで
全体の工数の増減が決まります。

--------------------
(2)可能な限りパーツ化(部品化)する
--------------------
可能ならば設計時に処理を分けてしまいます。
ここでどれだけ単純化でき,部品化できるかで処理の重さが決まってきます。

私は,分岐などの分岐は分岐,処理は処理で,完全に分けてしまいます。
パーツ化することで,だいたいどの辺りを共通化できるかというのがわかるはずです。

--------------------
(3)値の引継ぎに注意する
--------------------
宣言の方法によっては,同関数を呼ぶときに以前通った値を持ったままになります。
処理に使う変数は毎度クリアしてから使用する癖をつけましょう。

また,どのように値がout/inするかは
引継ぎのためと自分自身のためにコメントはきちんとつけましょう。

--------------------
(4)どうやって共通クラス(共通オブジェクト)を呼んだらいいのだろう。
--------------------
LotusScript上では自作エージェントを共通クラスとして考えることはできません。
単純な方法ではLotusScriptで呼び出せないようになっているためです。
(そうじゃないとできない動きもあるので一概には言えませんが,
往々にしてたとえきちんと呼んだとしても動作が激しく重いのでお勧めできません)

共通クラスという考え方はFunctionやSubの関数自体や,ライブラリとの関係で行うという考え方になります。

--------------------
(5)エージェントにも関数をおくことができる。
--------------------
えーと。私は最初気づいていませんでした(笑)
ほとんどの処理は全てライブラリに置いていたのです。

エージェント内にはそのエージェント内で行いたい処理を
他のエージェントでも呼び出したい処理はライブラリに置く
と,考えると見た目も処理もすっきりしますよ。

また,ライブラリがエージェントよりも先の保存時間になっていると稀にエラーになるので注意!
(何かエラーメッセージをだしてくれればいいのに,何も言わず処理が落ちてしまう)

--------------------
(6)予測できることは全てテストパターンに入れよう!
--------------------
私自身,全パターンを想定して設計とテスト計画をたててをやりましょうと現場で言っても聞いてもらえないのですがねw;
(すばらしくいきあたりばったりな職場なもので;
行き当たりばったりなところをいい加減にしてくださいと営業に言わせたら,
自分らが十分な聞き取りができていないからなのに自分たちの計画性がないのをお客様のせいにしたよ!すげーよ)

不具合が起きたときに予想外でした!といわないで済むよう,
テスト前に計画を立てて,
テストレビューを行って抜けがないか
方法に問題がないかを話あってからやると結果的に楽ですよ。

これだけは身をもって言えます;;;
手を抜くところを間違えると大変なのです・・・・
オブジェクト指向とは,
設計や開発において操作手順よりも操作対象に重点を置く考え方です。

データやそれに対する手続きを「オブジェクト」として,その組み合わせによって構築するのですが,現実世界の「モノ」(オブジェクトの和訳はモノ。)になぞらえた考え方であることから,「オブジェクト」指向っていうのです。

すでに存在するオブジェクトについては,
利用に際してその内部構造や動作原理の詳細を知る必要はなく,
外部から何かを送れば機能するため,
特に大規模なソフトウェア開発において有効な考え方であるとされています。
※ただし,これに反論している人もいるので調べてみると面白いです。

モノの形状をメソッド,モノの状態をプロパティです。
縦横に表をかけば一目瞭然なので,わからない人は参考書をみながら実際にかいてみるとわかりやすいとおもいますよ。

オブジェクト指向が苦手な人や勘違いしている人がなぜか多いのですが,
意外と理屈は明確で結構簡単なのです。
(簡単だから間違えるんだろうけど。)
スポンサーサイト

(記事編集) http://mesosune.blog123.fc2.com/blog-entry-8.html

2007/11/04 | Comment (2) | Trackback (0) | HOME | ↑ ページ先頭へ |
この次の記事 : 【Notes】LotusScriptのクラス?
この前の記事 : 【雑記】Web開発するなら

Comment


LotusScript の継承とオーバーライドの書き方

'/**
' * 親クラス(基底クラス)
' */
Public Class Parent
Public Sub Method
'//フックメソッド
End Sub
End Class

'/**
' * 子クラス(派生クラス)
' */
Public Class Child As Parent
Public Sub Method
'//オーバーライド
Msgbox "Override"
End Sub
End Class


massaman |  2008/05/25 (日) 15:02 No.42


ありがとうございます。

massamanさん、いらっしゃいませ。
書き込みありがとうございます。
例があるとわかりやすいですね^^

Notesそのもの開発者さんが複雑度回避のため使えなくしたんだろうなぁとは思いますが、
もちっと自由度があるほうが楽かもしれない。と思います。はい。

めそ凹すね丸 |  2008/06/17 (火) 12:21 [ 編集 ] No.44

コメントを投稿する 記事: 【Notes】LotusScriptのオブジェクト指向

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

この次の記事 : 【Notes】LotusScriptのクラス?
この前の記事 : 【雑記】Web開発するなら
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。