Как я могу рефакторинг этой части моего приложения для Windows Phone - PullRequest
1 голос
/ 01 декабря 2011

Я не очень знаком с рефакторингом, но мне кажется, что мне нужно внести некоторые изменения в этот код ...У меня есть 4 кнопки в моем приложении.Каждый из них вызывает метод, который получает данные из онлайн-XML и использует эти данные для заполнения списка.
Я повторял код для всех этих методов, хотя иногда вижу, что они различаются.Вот небольшое объяснение моей логики:
Кнопки btnA_Click и btnB_Click получают те же данные, но с разных лет.То же самое касается других 2 кнопок.Они получают те же данные (не такие, как btnA и btnB), но и из разных лет.

Кнопки:

private void btnA_Click(object sender, RoutedEventArgs e)
    {
        string webService = @"xml from the web";
        table.OpenReadAsync(new Uri(webService));
        btnA.IsEnabled = false;
        btnB.IsEnabled = false;
        progressBar1.Visibility = System.Windows.Visibility.Visible;
    }

private void btnB_Click(object sender, RoutedEventArgs e)
    {
        string webService = @"xml from the net";
        table.OpenReadAsync(new Uri(webService));
        btnA.IsEnabled = false;
        btnB.IsEnabled = false;
        progressBar1.Visibility = System.Windows.Visibility.Visible;
    }

private void btnSTA_Click(object sender, RoutedEventArgs e)
    {
        string webService = @"xml from the web;
        stats.OpenReadAsync(new Uri(webService));
        btnSTA.IsEnabled = false;
        btnSTB.IsEnabled = false;
        progressBar3.Visibility = System.Windows.Visibility.Visible;
    }

private void btnSTB_Click(object sender, RoutedEventArgs e)
    {
        string webService = @"xml from the web;
        stats.OpenReadAsync(new Uri(webService));
        btnSTA.IsEnabled = false;
        btnSTB.IsEnabled = false;
        progressBar3.Visibility = System.Windows.Visibility.Visible;
    }

Методы:

void table_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error == null && !e.Cancelled)
        {
            XElement xml = XElement.Load(e.Result);
            var table = LINQ Statement...
            listBox1.ItemsSource = table;
            btnClassificacaoSerieA.IsEnabled = true;
            btnClassificacaoSerieB.IsEnabled = true;
            progressBar1.Visibility = System.Windows.Visibility.Collapsed;
        }
    }

void stats_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error == null && !e.Cancelled)
        {
            XElement xml = XElement.Load(e.Result);
            var stats = LINQ Statement...
            listBox3.ItemsSource = stats;
            btnSTA.IsEnabled = true;
            btnSTB.IsEnabled = true;
            progressBar3.Visibility = System.Windows.Visibility.Collapsed;
        }
    }

Я немного растерялся здесь.Что я мог сделать, чтобы сделать этот код более объектно-ориентированным?Thx!

1 Ответ

0 голосов
/ 01 декабря 2011

Ваши события клика в основном одинаковы ... Создайте подпрограмму, которая выполняет эту функцию, и вызовите подпрограмму из события щелчка. Посмотрите, можете ли вы указать какие-либо различия в параметрах.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...