じゃんぬねっと日誌

ネタと雑記と時々プログラミング

目次

Blog 利用状況

ニュース

不況すぎる件。

スポンサードリンク

運営サイト

  • C# と VB.NET の入門サイト

書庫

コーディング奇約 #02 -動きを理解して決めていますか?-

某社のコーディング規約 (コーディング標準) にて、

某社のコーディング規約 (コーディング標準) から引用

ローカル変数の宣言は必ず先頭にすること。そしてそれらの変数は必ず最後に開放処理をすること。

宣言位置は譲るとして後半のは何が言いたいんですか? 「開放」...? ひょっとして「解放」のコトですか?

実際に業務で使っていると言われているコードから例を提示して貰いました。

某社が実際に業務で使っているコード例

Private Sub Test()
    Dim DB  As ADODB.Connection
    Dim Rec As New Recordset

        : (このあたりに処理)

        : (ここに Close メソッドはない)

    Set Rec = Nothing
    Set DB = Nothing
End Sub

ローカル変数なだけに意味がないですよね。プロシージャを抜けた段階で同じことがなされる (参照の解放がされ Terminate される) わけです。せめてこれが最後でなければ、解放時期が早まるのでまったく無意味だと言いませんが、必ず最後と言うのだから無意味なことこの上ないです。

とにもかくにも正しい解放についての理解が足らなさすぎます。こんな「無意味」なことをするくらいなら、使わなくなった時点で一刻も早く Close メソッドを呼んであげてください。突っ込みたいのに突っ込めない。これ以上突っ込むのを我慢させないでください。もうやめてあげて!! じゃんぬのライフポイントはゼロよ!!

関連リンク

投稿日時 : 2007年9月10日 10:18

コメントを追加

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 10:39 Mr.T

Mr.Tです、こんにちは。

>じゃんぬのライフポイントはゼロよ!!
加算でオーバーフローして、逆に最大値までLifePointが戻ってしまったりw

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 11:13 凪瀬

-127を超えるとよみがえるかも。

目的のための誤った手段がルール化されて、
さらに手段だけが残って目的が忘れられる、
というコンボですかねぇ。

理解に相応の自信がないと「それは違う!」とは言いにくいですし。
ルール改正には相応の労力が必要ですし。
短期ヘルプでコード書くだけの立場だったらスルーしようかとも思うな。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 11:15 まさぶん

イロエロあると思いますが
先のことを考えると
突っ込むほうがいいのでは?

#半角カナのコメントも含めて

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 11:30 キヨ

>必ず最後に開放処理をすること。

必ずOpenメソッドを呼べということでしょうかw


もしかしたら、その規約ができた当時は、メソッドが終わってもメモリ領域を開放しないシステムが主流だったとか・・・
あくまで推測ですけれど。。。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 12:02 未記入

じゃんぬさん面白ネタ有難う。
このシリーズむっちゃ面白いです。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 13:22 れい

>>必ず最後に開放処理をすること。
>必ずOpenメソッドを呼べということでしょうかw

私もそう思いました。

>もしかしたら、その規約ができた当時は、メソッドが終わってもメモリ領域を開放しないシステムが主流だったとか・・・

いつですかそれ…
「ローカル変数」が無い時代なんて。

といか、みんな知ってるから笑えるけど、こういった規約で作られたシステムを知らず知らず使ってるかと思うと怖くて怖くて。
ホラーに近い。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 13:23 れい

>ローカル変数

これ、半角カナであるところからすると、前と同じ会社ですか?

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 13:44 じゃんぬねっと

ハイ オナジ カイシャ デス。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 13:45 じゃんぬねっと

ちなみに最初にある Rec の As New も突っ込むべき内容であります。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 14:13 επιστημη

僕のスタイルと真逆ッス...
「スコープは極力狭く! 欲しくなったとこで作り、要らんくなったらすぐ捨てよ!」

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 14:16 じゃんぬねっと

>えぴさん
ええ、それがフツーなんですよ。
私はそう思っております。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 17:42 名無し

>「スコープは極力狭く! 欲しくなったとこで作り、要らんくなったらすぐ捨てよ!」
を理由付きで提唱したら意味がわからんから却下と言われた・・・orz
それでも無視して使ってみたらソース読みづらいから書き直せと言われた・・・orz

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 18:18 じゃんぬねっと

あるあるwww
それどころかバグの温床になるとまでケチを付けられたこともあります。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 18:53 倉田 有大

>>「スコープは極力狭く! 欲しくなったとこで作り、要らんくなったらすぐ捨てよ!」

いや、当然でしょう。これしないと、変数のスコープがぐちゃぐちゃに・・

>を理由付きで提唱したら意味がわからんから却下と言われた・・・orz

ぐはw

>それどころかバグの温床になるとまでケチを付けられたこともあります。


逆逆w
その方は、ひょっとして変数すべて、グローバル変数で
つかってたりして。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 20:40 frontline

「どこでも利用できて開発効率がいい」とか「再利用して無駄をなくす」とか平気で言いそうな人とか居ますから、実際>グローバル。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 20:49 未記入

そうそう。グローバルをやたら使う人いるよね。
でもあれってマルチスレッドどうするんだろうねwww

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 21:35 oyama

マルチスレッドできない人がやってることだからいいんです(違)

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/10 22:59 じゃんぬねっと

> 「どこでも利用できて開発効率がいい」とか「再利用して無駄をなくす」とか平気で言いそうな人とか居ますから

ビンゴです。もう涙で Display が見えません。

「なんで As New しなきゃいけないんだ。めんどくせー!!」
「標準モジュールに何でもかんでも詰め込んできれいにしよう!!」

なんてことも言われたことがあります。

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/11 8:51 れい

> 「再利用して無駄をなくす」

確かにループ内部でいちいち変数初期化してると遅くなりますが。
そんな欠点を補って余るほどの利点があるので、敢えてループ内部に入れたりしますよね。

オブジェクト指向ってなかなか浸透しないなぁと思ってたら構造化プログラミングすら理解されてない。

原因は何でしょう?
アセンブラで組んでいた時代とかを引きずっているのかな?
それともなにか根本的な勘違いをしているのかな?

# re: コーディング奇約 #02 -動きを理解して決めていますか?- 2007/09/11 10:29 未記入

>原因は何でしょう?

多分技術者本人と経営陣の不勉強がまかり通る事でしょう。
この業界の一山幾らのやり方が、技術者一人一人のやる気やを奪います。それに、経営陣が何も知らないのなら、勉強しない方が特になりますしね・・・
日本は無能な経営者と怠惰な技術者の方が得をするのです。

# コーディング奇約 #03 -知らないから禁ずるのだよ!!- 2007/09/11 13:47 じゃんぬねっと日誌

コーディング奇約 #03 -知らないから禁ずるのだよ!!-

# コーディング奇約ではないけど例の会社 2007/09/13 10:30 じゃんぬねっと日誌

コーディング奇約ではないけど例の会社

タイトル  
名前  
URL
コメント