Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Может кто пояснить код... / 17 сообщений из 17, страница 1 из 1
22.05.2020, 08:43
    #39960553
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Всем форумчанам доброго времени суток!
На работе столкнулся с рабочим кодом смысл которого понять никак не могу, может кто пояснит, буду крайне признателен.
Да, и вот еще что, по понятным причинам привожу псевдокод, но суть от этого не меняется...
Все это на C#

вариант 1

Код: 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.
public class classnameA
{
       public classnameA()
       {
          var x = xxx;
          var y = yyy;
          var z = zzz;
          .....
       }

       public classnameA(classnameA xxx): this()
       {
          var x = xxx.x;
          var y = xxx.y;
          var z = xxx.z;
          .....
       }      

       ....
       ....
      // дальнейший код вопросов не вызывает


}



вариант 2

Код: 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.
public class classnameA
{
       public classnameA()
       {
          var x = xxx;
          var y = yyy;
          var z = zzz;
          .....
       }

       public classnameA(classnameA xxx)
       {
          var x = xxx.x;
          var y = xxx.y;
          var z = xxx.z;
          .....
       }      

       ....
       ....
      // дальнейший код вопросов не вызывает


}



заранее благодарен
...
Рейтинг: 0 / 0
22.05.2020, 08:54
    #39960554
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Поясняю. Это говнокод, который не скомпилируется Если серьезно, то var там везде явно вставлен по ошибке. x,y,z это должны быть приватные поля, тогда первый конструктор это просто конструктор с инициализацией этих полей, а второй конструктор это "копирующий" конструтор для создания копии существующего инстанса.

Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
22.05.2020, 08:58
    #39960555
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Это вполне рабочий код. Смысл которого понять не могу. Потому и попросил помощи.
...
Рейтинг: 0 / 0
22.05.2020, 09:00
    #39960556
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
lnix
Это вполне рабочий код. Смысл которого понять не могу. Потому и попросил помощи.

x, y, x это public поля
...
Рейтинг: 0 / 0
22.05.2020, 09:01
    #39960557
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
fkthat,

а зачем так сделано?
...
Рейтинг: 0 / 0
22.05.2020, 09:01
    #39960558
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Еще, если реализуешь копирование обьекта, то стоит добавить еще интерфейс ICloneable.
...
Рейтинг: 0 / 0
22.05.2020, 09:02
    #39960559
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
ICloneable там нет
...
Рейтинг: 0 / 0
22.05.2020, 09:21
    #39960566
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
x, y, z вообще локальные переменные и если они unused, то это говно код и не более
...
Рейтинг: 0 / 0
22.05.2020, 09:25
    #39960569
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
lnix,

Это типа конструктор, чтобы можно было создать новый объект classnameA имея существующий.
Ну и чо?
...
Рейтинг: 0 / 0
22.05.2020, 09:27
    #39960570
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
lnix
x, y, x это public поля

Ну тогда надо предать всех, кто это писал, анафеме, замучить и сжечь на костре. А потом оштрафовать на премию, уволить и заставить всё переписать как надо.
...
Рейтинг: 0 / 0
22.05.2020, 09:29
    #39960571
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Коллеги, я это и сам понимаю, но мне нужно понять для чего это было так сделано...
Перерыл книги, нигде такого нет.
...
Рейтинг: 0 / 0
22.05.2020, 09:32
    #39960573
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
Возможно хотели иммутабельные классы когда-то. Или что-то типа того. Но всё пошло наперекосяк...
...
Рейтинг: 0 / 0
22.05.2020, 09:35
    #39960574
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
crutchmaster,

ну да, может быть...
...
Рейтинг: 0 / 0
22.05.2020, 09:37
    #39960575
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
crutchmaster,

Другими словами это извращенный аналог конструктора копирования С++
Пасиб...
...
Рейтинг: 0 / 0
22.05.2020, 09:38
    #39960576
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
fkthat,

Пасиб... все вроде понятно...
...
Рейтинг: 0 / 0
22.05.2020, 10:20
    #39960596
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
lnix
crutchmaster,

Другими словами это извращенный аналог конструктора копирования С++
Пасиб...

Почему же "извращенный". Обычный ctor копирования. За паблик поля, конечно же, надо руки отрывать. Вообще, как правило, наличие возможности копировать объект подразумевает value-like поведение, а, заначит, кроме того, надо такой класс метить как sealed и, как уже указали, делать полностью immutable.
...
Рейтинг: 0 / 0
22.05.2020, 11:25
    #39960629
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может кто пояснить код...
fkthat,

вот от этого меня и переклинило, никак не мог понять чего тут не так
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Может кто пояснить код... / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]