1

У меня есть код консольного калькулятора, написан на C#, сделан в целях изучения. Не давно перешел на этот язык с Java, кружечка с кофе мне не подходила под интересы, программирую 2 года, но знаете, как-то все странно получалось, я скорее не старался понять язык, а изучил основы и дальше все на ходу доучивал, если кратко занимался разработкой чисто для релакса (хз как это, но это именно так) и неважно. В связи с тем, что я решил перейти на другой язык, мне показалось интересным начать именно изучать язык и понимать, как и что работает, а не писать говнокод. Я прошу у вас, программистов со стажем, посмотреть мой код и указать на ошибки или не логические действия, может где-то какую-то строку нужно убрать и заменить другой и т.п. В общем прошу, если не составит труда, направить меня на мои ошибки. Вот код:

namespace ConsoleApp1
{
    class Program
    {

        private static int A;
        private static int B;

        static void Main(string[] args)
        {
            StartProgramm();
            Close();
        }

        private static void StartProgramm()//полагает начало программы
        {
            MathGetNumber();
            MathOperation();
        }

        private static void MathGetNumber()//получаем число
        {
            string AT;
            string BT;

            Console.WriteLine("Первое число");
            AT = Console.ReadLine();
            Console.WriteLine("Второе число");
            BT = Console.ReadLine();

            try
            {
                A = Convert.ToInt32(AT);
                B = Convert.ToInt32(BT);
            }
            catch (FormatException)
            {
                Console.WriteLine("Не шали, вводи только числа!");
                StartProgramm();
            }

            for (byte i = 0; i < 4; i++)//это я решил сделать отступ в несколько строк
            {
                Console.WriteLine();
            }
        }

        private static void MathOperation()//производим операцию с числом
        {
            byte Operate;
            string Operation;

            if (A == 0 && B == 0)
            {
                Console.WriteLine("Числа имеют значение 0, продолжать работу программы нет смысла, завершение");
            }
            else
            {
                const byte Longe = 4;
                byte OperNum = 1;
                char[] NumUs = new char[Longe] { '+', '-', '*', ':' };
                Console.WriteLine("Числа имеют значение > или < 0, выберите желаемую операцию над числом");

                for (byte i = 0; i < Longe; i++)
                {
                    Console.WriteLine(OperNum + ") " + NumUs[i]);
                    OperNum++;
                }

                Operation = Console.ReadLine();

                try
                {
                    Operate = Convert.ToByte(Operation);

                    if (Operate <= 4)
                    {

                        switch (Operate)
                        {
                            case 1:
                                Console.WriteLine("Ваше число = " + (A + B));
                                break;
                            case 2:
                                Console.WriteLine("Ваше число = " + (A - B));
                                break;
                            case 3:
                                Console.WriteLine("Ваше число = " + (A * B));
                                break;
                            case 4:
                                Console.WriteLine("Ваше число = " + (A / B));
                                break;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Хватит шалить, вводи число от 1 до 4 включительно");
                        MathOperation();
                    }
                }
                catch (FormatException)
                {
                    Console.WriteLine("Хватит шалить, вводи число от 1 до 4 включительно");
                    MathOperation();
                }
            }
        }

        private static void ReturnProgramm()//повторение работы программы с самого начала, на случай если пользователь захочет еще раз посчитать число 
        {
                StartProgramm();
                Close();
            }
        }

        private static void Close()//завершение работы программы
        {
            string answer;

            Console.WriteLine("Close program? y/n");
            answer = Console.ReadLine();

            if (answer == "y")
            {
                return;
            }
            else if (answer == "n")
            {
                ReturnProgramm();
            }
            else
            {
                Close();
            }
        }

    }
}
Dya
  • 75
  • 1
    Недавно было что то подобное, там полноценно описали какие ошибки, как стоит поступать и так далее. Советую почитать. – EvgeniyZ May 22 '19 at 14:08
  • спасибо, ребят, обязательно все почитаю – Dya May 22 '19 at 14:24
  • Program пишется с одной буквой m. – Alexander Petrov May 23 '19 at 12:36
  • Попробуйте статический анализ. Откройте в Visual Studio свойства проекта. Вкладка Code Analysis. Чекните Enable Code Analysis on Build. Выберите в комбобоксе набор правил (ставьте сразу Microsoft All Rules). Скомпилируйте проект. Будет большущий список ошибок-предупреждений. Изучайте ;) – Alexander Petrov May 23 '19 at 12:39