C#コード仕様

7198 ワード

作成者:kkding
日期:2003-12-22
現行バージョン:V 0.5
バージョン番号
作成者
日付
承認日
ひょうしき
コメント
0.5
kkding
2003-12-22
C
注:C
-作成;
 M
-変更;  D
-削除;  A
-追加
目次
1     
目的
.... 3
2     
範囲
.... 3
3     
仕様内容
.... 3
3.1文書規範...3
3.1.1       
ファイル名
... 3
3.1.2       
ファイルの内容
... 3
3.2コードフォーマット...4
3.3コメント仕様...5
3.3.1       
モジュールアノテーション仕様
... 5
3.3.2       
クラス属性アノテーション仕様
... 6
3.3.3       
メソッドアノテーション仕様
... 6
3.3.4       
コード間アノテーション仕様
... 6
3.4変数(Variable)命名規範...6
3.4.1       
プログラムファイル(*.cs)の変数命名規則
... 6
3.4.2       
コントロール命名規則
... 8
3.4.3       
定数ネーミング仕様
... 9
3.4.4       
クラスネーミング仕様
... 9
3.4.5       
インタフェースネーミング仕様
... 10
3.4.6       
メソッド(Method)ネーミング仕様
... 10
3.4.7       
ネームスペース(NameSpace)ネーミング仕様
... 10
4     
推奨事項の実装
.... 10

1目的


企業が作成したプログラムが同じ規範に合致し、一致性、統一性を保証するために確立されたプログラム符号化規範.
コード仕様はプログラマーにとって特に重要であり、以下の理由があります.
-1つのソフトウェアのライフサイクルのうち、80%がメンテナンスに費やされています.
-ライフサイクル全体で最初の開発者によって維持されるソフトウェアはほとんどありません.
-コード仕様はソフトウェアの可読性を改善し、プログラマができるだけ早く新しいコードを徹底的に理解できるようにする.
-ソースコードを製品としてリリースする場合は、構築した他の製品と同様に、パッケージ化されているかどうかを確認する必要があります.
仕様を実行するためには、ソフトウェア開発者一人一人が符号化仕様を遵守する必要があります.一人一人.

2範囲


企業のすべてのC#ベースに適用する.NETプラットフォームのソフトウェア開発作業.

3規範内容


3.1文書規範


3.1.1ファイルの命名


クラス名と同じ名前

3.1.2文書内容フォーマット


最初のコメント
参照
ネーミングスペース
クラス
変数(エージェントイベント):region変数で...endregionは
属性:#region属性で......#endregionは
構築:
メソッド(イベントの実装):regionメソッドで......endregionは

3.2コードフォーマット


uすべてのインデントは4つのスペースであり、Tabの代わりにスペースである.チェックボックスをオンにします(
P)”
        
uコードに左かっこと右かっこを垂直に揃えます.
if(x==0)
              {
                   Response.Write(「ユーザー番号は入力する必要があります!」);
              }
           
次のことは許可されていません.
if(x==0) {
              
                   Response.Write(「ユーザー番号は入力する必要があります!」);
              }
または、
if(x=0){Response.Write(「ユーザー番号は入力する必要があります!」);}
uコードを読むときにソースエディタをスクロールしなければならないことを防止するために、各行のコードまたは注釈は1024*800の表示周波数で1つのディスプレイを超えてはならない.
u 1行が数行に分割されると、直列演算子を先頭ではなく各行の末尾に置くことで、後続の行がないことが不完全であることを明確に示す.
u各行に配置された文が1つを超えないようにする.
uほとんどの演算子の前後にスペースを使用すると、コードの意図は変わりませんが、コードを読みやすくすることができます.
例:
        int j = i + k;
と書くべきではありません
    int j=i+k;
u大きな複雑なコード節を、より小さく、理解しやすいモジュールに分ける.
u SQL文を作成する場合、キーワードにはすべて大文字、データベース要素(表、列、ビューなど)には大文字と小文字のブレンドを使用します.
u主要なSQL句ごとに異なる行に配置することで、文の読み取りと編集が容易になります.たとえば、SELECT FirstName、LastNameなどです.
                             FROM Customers
                WHERE State = 'WA'

3.3注釈(Comment)規範


アノテーション仕様には、モジュール(クラス)アノテーション仕様、クラスのプロパティ、メソッドアノテーション仕様、コード間アノテーションが含まれます.

3.3.1モジュール(クラス)注釈仕様


モジュールの最初には、モジュールのコメントを次の形式で書く必要があります.
///
///○○クラスの定義方法
///
//作者
///[email protected]
///2003-12-17
モジュールに変更がある場合は、変更ごとに次のコメントを追加する必要があります.
////備考バージョン修正情報、それらを修正し、時間、毎回順次remarkを追加

3.3.2クラス属性注釈仕様


クラスの属性には、次の形式で属性コメントを記述する必要があります.
         ///
////属性説明
///

3.3.3方法注釈規範


