アットウィキロゴ

コーディング規約

更新日:2009-04-08

目的

既存ソースのリファクタリングを行うことで、見栄えのよいソースにし、メンテナンス性を向上させる。
また、コーディング規約のような注意事項を設けることで複数の方が開発する場合でもコーディングの
ずれが少なくなる。新規で開発する場合も以下の事を踏まえて作成する規約とする

注意事項


1) リファクタリングと高速化の因果関係はありません。ただ、遅延している箇所が特定しやすくなります。

2) 機能追加とリファクタリングは同時に行うことを禁止します。リファクタリング期間を設けて実施すべきである。

3) なるべく、リファクタリングツール等を利用し、機械的にリファクタリングを行う。

4)リファクタリング時はコメントアウト/解除を行うことが多いのでキー操作で行う。

コメントアウト Ctrl + E + C
コメント解除  Ctrl + E + U

リファクタリングツール(無償)




コード変換ツール( VB ⇔ C# )



DBアクセス関連の速度UP


1)SQL文を格納する記述がある場合 String型より、StringBuilder型に格納する

2)WHERE句の記述順序 絞り込める量が多い、条件の厳しいものから先に行う ⇒ 高速UP

3)HAVING句は極力利用しない

4)単純なSQL文でもテーブル別名を付加する

×SELECT id, name FROM user WHERE active=1
○SELECT u.id, u.name FROM user u WHERE u.active=1

5)1つのテーブルにデータが大量になる場合はテーブルを分ける

6)Fromはレコード数が多い順に並べる

×FROM jusho j, user u
○FROM user u, jusho j

7)BETWEEN句は使えたら使う

8)COUNT(*)よりCOUNT(id)を使う

9)なるべく*は使わない。行を指定した方が速い

×SELECT * FROM SomeTable;
○SELECT id FROM SomeTable;

記述の工夫での高速UP

1) Withブロックを使う

旧)
Button1.Text = "Withですか?"
Button1.BackColor = Color.LightBlue
Button1.TextAlign = ContentAlignment.MiddleRight

新)
With Button1
.Text = "Withですか?"
.BackColor = Color.LightBlue
.TextAlign = ContentAlignment.MiddleRight
End With

命名規則


1) 変数名にプレフィックスをつける

変換
int i
string s
bool b
double d
list lst
Combo cmb
Form frm
Label lbl
textBox txt
CheckBox chk
メンバ m_

2) 変数名のつけ方

省略前 省略後 意味
message msg メッセージ
directory dir ディレクトリ
error err エラー
delete del 削除
count cnt カウント
format fmt フォーマット
flag flg フラグ

アクセシビリティを意識する


Public 同じプロジェクト、他のプロジェクトからのアクセス可能
Proteted 同じクラス、派生クラスからのアクセスのみ可能
Friend 同じプロジェクトからのアクセスのみ可能
Private 同じクラスからのみアクセス可能

ArrayならHashtableを使用する


インデックス指定だけならArrayかArrayListを使うのが最適だが
キーと値を関連付けたいならHashtableが便利だ。また高速でもある。

速度比較)

16個のアイテムから全アイテムを検索するを1万回ループ
Ayyay:94ms Hashtable:172ms

256個のアイテムから全アイテムを検索すると1万回ループ
Ayyay:10469ms Hashtable:2906ms

HashtableならDictionaryを使用する

.NET Framework 2.0ではDictionaryジェネリック・クラス
(System.Collections.Generic名前空間)
が追加され、より効率的かつ安全にハッシュテーブルを扱えるようになっている

1000000個のアイテム取得
Hashtable:15ms
Dicitionary:3ms

全角/半角の変換はStrconvを使用する


Replace関数は文字に依存してしまうのでStrConvが便利

× sText = sText.Replace("'","’")
○ sText = StrConv(sText,VbStrConv.Wide)

Debug.Printは残さない


速度に影響するので残さない。

変数の初期化と宣言は同時に行う


×Dim sSayHello As String
sSayHello = "Hello World"

○Dim sSayHello As String = "Hello World"

判定の書き方


1)空文字判定
IF text Is Stringempty Then

End IF

2)Nothing判定
IF IsNothing(text) = True Then

End IF

3)空文字でない判定
IF text IsNot StringEmpty

End IF

データの存在確認メソッドはBoolean型を使用する


×戻り値をString型で「データ有」などの文字列にしない
○戻り値はTrue/Falseを利用する

長いメソッドや記述は改行する


Private Function test(ByVal s As String _
ByVal m As String)

String同士の比較はEquals()メソッドを使用する


×If sText = "?" Then
○If sText.equals("?") Then
最終更新:2009年04月08日 16:59