コードを書くコツ

2021年3月7日

同じ目的でプログラミングをするにしても、どのような書き方が推奨されているのか?同じように書いても動作するが、果たしてこれがいいのか?見やすいのだろうか?そのような疑問が出てくると思います。ここでは、主なコード作成の定石、セオリーを見てみましょう。

C#の基本

変数

変数の初期化

変数は、変数の宣言と初期化の間に別のコードが入ることを防ぐため、また、見やすくするために宣言と同時に初期化するようにしましょう。

正しい例

var hp = 100;

varは、型推論です。100が代入されているため、int型であることがわかります。その場合、コンパイラが判断できますので、varと書くことができます。宣言としては、int hp = 100;と全く同じになります。

△推奨されない例

int hp;
hp = 100;

2つのステートメントの間に別のコードが入り込む余地があります。
その場合、コード全体の見通しが悪くなることがあります。

数値に1を足す

1を加える場合、++演算子を使うようにしましょう。

正しい例

hp++;

△推奨されない例

hp += 1;

宣言と代入の間に他のコードが入ると読みづらくなります。

制御構文

条件分岐

変数とリテラルの比較

比較する変数は、条件式の左側に書きます。

正しい例

if (hp <= 100)

「hpが100以下になった場合」と解釈できます。
人が読みやすいステートメントです。

×悪い例

if (100 >= hp)

「100はhpより大きい」と読まなくてはならず、分かりづらい

bool値での比較 (trueの場合)

bool値は、比較のための条件式が省略できます。

正しい例

if (isRun)

×悪い例

if (isRun == true)

bool値での比較 (falseの場合)

正しい例

if (!isRun)

×悪い例

if ( isRun == false)

修飾子の記述順序(構文規則としては自由ですが、統一した方がいいです)

ReSharperサンプル(JetBrains社がリリースしているVisualStudio用の拡張機能) 

上ほど、先に記述します。
例えば、修飾子にstaticと publicが付く場合、 public の方が上位になっていますので、public static となります。

// アクセス修飾子 
{ public / protected / internal / private / protected internal }
new
// 継承修飾子
 { abstract / virtual / override } 
 sealed
 static
 readonly
 extern
 unsafe
 volatile
 async

記述サンプル

推奨される例

public static void MyMethod()
{
}

×推奨されない例

static public void MyMethod()
{
}

コードをシンプルにする

using staticで、省略

using static を宣言すると、クラス変数やクラスメソッドのアクセスで、クラス名.を省略することができます。

静的クラス(static クラス)の場合

使用する例

using static Console;

class Program
{
    static void Main(string[] args)
    {
        WriteLine("Hello World");
    }
}

×使用しない例

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World");
    }
}

列挙型の場合

使用する例

using static MyColor;

enum MyColor
{
    Red,
    Blue,
}

class Program
{
    static void Main(string[] args)
    {
        MyColor myColor = Red;

        switch (myColor)
        {
            case Red:
                Console.WriteLine("赤色です");
                break;
            case Blue:
                Console.WriteLine("赤色です");
                break;
            default:
                break;
        }

        Console.WriteLine(Red);
        Console.WriteLine((int)Red);
    }
}

×使用しない

enum MyColor
{
    Red,
    Blue,
}

class Program
{
    static void Main(string[] args)
    {
        MyColor myColor = MyColor.Red;

        switch (myColor)
        {
            case MyColor.Red:
                Console.WriteLine("赤色です");
                break;
            case MyColor.Blue:
                Console.WriteLine("赤色です");
                break;
            default:
                break;
        }

        Console.WriteLine(MyColor.Red);
        Console.WriteLine((int)MyColor.Red);
    }
}

ほど、先に記述します。
例えば、修飾子にstaticと publicが付く場合、 public の方が上位になっていますので、public static となります。

C#,入門

Posted by hidepon