Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 2

Как сделать рефакторинг

23.04.2017, 21:28. Показов 1293. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как сделать рефакторинг? помогите пожалуйста, очень прошу

Customer.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Rifactoring
{
    class Customer
    {
        private string name = null;
        private List<Rental> rentals = new List<Rental>();
 
        public Customer(string name) 
        {
            this.name = name;
        }
 
        public string Statement() 
        {
            double totalAmount = 0;
            int frequentRenterPoints = 0;
            string result = string.Format("Учет аренды для {0}:", name);
 
            foreach (Rental rental in rentals) 
            {
                double thisAmount = 0;
                switch (rental.Movie.PriceCode) 
                {
                    case Movie.Regular:
                        thisAmount += 2;
                        if (rental.DaysRented > 2)
                            thisAmount += (rental.DaysRented - 2) * 1.5;
                        break;
 
                    case Movie.New_Release:
                        thisAmount += rental.DaysRented * 3;
                        break;
 
                    case Movie.Childrens:
                        if (rental.DaysRented > 3)
                            thisAmount += (rental.DaysRented - 3) * 1.5;
                        break;
                }
 
                frequentRenterPoints++;
                if ((rental.Movie.PriceCode == Movie.New_Release) && (rental.DaysRented>1))
                    frequentRenterPoints++;
 
                result += "\t" + rental.Movie.Title + "\t" + thisAmount;
                totalAmount += thisAmount;
            }
 
 
            result += "Сумма составляет" + totalAmount + "\n";
            result += "Вы заработали" + frequentRenterPoints + "очков за активность";
            return result;
        }
 
        //Свойства
        public Rental Rentals
        {
            set { this.rentals.Add(value); }
        }
 
        public string Name
        {
            get { return this.name; }
        }
    }
}
Movie.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Rifactoring
{
    class Movie
    {
        public const int Childrens = 2;
        public const int Regular = 0;
        public const int New_Release = 1;
 
        private string title = null;
        private int priceCode = 0;
 
        public Movie(String title, int priceCode) 
        {
            this.title = title;
            this.priceCode = priceCode;
        }
 
        //свойства
        public int PriceCode
        {
            get {return this.priceCode;}
            set { this.priceCode = value;}
        }
 
       
        public string Title 
        {
            get { return this.title; }
        }
    
    }
}
Program.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Rifactoring
{
    class Program
    {
        static void Main()
        {
            Customer customer = new Customer("Alex");
            Movie movie = new Movie("Matrix", 1);
            Rental rental = new Rental(movie, 2);
 
            customer.Rentals = rental;
            Console.WriteLine(customer.Statement());
 
            Console.ReadKey();
 
        }
    }
}
Rental.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Rifactoring
{
    class Rental
    {
        private Movie movie = null;
        private int daysRented = 0;
 
        public Rental(Movie movie, int daysRented) 
        {
            this.movie = movie;
            this.daysRented = daysRented;
        }
 
        public int DaysRented 
        {
            get { return daysRented; }
        }
 
        public Movie Movie 
        {
            get { return movie; }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2017, 21:28
Ответы с готовыми решениями:

Рефакторинг
собственно есть два(пока что) таких кусочка кода public class MainFormController { //... public bool ValidateParameterValue(string...

Рефакторинг кода
Всем известно, что методы должны содержать 5-7 операторов, лучше 3. Но если я в методе обрабатываю исключения и их много (5 к примеру), то...

Рефакторинг кода
Вообщем изучаю в C# методы и массивы (практикуюсь). Программировать, то есть писать программный код правильно толком не умею, не знаю как...

3
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,307
24.04.2017, 06:31
Цитата Сообщение от Hause10 Посмотреть сообщение
как сделать рефакторинг?
Рефакторинг какого плана? Абстрактный в вакууме?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
24.04.2017, 07:50
Цитата Сообщение от Hause10 Посмотреть сообщение
C#
1
2
3
4
5
        //Свойства
        public Rental Rentals
        {
            set { this.rentals.Add(value); }
        }
мда.... єто 100% не свойство, а метод.

Цитата Сообщение от Hause10 Посмотреть сообщение
rental.Movie.PriceCode
вроде можно просто обращатся как Movie.PriceCode

Цитата Сообщение от Hause10 Посмотреть сообщение
как сделать рефакторинг?
у вас этот код тормозит? 0_о
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
24.04.2017, 08:04
Цитата Сообщение от Hause10 Посмотреть сообщение
Childrens
Нет такого слова. Есть Children. В единственном числе: Child. Все свойства вполне можно сделать автосвойствами только для чтения. Убрать неиспользуемые using, ну а клиента унаследовать от List<Rental>.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2017, 08:04
Помогаю со студенческими работами здесь

Рефакторинг кода
Здравствуйте, есть функция private void draw() { if (color2_bt0.IsChecked == true) { drawingBrush = Brushes.Black; ...

Рефакторинг кода
Подскажите пожалуйста сервисы для онлайн рефакторинга кода на c# и да вообще такие есть??

Рефакторинг кода и тестов
Привет. Помогите мне. Разработать необходимые интерфейсы, классы, модули без реализации Запустить разработанные тесты. Ни один тест...

Рефакторинг (альтернативное решение c применение рекурсии)
Здравствуйте, форумчане. Решил задачу, но код получился слишком громоздким и осталось ощущение, что можно подобрать более элегантное...

Рефакторинг большого количества ветвлений кода
Есть здоровый фрагмент кода, состоящий из одних ветвлений, анализируются разные поля иерархии объектов. Вопрос: как его лучше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru