山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

実践で役立つ C#プログラミングのイディオム/定石&パターン その2

Chapter 2 C# でプログラムを書いてみよう

今回から2章について学びます。

距離計算プログラム

メートルとフィートとの単位変換のプログラムを作成する過程で、プログラムの分離について学びます。

インスタンスプロパティやインスタンスフィールドを利用していないメソッドは、静的メソッドにできることがポイントです。また、クラス全てがそうである場合、静的クラスにすることができます。

Visual Studioコマンドライン引数を渡す

f:id:yamakasa3:20190713170933p:plain
コマンドライン引数

Mainプログラム
namespace DistanceConventer
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length >= 1 && args[0] == "-tom")
            {
                PrintFeetToMeterList(1, 10);
            }
            else
            {
                PrintMeterToFeetList(1, 10);
            }
            
        }
        // フィートからメートルへの対応表を出力
        static void PrintFeetToMeterList(int start, int stop)
        {
            
            for (int feet = start; feet <= stop; feet++)
            {
                double meter = FeetConverter.ToMeter(feet);
                Console.WriteLine("{0} ft = {1:0.0000} m", feet, meter);
            }
        }

        // メートルからフィートへの対応表を出力
        static void PrintMeterToFeetList(int start, int stop)
        {

            for (int meter = 1; meter <= 10; meter++)
            {
                double feet = FeetConverter.FromMeter(meter);
                Console.WriteLine("{0} ft = {1:0.0000} ft", meter, feet);
            }
        }

    }
    
}
変換プログラム
namespace DistanceConventer
{
    
    // フィートとメートルの単位変換クラス
    public static class FeetConverter
    {
        private const double raito = 0.3048;
        // メートルからフィートを求める
        public static double FromMeter(double meter)
        {
            return meter / raito;
        }

        // フィートからメートルを求める
        public static double ToMeter(double feet)
        {
            return feet * raito;
        }
    }
}

感想

static にすべきクラスやメソッド、定数などについて学ぶことができました。プログラムを再利用するために、分離してまとめることを行いました。