- PR -

SUBは使わないのが基本?

投稿者投稿内容
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2008-12-18 18:43
私の考え方を述べますと

Function:再利用を考慮したもの
Sub:本体が長い等の理由で可読性向上の為の切り出し

もちろんSubだって再利用できますし
切り出しをFunctionで実装したっていいでしょう。

最大の考慮点は統一性だと思います。
プロジェクトによってはFunctionで統一すること
なんて場合もあるでしょう。

予断ですが昔の手続き型プログラム大好きな方は
Functionを多用し必ずtrue/falseを返すようにしているようです。
正常に処理が終わればtrue。false=異常発生な感じですね。


いろいろ書きましたが
"SUBプロシージャは利用しないのが基本です"は
TASTO様のソースコードをチェックされた方の
「こだわり」であるか「他のコードとの統一感(規約)のため」
かのいずれかであると推測されます。
本人に確認するのが一番かと思いますよ。
TASTO
会議室デビュー日: 2008/12/18
投稿数: 4
投稿日時: 2008-12-18 19:27
campylo様 じゃんぬ様 よねKEN様 あすか様
ご返信ありがとうございます。


やはり指摘の説明についてはご本人に伺わないといけませんね。
それが過去の経験によるものなのか、その方が関わるプロジェクトで統一しているためなのか。
または、無いとは思いますが"なんとなく"、などの具体的な意味が無いものなのか。

「何故Functionを使うのか?」、という質問ではなく、頂いたご回答のように「ではここでの返り値の型と値はどうしたらいいか?」と再度質問をしてみようと思います。


ただ、この質問を適用するべき業務に関われるのが年内のみで、かつ今までの回答までの日時を考えると、私が関われるうちには回答を頂けそうにありません・・
それだけに、この業務内ではどうするか?を決めなければいけなかったのです。

"Sub"を使ってはいけない理由は無いもしくは薄く、使わない場合の影響が大きいため、本プロジェクトでは利用する、但し納得のできる回答があった場合はそちらに従う。
という形で引継ぎます。


皆様、ありがとうございました。
Error401
常連さん
会議室デビュー日: 2007/03/12
投稿数: 39
投稿日時: 2008-12-19 13:20
引用:

よねKENさんの書き込み (2008-12-18 18:42) より:

チェックするためのメソッドがBooleanを返す、というのはよくある話ですが、
そうでないメソッドの場合、例外を使って処理するのが一般的です。
戻り値で返す方法だと意識的/無意識的のどちらでも無視されうるため、
例外機構を使った方がよいです。



え、そういうやり方が一般的なんですか?
意図したエラー(業務ロジック上のエラーなど)も全部例外で実装するのでしょうか?
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-19 13:53
戻り値が特別必要で無い場合、
そのメソッドは正常に終了するか例外が発生するかの2パターンしか無いのだから
例外で処理するのが一般的だ、と私は受け取れました。
例外は通常は起こらない事ですし。
チェックするメソッドはその成否、
コンバートするメソッドはそのコンバート結果、
と言うように返すべき値がはっきりとしている場合は戻り値は必ず必要なのだから。
業務ロジック上のエラーはその業務上のエラーを判断するロジックがあるはずだから
その成否を返しているべきですし。

そういう事なのであれば私もそう思います。

[ メッセージ編集済み 編集者: King 編集日時 2008-12-19 13:56 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-12-19 13:59
引用:

Error401さんの書き込み (2008-12-19 13:20) より:

え、そういうやり方が一般的なんですか?
意図したエラー(業務ロジック上のエラーなど)も全部例外で実装するのでしょうか?


よねKENさんの前提とはまた別のお話になるかと思います。

引用:

よねKENさんの書き込み (2008-12-18 18:42) より:

チェックするためのメソッドがBooleanを返す、というのはよくある話ですが、
そうでないメソッドの場合、


この "チェック" というのはおそらく 「検証込み」 かどうかという意味合いだと思われます。 検証を含まないメソッドの場合は、通常あってはならないことが "エラー" に当たると思われますので、別に間違いではないかと思います (あってはならないこと == 続行不可能な例外)。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-12-19 15:21
#じゃんぬさん、フォローありがとうございます。
#私の先の投稿の意図は、たぶんじゃんぬさんに
#補足していただいている通りだと思います。

引用:

Error401さんの書き込み (2008-12-19 13:20) より:
え、そういうやり方が一般的なんですか?
意図したエラー(業務ロジック上のエラーなど)も全部例外で実装するのでしょうか?



・is〜のような検証用のBooleanを返すメソッドを作るというのはよくある話。
・検証用メソッドでOK/NGを判断しているので、想定している業務ロジック上
のエラーは起きない。
→ NGだった場合は、処理しないとか、ユーザに適切なメッセージを見せるとか、
何らかのアクションを行うので業務上のエラーに対しては対処済み
・そういうわけで、自分で例外をスローする必要は通常はない。

ということを意図しています。

今読み返してみると私の文章が良くなかったですね。
例外をThrowすべき、と私が主張しているようにも読み取れましたorz
(例外を使え、ではなく、例外機構にまかせろ、という意図です。)

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