コーディング規約とは?コーディングの意味と目的・コーディングスタイルに関する内容
コーディング規約とは
多くのプログラミング言語の表現にはある程度自由度があります。C#も自由度があります。
しかしながらその自由度を制約する決まりごとがあります。それがコーディング規約と呼ばれるものです。企業やプロジェクト単位で設けられるもの、企業や団体などが公開し、推奨するものなどがあります。
コーディング規約の意味
コーディング規約が存在することには意味があります。プログラミングの効率を上げるためです。
規制しすぎてもかえって効率が下がってしまうこともあります。つまり、バランスが必要となります。その為には、コーディング規約の目的を認識する必要があります。
次項でコーディング規約の目的を具体的に解説します。
コーディング規約の目的
プログラムとはコンピューターにさせたいことをプログラミング言語で記述したもののことです。プログラムが記述されたテキストファイルのことをソースコードといいます。
同じ内容のソースコードでも表現に幅をもたせることが許されています。改行やスペースやタブ文字の数など体裁を整えるためであったり、変数の文字種・文字数など、機能的な制限が起きないようにしたり、可読性を上げる、即ち読みやすくするためであったりします。
同じ実行結果が、異なるプログラムで実現されることも多々あります。異なる実行順で同じ結果になるケースや、異なるアルゴリズム、即ち異なる処理の組み合わせ・処理の構造などで同じ結果になるケースなどがあります。
ソースコードの表現に幅があることは、プログラマーにとってメリットですが、デメリットにもなり得ます。
プログラムのサイズが大きくなったり、古いプログラムを見直すことになったりした時、プログラミングをした時の記憶が薄れている分、解釈の手がかりが少なくなるため時間がかかります。
複数プログラマーによるプロジェクトの場合、短いプログラムであっても、それぞれのプログラマーがそれぞれの流儀でソースコードを書くと、プログラムの意図が読みにくくなり、解釈が困難になります。
一定の条件で同じ実行結果でも、選択するアルゴリズムや実行順の違いだけで、特定の条件での不具合の起こりやすさや修正のしやすさ、即ち保守性や、前述の可読性にも影響があります。
表現に一定の規則性や規準があれば、それらのデメリットを軽減できます。その為の決まり事がコーディング規約です。プログラミング作法、コーディング標準、コーディング規則などとも呼ばれます。
C#のコーディング規約
プログラムがネット上でオープンソースとして公開されることも多くなり、各プログラム言語のコーディング規約がメーカーや団体により公開されています。
C#では、「C#のコーディング規則」としてC#の統合環境を提供しているMicrosoftが公開している物がありますので、それを元に、C#のコーディング規約の要点として解説します。
「C#のコーディング規則」における目的
Microsoftが公開している「C#のコーディング規則」についてはコードを読む時に内容に重点を置けること、コードの迅速な理解、コピーや変更や保守が容易になること、ベストプラクティスがわかることを挙げています。
コードを読む時に内容に重点を置ける理由には、見た目の統一性を挙げています。つまり、レイアウトに惑わされずに読むことに集中できることになります。また、一定の様式が定まっていれば、書く時もレイアウトを考える負担が減るので利点になります。
コピーや変更や保守に関しては、既に述べた、保守性や可読性と同様な話です。
ベストプラクティスがわかるとは、つまり、C#を習得するにあたって最適な方法がわかるということです。実際、C#の機能の解説に相当する内容も含まれています。
ここでは保守性や可読性に関わるコーディングスタイルに関する内容について解説します。
C#のコーディングスタイルに関する内容
レイアウト規則、コメント規則が相当します。
レイアウト規則は、インデントとタブの設定、ステートメントと宣言の記述、メソッド定義やプロパティ定義の記述、複雑な条件式の作成時におけるかっこの使用が書かれています。
スマートインデント、4文字インデント、タブを空白文字として保存する設定やステートメントと宣言は1行で記述する、メソッド・プロパティ定義の間は1行あける、式の処理を明確化するためかっこを活用するなどの、いずれも基本的な内容です。
スマートインデントに関しては、一定の入力手順を想定した自動整形機能ですが、肝心なのは統一されたレイアウトとなるように入力することですので、効率に寄与する場合に使用する事になります。
他のインデックス設定に関しても、企業におけるプロジェクトであったり、過去の資産を生かした開発であったりする場合、デフォルトから変更すべきケースも考えられます。
コメント規則については、コードと別の行に記述する、テキストは大文字で開始しピリオドで終了する、「//」とコメントテキストの間に空白を挿入するとして、これも基本的な内容ですが、明確化されています。アスタリスク整形を使用しないように書かれています。
複数行に渡って使用するとコード部分と明確な区別がつきにくくなることを防げる上、「//」を使用したコメント行で統一できます。
1
2
3
4
5
6
7
8
9
10
11
12
|
〇
Console.WriteLine("Hello.");
// Output message.
×
Console.WriteLine("Hello."); // Output message.
×
/* Comment out.
Console.WriteLine("Hello.");
*/
|
C#の命名規則
その他コーディングにおける表現の統一性で重要なのは、関数や変数の命名規則です。特に明確に読みやすさに影響する内容は大文字小文字の問題です。多くの場合、コーディング規約で規定されます。
Microsoftの「C#」のコーディング規則には記載されていませんが、.NETのドキュメントに「大文字の使用規則」として記載されています。
大文字に関して命名規則にはCamel方式とPascal方式があります。
Camel方式は次のように、最初の単語のみ小文字で記述し、それ以降は大文字で書きます。名前の最初に付く頭文字は「io」などのようにすべて小文字で書きます。
1
2
3
|
defaultFunction
testCounter
ioStrings
|
Pascal方式は次のように、各単語の最初の文字を大文字で書きます。名前の最初に付く頭文字は全て大文字で書きます。
1
2
3
|
DefaultFunction
TestCounter
IOStrings
|
注意すべき点は複合語の扱いにあります。複数の単語を組み合わせた複合語は、両方式共に一つの単語として扱います。
1
2
3
|
Camel方式 / Pascal方式
filenameCheck / FilenameCheck
logonFlag / LogonFlag
|
C#では変数や関数・メソッド定義のパラメーターはCamel方式で記述し、関数の名前はPascal方式で記述します。
1
|
private int TestFunction(int testData, int inputData)
|
C#のコーディング規約の目的を意識してプログラムの品質を上げよう
C#のコーディング規約の目的と、コーディング規約の例について解説しました。
コーディング規約は読みやすく、修正しやすく、不具合の起こりにくいソースコードを作ることが目的で、プログラムするにあたっても、規約によってレイアウトなど形上の部分でなく、プログラムの内容に集中して開発が出来ます。それがソースコードの品質を上げることに繋がります。
コーディング規約の目的を把握し、意識してプログラミングに活かしていきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)