もうそろそろ中の人は気付きそうですが、某社のコーディング規約 (コーディング標準) にて、
某社のコーディング規約 (コーディング標準) から引用
クラスモジュールを作成することを禁じる。
とりあえず、今後の酒のネタにするために理由を尋ねてみました。返答は以下のとおりでした。
その理由とは?
- クラスモジュールって重いよね? 標準モジュールの方が軽いよね? (疑問系で言われても困るよね?)
- As New って書くのが面倒じゃない? あれ意味わかんないし。(おまじないじゃないし)
- グローバルにできないしぃ。(知識を身につけてから発言しようよ...)
- これのせいで不具合とか出ちゃったりするんだよねぇ。(根拠は? ソースは? エビデンスは?)
- 使ったら絶対 Nothing セットしなきゃいけないでしょ? (んなこたぁーない)
- ぶっちゃけ良くわかんないんだよねぇ。(←それだ!!)
少なくとも Stream や Connection などを扱う場合はクラス モジュールの方が数倍安全です。(あ、すみません。これ VB6 の話です) 参照カウント法によって自動的に Terminate イベントが呼ばれるので解放漏れが激減します。前回の規約で解放 (彼らの言葉では開放) に拘っていたのにここでは相反した決定をしています。こうなってしまうのは「何も知らない」「知らないのに調べない」「検証もしない」「変化が怖い」からです。勝手に中途半端な知識 (もしくは、間違った知識) で決定されては困りますよ。
それと「解放解放」うるさい人が標準モジュールでコネクションを開けっ放しにしておくのもどうかと思いますよ... そ、そうか!!
.ト│|、 |
. {、l 、ト! \ / ,ヘ |
i. ゙、 iヽ / / / ヽ │
. lヽミ ゝ`‐、_ __,. ‐´ / ,.イ \ ヽ |
`‐、ヽ.ゝ、_ _,,.. ‐'´ //l , ‐'´, ‐'`‐、\ |
ヽ、.三 ミニ、_ ___ _,. ‐'´//-─=====-、ヾ /ヽ
,.‐'´ `''‐- 、._ヽ /.i ∠,. -─;==:- 、ゝ‐;----// ヾ.、
[ |、! /' ̄r'bゝ}二. {`´ '´__ (_Y_),. |.r-'‐┬‐l l⌒ | }
゙l |`} ..:ヽ--゙‐´リ ̄ヽd、 ''''  ̄ ̄ |l !ニ! !⌒ //
. i.! l .::::: ソ;;:.. ヽ、._ _,ノ' ゞ)ノ./ 俺たちはとんでもない思い違いをしていたようだ。
` ー==--‐'´(__,. ..、  ̄ ̄ ̄ i/‐'/
i .:::ト、  ̄ ´ l、_/::|
! |: |
ヽ ー‐==:ニニニ⊃ !:: ト、
ヽ 、__,,.. /:;;: .!; \
ヽ ::::::::::: /:::;;:: /
,.ィ , - 、._ 、
. ,イ/ l/  ̄ ̄`ヽ!__
ト/ |' { `ヽ. ,ヘ
N│ ヽ. ` ヽ /ヽ / ∨
N.ヽ.ヽ、 , } l\/ `′
. ヽヽ.\ ,.ィイハ | _|
ヾニー __ _ -=_彡ソノ u_\ヽ、 | \ 「かいほう」というのは
.  ゙̄r=<‐モミ、ニr;==ェ;ュ<_ゞ-=7´ヽ > '解放' ではなく...
. l  ̄リーh ` ー‐‐' l‐''´冫)'./ ∠__ コネクションを
゙iー- イ'__ ヽ、..___ノ トr‐' / '開放' しっぱなしにしろ!!
l `___,.、 u ./│ /_ という意味だったのだよ!!
. ヽ. }z‐r--| / ト, | ,、
>、`ー-- ' ./ / |ヽ l/ ヽ ,ヘ
_,./| ヽ`ー--‐ _´.. ‐''´ ./ \、 \/ ヽ/
-‐ '''"  ̄ / :| ,ゝ=< / | `'''‐- 、.._
/ !./l;';';';';';';\ ./ │ _
_,> '´|l. ミ:ゝ、;';';_/,´\ ./|._ , --、 | i´!⌒!l r:,=i
. | |:.l. /';';';';';|= ヽ/:.| .|l⌒l lニ._ | ゙ー=':| |. L._」 ))
l. |:.:.l./';';';';';';'! /:.:.| i´|.ー‐' | / | |. ! l
. l. |:.:.:.!';';';';';';';'| /:.:.:.:!.|"'|. l' │-==:|. ! ==l ,. -‐;
l |:.:.:.:l;';';';';';';';| /:.:.:.:.:| i=!ー=;: l | l. | | / //
l |:.:.:.:.:l;';';';';';';'|/:.:.:.:.:.:.!│ l l、 :| | } _|,.{:: 7 ))
l |:.:.:.:.:.:l;';';';';'/:.:.:.:.:.:.:.:| |__,.ヽ、__,. ヽ._」 ー=:::レ' ::::::|; 7
. l |:.:.:.:.:.:.l;';';'/:.:.:.:.:.:.:.:.:.|. \:::::\::::: ヽ ::::::!′ :::| .:/
. l |:.:.:.:.:.:.:∨:.:.:.:.:.:.:.:.:.:.:.! /ヽ::: `::: :::: ....::..../
ナ ゝ ナ ゝ / 十_" ー;=‐ |! |!
cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・
,. -─- 、._ ,. -─v─- 、._ _
,. ‐'´ `‐、 __, ‐'´ ヽ, ‐''´~ `´ ̄`‐、
/ ヽ、_/)ノ ≦ ヽ‐'´ `‐、
/ / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ
i. /  ̄l 7 1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 i
,!ヘ. / ‐- 、._ u |/ l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 │
. |〃、!ミ: -─ゝ、 __ .l レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 l
!_ヒ; L(.:)_ `ー'"〈:)_,` / riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-'、
/`゙i u ´ ヽ ! !{ ,! ` ( } ' (:)〉 ´(.:)`i |//ニ !
_/:::::::! ,,..ゝ! ゙! ヽ ' .゙! 7  ̄ | トy'/
_,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 / !、 ‐=ニ⊃ /! `ヽ" u ;-‐i´
! \::::::::::::::ヽ `ー─ ' / ヽ ‐- / ヽ ` ̄二) /ヽト、
i、 \:::::::::::::::..、 ~" / ヽ.___,./ //ヽ、 ー
関連リンク