クラスのメソッド宣言の前に、次の形式でコメントを記述する必要があります.
         ///
//説明:
         ///
         ///
              ////
///

3.3.4コード間注釈仕様


コード間のコメントは、1行のコメントと複数行のコメントに分けられます.
1行コメント:
//
複数行コメント:
/*複数行コメント1
複数行コメント2
複数行コメント3*/
コードで文ブロックに遭遇した場合はコメント(if,for,foreach,......)を追加し、追加したコメントはこの文ブロックの役割と実現手段(使用アルゴリズムなど)を説明できる必要があります.

3.4変数(Variable)命名規範


3.4.1プログラムファイル(*.cs)における変数命名規則


       
プログラム内の変数名=変数の接頭辞+変数の意味を表す英語の単語または単語の略語.
1.クラスモジュールレベルの変数タイプの略接頭辞
public class hello
{
        private string
s_Name;
        private DateTime
dt_Date;
}
2.クラスの属性に対応する変数は、属性名とタイプの略を接頭辞として用いる
public class hello
{
        private string
s_Name;
        public string Name
        {
               get
{
        return
m_Name;
}
}
}
3.プロシージャ・レベルの変数は接頭辞を使用しません
public class hello
{
        void say()
        {
               string
SayWord;
}
}
4.プロセスのパラメータは「p_」を使用するパラメータとして
        public class hello
        {
               void say(string
p_SayWord)
               {
               }
        }
補足:
例外取得中のException変数に対して名前を付け、衝突がない場合はeと統一する.
衝突がある場合は、e、例えばeeを繰り返すことができます.
Try
{
        //your code
        try
{
       //code
}
catch(Exception
ee)
{
       //your code
}
}
catch(Exception
e)
{
        //your code
}
補足:例外を取得しても処理する必要がない場合は、Exceptionインスタンスを定義する必要はありません.
例:
try
{
        //your code
}
catch( Exception )
{
}
5.ほとんどの名前はいくつかの単語を接続することによって構成されているので、大文字と小文字の混合フォーマットを使用して、それらの読み取りを簡略化してください.各単語の最初のアルファベットは大文字です.
6.いくつかのコード行にのみ現れる可能性のある生存期間が短い変数であっても、意味のある名前が使用されます.短いループインデックスに対してのみ、iまたはjなどのアルファベット変数名が使用されます.
7.min/max、begin/end、open/closeなどの変数名に相補的なペアを使用します.
8.for(i=1,i<7;i++)などの原義数字や原義文字列は使用しないでください.代わりに、for(i=1、i

3.4.2コントロール命名規則


コントロール名
=Webコントロールのプレフィックス+「」+変数名
ツールバーの
略語
Label
lbl
TextBox
txt
CheckBox
chk
Button
cmd
ListBox
lst
DropDownList
drp
など

3.4.3定数命名規範


定数名にも一定の意味があるはずです.フォーマットは
NOUNまたは
NOUN_VERB.定数名はすべて大文字で、字の間は下線で区切られています.
例:
        private const bool   WEB_ENABLEPAGECACHE_DEFAULT           = true;
        private const int    WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
        private const bool   WEB_ENABLESSL_DEFAULT                 = false;
注意:
変数名と定数名には255文字まで含めることができますが、25~30文字を超える名前は不器用です.また、実際の意味のある名前を付け、変数や定数を明確に表現するためには、25文字または30文字で十分である必要があります.

3.4.4クラス(Class)命名規範


1.名前は物事の特性を表すことができるはずです.
2.名前はよく知られていない限り、略語は使用しないでください.
3.名前は2つまたは3つの単語で構成できますが、通常は3つ以上ではありません.
4.名前の中で、すべての単語の最初のアルファベットは大文字で、略語は大文字でなければなりません.
例えばIssSuperUserは,IDを含むものであり,IDはすべて大文字,例えばCustomerIDである.
5.名詞または名詞句を使用してクラスを命名します.
6.略語は使わない.
7.アンダースコア文字()は使用しないでください.
例:
public class FileStream
public class Button
public class String
 
 

3.4.5インタフェース(Interface)命名規範


クラスネーミング仕様と同様に、インタフェースに名前の前に「I」接頭辞を付けるのが唯一の違いです.
例:
       interface IDBCommand;
       interface IButton;

3.4.6メソッド(Method)ネーミング仕様


クラスネーミング仕様と同じです.
また、方法の冒頭にできるだけe文動詞で表すようにします.
例:GetMoney,SetMoney

3.4.7ネーミングスペース(NameSpace)ネーミング仕様


クラスネーミング仕様と同じです.

4実施提案


lまず符号化人員に対して「特別テーマ」訓練を行い、彼らにこの符号化規則を掌握させる.
lシステム設計者、コード人員、テスト人員は比較的に良い提案ができて、適切に《C#コード規範》を修正して完備することができる.
l本書の修正を記録し、バージョン番号を変更する.