Пользователь ввел валидацию значения и уровень обнаружения ошибок - PullRequest
0 голосов
/ 20 мая 2010

Могу ли я спросить, должен ли код перехвата ошибок быть размещен на самом низком уровне или на самом верху, поскольку я не уверен, что является лучшим методом? Я предпочитаю размещать внизу, например, как

Пример а

   public static void Main(string[] args)
    {
        string operation = args[0];
        int value = Convert.ToInt32(args[1]);
        if (operation == "date")
        {
            DoDate(value);
        }
        else if (operation == "month")
        {
            DoMonth(value);
        }
    }
    public static void DoMonth(int month)
    {
        if (month < 1 || month > 12)
        {
            throw new Exception("");
        }
    }
    public static void DoDate(int date)
    {
        if (date < 1 || date > 31)
        {
            throw new Exception("");
        }
    }

или пример b

   public static void Main(string[] args)
    {
        string operation = args[0];
        int value = Convert.ToInt32(args[1]);
        if (operation == "date" && (date < 1 || date > 12))
        {
            throw new Exception("");
        }
        else if (operation == "month" && (month < 1 || month > 31))
        {
            throw new Exception("");
        }
        if (operation == "date")
        {
            DoDate(value);
        }
        else if (operation == "month")
        {
            DoMonth(value);
        }
    }
    public static void DoMonth(int month)
    {
    }
    public static void DoDate(int date)
    {
    }

Ответы [ 2 ]

0 голосов
/ 20 мая 2010

Это зависит. Техническая проверка ввода должна быть сделана перед использованием метода потребления. Техническая проверка означает такие вещи, как: Достаточно ли параметров? Возможно: у них есть правильный "тип"?

Проверка информации должна выполняться непосредственно перед интерпретацией ввода. Таким образом, вы соответствуете принципам ОО.

0 голосов
/ 20 мая 2010

есть концепция, которая поможет вам понять последствия каждого вашего примера

разделение интересов

http://en.wikipedia.org/wiki/Separation_of_concerns

...