powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Spring4D
86 сообщений из 86, показаны все 4 страниц
Spring4D
    #39946793
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь использует subj в проектах?

Спрашиваю вот почему: очень понравилась библиотека, особенно в кассу зашли Nullable типы. Но Delphi (Rio) перманентно падает, буквально каждый третий-четвертый запуск приложения в отладочном режиме. До использования Spring такого не замечалось.

У кого-то есть похожие симптомы?
...
Рейтинг: 0 / 0
Spring4D
    #39946795
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов,
Возможно, я немного не в тему, но просто интересно, - давно ли сторонние библиотеки могут вводить в язык новые типы?
...
Рейтинг: 0 / 0
Spring4D
    #39946806
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
Сергей Фролов,
Возможно, я немного не в тему, но просто интересно, - давно ли сторонние библиотеки могут вводить в язык новые типы?

Не, в спринг просто определен как Nullable<T> = record. У этой записи есть методы типа HasValue, GetValueOrDefault и т.д. Обычный дженерик :-) Но полезный, когда нужно использовать не только значение, но и факт наличия значения.

По библиотеке целом - плюсы у нее есть. Самый главный - это легкая возможность создания программ с помощью шаблонов проектирования. "легкость" - понятие конечно относительное, у каждого своя оценка, но sping реально берет на себя кучу чернового кода. И достаточно стабильно работает, падений именно из за spring в наших проектах вроде как не наблюдается (в частности в Rio).
...
Рейтинг: 0 / 0
Spring4D
    #39946813
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По nullable понятно, но покажите еще пример "фишечек" в этом спринге, которых у других нет, если не в лом.
...
Рейтинг: 0 / 0
Spring4D
    #39946814
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

ioc + di - только за это он уже хорош
...
Рейтинг: 0 / 0
Spring4D
    #39946815
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

Примерчик можно?
...
Рейтинг: 0 / 0
Spring4D
    #39946819
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
Возможно, я немного не в тему, но просто интересно, - давно ли сторонние библиотеки могут вводить в язык новые типы?
Шта? С времен Никлауса Вирта.
...
Рейтинг: 0 / 0
Spring4D
    #39946820
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А библиотека безусловно хорошая
...
Рейтинг: 0 / 0
Spring4D
    #39946961
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger> А библиотека безусловно хорошая

Вы используете где-нибудь ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Spring4D
    #39946979
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger

Шта? С времен Никлауса Вирта.


И что, в TP7 можно добавить Int128 и оперировать переменными А := В + С;?
...
Рейтинг: 0 / 0
Spring4D
    #39946998
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC,

Int128 = record
A,B,C,D : integer;
end;

А вот оператор оверлоадинга там нет.
...
Рейтинг: 0 / 0
Spring4D
    #39947009
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat, record ни секундочки не новый тип
...
Рейтинг: 0 / 0
Spring4D
    #39947019
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC,

А что ты считаешь "новым" типом или вообще "типом"?
...
Рейтинг: 0 / 0
Spring4D
    #39947034
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
LocksmithPC,

А что ты считаешь "новым" типом или вообще "типом"?


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
type
  TNewType = (0..3);

function TNewType.Add(const AValue, BValue: TNewType): TNewType; assembler; inline;
asm
  push ...
  mov ...
  ...
end;

var
  A, B, C: TNewType;

begin
  C := A + B;

end;



Ну, вот как-то так, фигурально выражаясь. И это бы в 95-м году :)
...
Рейтинг: 0 / 0
Spring4D
    #39947233
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строго говоря все что юзер пишет в секции type и есть новые типы (за исключением алиасов). А какие конкретно действия с ними можно проводить из коробки - дело десятое
...
Рейтинг: 0 / 0
Spring4D
    #39947270
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat

Int128 = record
A,B,C,D : integer;
end;

Малавата - в BP7 integer был 16 бит :)
...
Рейтинг: 0 / 0
Spring4D
    #39947273
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

От блин. Склероз!
...
Рейтинг: 0 / 0
Spring4D
    #39947308
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Кто-нибудь использует subj в проектах?

Спрашиваю вот почему: очень понравилась библиотека, особенно в кассу зашли Nullable типы. Но Delphi (Rio) перманентно падает, буквально каждый третий-четвертый запуск приложения в отладочном режиме. До использования Spring такого не замечалось.

У кого-то есть похожие симптомы?
uses блоков в implements нет?
сама библиотека так же раскоряжена

я бы не стал использовать сее творение, очень она какая-то с душком
...
Рейтинг: 0 / 0
Spring4D
    #39947348
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
в спринг просто определен как Nullable<T> = record. У этой записи есть методы типа HasValue, GetValueOrDefault и т.д. Обычный дженерик


Создай свой.

Я тоже когда-то, когда был молод и глуп, пихал в среду разные библиотеки а-ля Jedi ради пары функций.
...
Рейтинг: 0 / 0
Spring4D
    #39947360
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
uses блоков в implements нет?

А как это может быть связано?

kealon(Ruslan)

сама библиотека так же раскоряжена

Что, прости?

kealon(Ruslan)
я бы не стал использовать сее творение, очень она какая-то с душком

Мы ж тут вроде не филологи, а инженеры, такие аргументы не прокатят
...
Рейтинг: 0 / 0
Spring4D
    #39947362
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Я тоже когда-то, когда был молод и глуп, пихал в среду разные библиотеки а-ля Jedi ради пары функций.

Джеди всегда была помойкой, справедливости ради ;)
...
Рейтинг: 0 / 0
Spring4D
    #39947477
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
kealon(Ruslan)
uses блоков в implements нет?

А как это может быть связано?

kealon(Ruslan)

сама библиотека так же раскоряжена

Что, прости?

kealon(Ruslan)
я бы не стал использовать сее творение, очень она какая-то с душком

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

3.
1- она уже морально устарела как вышла. (т.е. 4 года назад)
2 - контейнеры ещё ничего так, подёргать можно, но качество алгоритмов посредственное
3 - блок Core вообще туфта. Рефлексия в дельфи это ужас и боль, вся эта "куча" легко заменяется парочкой генериков

эта либа не решает никаких задач, кроме адаптации бывших явистов
...
Рейтинг: 0 / 0
Spring4D
    #39947518
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Вот потому от этого и надо избавляться, и тем более этого не долно быть в библиотеках.

Чего-чего? Можно тезисно, по пунктам?
...
Рейтинг: 0 / 0
Spring4D
    #39947538
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
2 - контейнеры ещё ничего так, подёргать можно, но качество алгоритмов посредственное
3 - блок Core вообще туфта. Рефлексия в дельфи это ужас и боль, вся эта "куча" легко заменяется парочкой генериков

/popcorn
ждем примеров кода с пояснениями и цифрами
...
Рейтинг: 0 / 0
Spring4D
    #39947542
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

видимо у тебя что то личное, раз ты так негативно к либе относишься :-)
...
Рейтинг: 0 / 0
Spring4D
    #39947552
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот тоже со скепсисом к ней отношусь, но бы хотел послушать описние вкуса устриц от тех кто их ел.
...
Рейтинг: 0 / 0
Spring4D
    #39947656
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

Если вы разрабатываете приложение командой
Если у вас применяется многослойная архитектура приложения, например по аналогии с CleanArchitecture
Если вы покрываете все модульными тестами

То применение IoC позволит вам более гибче реагировать на изменения в проекте, а также поддерживать модульные тесты...

К примеру в asp .net core идет из коробки собственная реализация IoC и реализовывать все заложенные абстракции можно только через него, что очень удобно...
Описал в одном месте все зависимости, а в классах пишешь только то, что эти классы должны делать согласно принципам SOLID...
Весь код модульный и легко изучаемый... Каждый новый миньон на проекте не будет погружаться в тонны лапши, а изучив архитектуру приложения, поймет, что если надо реализовать такую абстракцию, то делаем так.. Если надо другую абстракцию, то делаем так...

Самая большая проблема в том, что Delphi - это RAD... Но какой-то кустарный и мягко говоря не расширяемый...
Поэтому применение современных мировых практик очень плохо накладываются на него..
...
Рейтинг: 0 / 0
Spring4D
    #39947676
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
реализация IoC <..> согласно принципам SOLID
<..>
если надо реализовать такую абстракцию, то делаем так.. Если надо другую абстракцию, то делаем так...
Нифига не понял.
А можно по простому, для тех кто в танке?

Простейший пример кода бы объяснил больше чем страницы абстрактной теории.
...
Рейтинг: 0 / 0
Spring4D
    #39947683
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Простейший пример кода бы объяснил больше чем страницы абстрактной теории.

Процедурные типы и классовые ссылки. Фсё. Это тебе сразу и инъекции зависимостей и инверсия управления
...
Рейтинг: 0 / 0
Spring4D
    #39947684
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring4D
    #39947699
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем опять мне "в гугль" послали. :)

Я конечно все понимаю, но когда "простейший" пример - это проект из десятка файлов - то:
...
Рейтинг: 0 / 0
Spring4D
    #39947723
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот фреймворк не предназначен для простейших приложений...

Вы для приложения сначала проектируете архитектуру, выделяете все абстракции, взаимосвязи между ними..
Затем в одном месте по сути описываете реализации абстракций - профит...
Каждый класс - имеет одну и только одну причину для изменений
Тестировать такие классы одно удовольствие..
Изменение внутренней реализации таких классов не сломает другие, и не сломает другую логику...

Этот фреймворк позволяет автоматически резолвить (в конструктор, поле, метод) зависимости классов (абстракций) из заранее зарегистрированных реализаций.

Для юниттестов удобно делать моки классов по работе с бд, сервисами и прочими зависимостями, которые будут эмулировать работу, Тем самым не нужно для тестирования бизнес-логики разворачивать инфраструктуру... и т.д.

Вообщем для тех кто пишет ПО кидая на форму компоненты и прямо там же код логики - это не подойдет...

Код: pascal
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
program SpringExample;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Spring.Container;

type
  IMove = interface
  ['{A1A2EB2E-A499-4D9A-8D11-FA94EA1F231D}']
    procedure Move;
  end;

  TSwim = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  TRun = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  TWalk = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  IPeople = interface
  ['{0CFC7987-8DE0-4BCB-A78F-99CA46D5DA08}']
    procedure GoToWork;
  end;

  TPeople = class(TInterfacedObject, IPeople)
  strict private
    FMove: IMove;
  public
    constructor Create(const aMove: IMove);
    procedure GoToWork;
  end;

{ TSwim }

procedure TSwim.Move;
begin
  Writeln('I Swim ');
end;

{ TRun }

procedure TRun.Move;
begin
  Writeln('I Run ');
end;

{ TWalk }

procedure TWalk.Move;
begin
  Writeln('I Walk ');
end;

{ TPeople }

constructor TPeople.Create(const aMove: IMove);
begin
  FMove := aMove;
end;

procedure TPeople.GoToWork;
begin
  FMove.Move();
end;

begin
  GlobalContainer.RegisterType<IMove, TSwim>();
//  GlobalContainer.RegisterType<IMove, TRun>();
//  GlobalContainer.RegisterType<IMove, TWalk>();
  GlobalContainer.RegisterType<IPeople, TPeople>();

  GlobalContainer.Build();

  var People := GlobalContainer.Resolve<IPeople>();
  People.GoToWork();
  People := nil;
  Readln;
end.

...
Рейтинг: 0 / 0
Spring4D
    #39947728
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Этот фреймворк не предназначен для простейших приложений...

Вы для приложения сначала проектируете архитектуру, выделяете все абстракции, взаимосвязи между ними..
Затем в одном месте по сути описываете реализации абстракций - профит...
Каждый класс - имеет одну и только одну причину для изменений
Тестировать такие классы одно удовольствие..
Изменение внутренней реализации таких классов не сломает другие, и не сломает другую логику...

Этот фреймворк позволяет автоматически резолвить (в конструктор, поле, метод) зависимости классов (абстракций) из заранее зарегистрированных реализаций.

Для юниттестов удобно делать моки классов по работе с бд, сервисами и прочими зависимостями, которые будут эмулировать работу, Тем самым не нужно для тестирования бизнес-логики разворачивать инфраструктуру... и т.д.

Вообщем для тех кто пишет ПО кидая на форму компоненты и прямо там же код логики - это не подойдет...

Код: pascal
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
program SpringExample;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Spring.Container;

type
  IMove = interface
  ['{A1A2EB2E-A499-4D9A-8D11-FA94EA1F231D}']
    procedure Move;
  end;

  TSwim = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  TRun = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  TWalk = class(TInterfacedObject, IMove)
  strict private
    procedure Move;
  end;

  IPeople = interface
  ['{0CFC7987-8DE0-4BCB-A78F-99CA46D5DA08}']
    procedure GoToWork;
  end;

  TPeople = class(TInterfacedObject, IPeople)
  strict private
    FMove: IMove;
  public
    constructor Create(const aMove: IMove);
    procedure GoToWork;
  end;

{ TSwim }

procedure TSwim.Move;
begin
  Writeln('I Swim ');
end;

{ TRun }

procedure TRun.Move;
begin
  Writeln('I Run ');
end;

{ TWalk }

procedure TWalk.Move;
begin
  Writeln('I Walk ');
end;

{ TPeople }

constructor TPeople.Create(const aMove: IMove);
begin
  FMove := aMove;
end;

procedure TPeople.GoToWork;
begin
  FMove.Move();
end;

begin
  GlobalContainer.RegisterType<IMove, TSwim>();
//  GlobalContainer.RegisterType<IMove, TRun>();
//  GlobalContainer.RegisterType<IMove, TWalk>();
  GlobalContainer.RegisterType<IPeople, TPeople>();

  GlobalContainer.Build();

  var People := GlobalContainer.Resolve<IPeople>();
  People.GoToWork();
  People := nil;
  Readln;
end.



Попробуйте Swap(A, B);
...
Рейтинг: 0 / 0
Spring4D
    #39947732
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

Вот пример оттуда в одном файле, если сложно воспринимать)))

Код: pascal
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
program SpringExample;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Spring.Container;

type
  TOrder = class
  end;

  IOrderValidator = interface
  ['{6D0F52B4-A96F-4C96-97A4-DE45324FDE1B}']
    function ValidateOrder(aOrder: TOrder): Boolean;
  end;

  IOrderEntry = interface
  ['{8D272909-3324-4849-A128-C85E249520CD}']
    function EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
  end;

  IOrderProcessor = interface
  ['{978361F2-65F0-49F7-A00C-964C05683682}']
    function ProcessOrder(aOrder: TOrder): Boolean;
  end;

  TOrderEntry = class(TInterfacedObject, IOrderEntry)
  public
    function EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
  end;

  TOrderProcessor = class(TInterfacedObject, IOrderProcessor)
  private
    FOrderValidator: IOrderValidator;
    FOrderEntry: IOrderEntry;
  public
    constructor Create(aOrderValidator: IOrderValidator; aOrderEntry: IOrderEntry);
    function ProcessOrder(aOrder: TOrder): Boolean;
  end;

  TOrderValidator = class(TInterfacedObject, IOrderValidator)
  public
    function ValidateOrder(aOrder: TOrder): Boolean;
  end;

{ TOrderEntry }

function TOrderEntry.EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
begin
  Result := Assigned(aOrder);
  Writeln('Entering order into the database....');
end;

{ TOrderProcessor }

constructor TOrderProcessor.Create(aOrderValidator: IOrderValidator; aOrderEntry: IOrderEntry);
begin
  FOrderValidator := aOrderValidator;
  FOrderEntry := aOrderEntry;
end;

function TOrderProcessor.ProcessOrder(aOrder: TOrder): Boolean;
var
  OrderIsValid: Boolean;
begin
  Result := False;
  OrderIsValid := FOrderValidator.ValidateOrder(aOrder);
  if OrderIsValid then
    Result := FOrderEntry.EnterOrderIntoDatabase(aOrder);
  Writeln('Order has been processed....');
end;

{ TOrderValidator }

function TOrderValidator.ValidateOrder(aOrder: TOrder): Boolean;
begin
  Result := Assigned(aOrder);
  Writeln('Validating Order....');
end;

begin
  GlobalContainer.RegisterType<TOrderEntry>;
  GlobalContainer.RegisterType<TOrderProcessor>;
  GlobalContainer.RegisterType<TOrderValidator>;

  GlobalContainer.Build;

  var Order := TOrder.Create;
  try
    var OrderProcessor := GlobalContainer.Resolve<IOrderProcessor>;
    if OrderProcessor.ProcessOrder(Order) then
      Writeln('Order successfully processed....');
  finally
    Order.Free;
  end;
  Readln;

end.

...
Рейтинг: 0 / 0
Spring4D
    #39947746
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

но если что случись, ты утонешь в отладке всего того гумна, которое так написано

X-CiteКаждый класс - имеет одну и только одну причину для измененийна собственном опыте могу сказать, что это очень сомнительное удовольствие
...
Рейтинг: 0 / 0
Spring4D
    #39947749
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
kealon(Ruslan)
Вот потому от этого и надо избавляться, и тем более этого не долно быть в библиотеках.

Чего-чего? Можно тезисно, по пунктам?
неожиданно...
даже в гугл посылать как-то странно

простой пример: есть ленивая функция создания объекта, соответственно в финализации подчищается инстант этого объекта
если так намудрить с подключениями, то есть очень большой шанс, что функция сработает после финализации. Особенно это актуально когда через проект проходит толпа народа.
...
Рейтинг: 0 / 0
Spring4D
    #39947759
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Я таки хочу это увидеть, и понять, наконец, о чём идёт речь.
...
Рейтинг: 0 / 0
Spring4D
    #39947773
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat

А можно по простому, для тех кто в танке?
Простейший пример кода бы объяснил больше чем страницы абстрактной теории.

DMVCFramework пытается следовать всем этим современным практикам. Причём без фанатизма, что главное. Исходники открыты.
Но да, читать придётся много. Но ты ж, думаю, и VCL когда-то по исходникам понимал (надеюсь), а не по обработчикам событий.
...
Рейтинг: 0 / 0
Spring4D
    #39947774
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
простой пример: есть ленивая функция создания объекта, соответственно в финализации подчищается инстант этого объекта
если так намудрить с подключениями, то есть очень большой шанс, что функция сработает после финализации.

Я правильно понял, есть инициализатор чего-то, который может вызываться после отработки секции finalization?!?
Да тут вообще ничего не поможет
...
Рейтинг: 0 / 0
Spring4D
    #39947776
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов,

Речь, предполагаю, о циклических ссылках.
...
Рейтинг: 0 / 0
Spring4D
    #39947806
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
rgreat,

Вот пример оттуда в одном файле, если сложно воспринимать)))

Код: pascal
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
program SpringExample;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Spring.Container;

type
  TOrder = class
  end;

  IOrderValidator = interface
  ['{6D0F52B4-A96F-4C96-97A4-DE45324FDE1B}']
    function ValidateOrder(aOrder: TOrder): Boolean;
  end;

  IOrderEntry = interface
  ['{8D272909-3324-4849-A128-C85E249520CD}']
    function EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
  end;

  IOrderProcessor = interface
  ['{978361F2-65F0-49F7-A00C-964C05683682}']
    function ProcessOrder(aOrder: TOrder): Boolean;
  end;

  TOrderEntry = class(TInterfacedObject, IOrderEntry)
  public
    function EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
  end;

  TOrderProcessor = class(TInterfacedObject, IOrderProcessor)
  private
    FOrderValidator: IOrderValidator;
    FOrderEntry: IOrderEntry;
  public
    constructor Create(aOrderValidator: IOrderValidator; aOrderEntry: IOrderEntry);
    function ProcessOrder(aOrder: TOrder): Boolean;
  end;

  TOrderValidator = class(TInterfacedObject, IOrderValidator)
  public
    function ValidateOrder(aOrder: TOrder): Boolean;
  end;

{ TOrderEntry }

function TOrderEntry.EnterOrderIntoDatabase(aOrder: TOrder): Boolean;
begin
  Result := Assigned(aOrder);
  Writeln('Entering order into the database....');
end;

{ TOrderProcessor }

constructor TOrderProcessor.Create(aOrderValidator: IOrderValidator; aOrderEntry: IOrderEntry);
begin
  FOrderValidator := aOrderValidator;
  FOrderEntry := aOrderEntry;
end;

function TOrderProcessor.ProcessOrder(aOrder: TOrder): Boolean;
var
  OrderIsValid: Boolean;
begin
  Result := False;
  OrderIsValid := FOrderValidator.ValidateOrder(aOrder);
  if OrderIsValid then
    Result := FOrderEntry.EnterOrderIntoDatabase(aOrder);
  Writeln('Order has been processed....');
end;

{ TOrderValidator }

function TOrderValidator.ValidateOrder(aOrder: TOrder): Boolean;
begin
  Result := Assigned(aOrder);
  Writeln('Validating Order....');
end;

begin
  GlobalContainer.RegisterType<TOrderEntry>;
  GlobalContainer.RegisterType<TOrderProcessor>;
  GlobalContainer.RegisterType<TOrderValidator>;

  GlobalContainer.Build;

  var Order := TOrder.Create;
  try
    var OrderProcessor := GlobalContainer.Resolve<IOrderProcessor>;
    if OrderProcessor.ProcessOrder(Order) then
      Writeln('Order successfully processed....');
  finally
    Order.Free;
  end;
  Readln;

end.

А зачем такая простая задача решается так сложно?
Зачем нужен GlobalContainer?
Чем это лучше обычного TInterfacedObject?
В чем преимущество такого подхода?
...
Рейтинг: 0 / 0
Spring4D
    #39947807
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Сергей Фролов,

Речь, предполагаю, о циклических ссылках.
а о чём же ещё?
я вроде русским языком как для особо одарённых написал
авторuses блоков в implements нет?
сама библиотека так же раскоряжена
...
Рейтинг: 0 / 0
Spring4D
    #39947808
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..
...
Рейтинг: 0 / 0
Spring4D
    #39947809
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
А зачем такая простая задача решается так сложно?
Чем это лучше обычного TInterfacedObject?
В чем преимущество такого подхода?
явисты мотивирует это тем, что так можно покрыть всё тестами и декларативно удостовериться что покрываешь бизнес-задачу
но в кулуарах они же говорят, что можно срубить с заказчика бабла за резгребание того, что получается таким методом :-)
...
Рейтинг: 0 / 0
Spring4D
    #39947811
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
А зачем такая простая задача решается так сложно?
Зачем нужен GlobalContainer?
Чем это лучше обычного TInterfacedObject?
В чем преимущество такого подхода?

https://ru.wikipedia.org/wiki/Инверсия_управления
https://ru.wikipedia.org/wiki/Внедрение_зависимости

Если вы не понимаете что это и зачем это, значит вам оно не нужно
...
Рейтинг: 0 / 0
Spring4D
    #39947812
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

Т.е. примеров пользы не будет?
...
Рейтинг: 0 / 0
Spring4D
    #39947814
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
а о чём же ещё?
я вроде русским языком как для особо одарённых написал

Возможно, я недостаточно одарён, но я понял это как подключение модулей в части реализации, что есть обычная практика. На цикличность тут даже намёка нет. Хотя, возможно, цикличность ты обозначил раскоряженностью. Штош.
...
Рейтинг: 0 / 0
Spring4D
    #39947841
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
https://ru.wikipedia.org/wiki/Инверсия_управления
https://ru.wikipedia.org/wiki/Внедрение_зависимости

Если вы не понимаете что это и зачем это, значит вам оно не нужно
Это опять общие слова, объясняющие "что это", но ничего не говорящие на тему "зачем это".
...
Рейтинг: 0 / 0
Spring4D
    #39947844
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
Если вы не понимаете что это и зачем это, значит вам оно не нужно
+100500))
...
Рейтинг: 0 / 0
Spring4D
    #39947872
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
kealon(Ruslan)
а о чём же ещё?
я вроде русским языком как для особо одарённых написал

Возможно, я недостаточно одарён, но я понял это как подключение модулей в части реализации, что есть обычная практика. На цикличность тут даже намёка нет. Хотя, возможно, цикличность ты обозначил раскоряженностью. Штош.
вот я тебе и говорю, что это очень ***новая практика

от себя ИМХО добавлю, что регистрация классов, тоже к этому относится
...
Рейтинг: 0 / 0
Spring4D
    #39947901
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
вот я тебе и говорю, что это очень ***новая практика

Я твои фантазии оспаривать не собираюсь, а о плюсах размещения модулей в части реализации написано в доке, кому интересно.
...
Рейтинг: 0 / 0
Spring4D
    #39947969
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

эти "фантазии", как ты говоришь, родились не на пустом месте и такой бедлам "очень дорого" обходится при сопровождении

Исправление багов, вызваных такими фантазёрами, занимает, наверное, процентов 30 моего времени последние 5 лет. И всё потому, что это было модно 6 лет назад и фигачилось без разбору в любую дырку.
...
Рейтинг: 0 / 0
Spring4D
    #39948037
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)

и такой бедлам "очень дорого" обходится при сопровождении

Это споры уровня ООП vs процедурный стиль.
...
Рейтинг: 0 / 0
Spring4D
    #39948048
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Это споры уровня ООП vs процедурный стиль.

Нет, это уровень отрицания действительности и иррациональных страхов.
...
Рейтинг: 0 / 0
Spring4D
    #39948056
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
kealon(Ruslan)

и такой бедлам "очень дорого" обходится при сопровождении

Это споры уровня ООП vs процедурный стиль.
это просто констатация факта для конкретного языка, в силу его специфики - причём полученный натуральным образом и зафиксированный в правилах кодинга компании на которую я работаю
в яве, например, такой вопрос просто не возникнет

и я на своём опыте вижу как это плохо, но многие молодые задорные и не очень готовы есть кактус - что ж, каждому своё....
...
Рейтинг: 0 / 0
Spring4D
    #39948065
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Нет, это уровень отрицания действительности и иррациональных страхов.

Справедливости ради дженерики в Delphi как-то странно работают, когда их массово начинаешь употреблять...
Скрин приложил. Тот код, который не отмечен синими точками, прекрасно компилируется и работает. Но отладчиком в него не зайдешь. Почему? Загадка...
...
Рейтинг: 0 / 0
Spring4D
    #39948075
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов,

может они объявлены как inline?
...
Рейтинг: 0 / 0
Spring4D
    #39948076
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
причём полученный натуральным образом и зафиксированный в правилах кодинга компании на которую я работаю

Обожглись горячим молоком (словили от циклических ссылок) и айда дуть на родниковую воду (запретили подключение любых модулей в секции реализаций). Ну молодцы, чо. Не выходи из комнаты, не совершай ошибку (с).

Сергей Фролов
Почему? Загадка...

Нет никакой загадки, просто дженерики в дельфи - говно, как и среда разработки, впрочем.
...
Рейтинг: 0 / 0
Spring4D
    #39948077
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
может они объявлены как inline?

Нет, к сожалению не inline.

Еще одну интересную штуку выявил на днях. Есть pas файл. Если запускать отладку, когда этот файл активен в редакторе, то среда при окончании отладки упадет. При запуске отладки с любым другим активным файлом проблем нет. Особенно интересно решилась эта проблема: этот файл из exe был перенесён в bpl. После этого отладка заработала нормально. Если файл вернуть обратно в exe, то все начинается заново.

Вот такая мистика.
...
Рейтинг: 0 / 0
Spring4D
    #39948078
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Нет никакой загадки, просто дженерики в дельфи - говно, как и среда разработки, впрочем.

Альтернатива Java или .NET?
На что можно быстро (относительно) перевести проект, в который вложено 15 человеко-лет?
...
Рейтинг: 0 / 0
Spring4D
    #39948079
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
может они объявлены как inline?

Дженерики не инлайнятся
...
Рейтинг: 0 / 0
Spring4D
    #39948082
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Альтернатива Java или .NET?
На что можно быстро (относительно) перевести проект, в который вложено 15 человеко-лет?

Если быстро, то FPC + Lazarus. Я серьёзно. Там не всё идеально, но другой альтернативы нет.
...
Рейтинг: 0 / 0
Spring4D
    #39948096
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Если быстро, то FPC + Lazarus.

Сдается мне, что лучшее все-таки что-то другое выбирать. И писать проект заново. Под веб.
...
Рейтинг: 0 / 0
Spring4D
    #39948099
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
X-Cite
может они объявлены как inline?

Нет, к сожалению не inline.

Еще одну интересную штуку выявил на днях. Есть pas файл. Если запускать отладку, когда этот файл активен в редакторе, то среда при окончании отладки упадет. При запуске отладки с любым другим активным файлом проблем нет. Особенно интересно решилась эта проблема: этот файл из exe был перенесён в bpl. После этого отладка заработала нормально. Если файл вернуть обратно в exe, то все начинается заново.

Вот такая мистика.
эт не мистика, просто недоработка IDE
закрой сам файл, и если не попадёшь туда отладчиком всё будет работать нормально
...
Рейтинг: 0 / 0
Spring4D
    #39948107
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Сдается мне, что лучшее все-таки что-то другое выбирать. И писать проект заново. Под веб.

А когда мода изменится переписать ещё раз! Да!
...
Рейтинг: 0 / 0
Spring4D
    #39948111
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
закрой сам файл, и если не попадёшь туда отладчиком всё будет работать нормально

Я ж так и написал, что все работает, но отладчиком зайти не могу. :)
Отладчик при попытке вызова выделенных методов по F7 вообще в какое-то странное место переходит... В середину другого метода в другом модуле...
...
Рейтинг: 0 / 0
Spring4D
    #39948113
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
А когда мода изменится переписать ещё раз! Да!

Вот это меня, признаться, тоже беспокоит. Но работать с такой IDE просто нереально.
Ну, или, не использовать современные возможности, а пользоваться уровнем D7.
...
Рейтинг: 0 / 0
Spring4D
    #39948118
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Вот это меня, признаться, тоже беспокоит. Но работать с такой IDE просто нереально.
Ну, или, не использовать современные возможности, а пользоваться уровнем D7.
Надо не усложнять то что можно сделать просто.
И все наладится.
...
Рейтинг: 0 / 0
Spring4D
    #39948121
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Но работать с такой IDE просто нереально.

Есть вероятность, что скоро всё начнёт меняться к лучшему и перемены будут видны уже в 10.4 ;) Кстати говоря, в лазаре с иде всё сильно лучше, уж в редакторе точно (за отладчик его пинают, но лично меня это не напрягает).
...
Рейтинг: 0 / 0
Spring4D
    #39948122
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Kazantsev Alexey,

эти "фантазии", как ты говоришь, родились не на пустом месте и такой бедлам "очень дорого" обходится при сопровождении

Исправление багов, вызваных такими фантазёрами, занимает, наверное, процентов 30 моего времени последние 5 лет. И всё потому, что это было модно 6 лет назад и фигачилось без разбору в любую дырку.
Если честно, твоя точка зрения непонятна .

В проектах, где я работал и работаю, используется правило:
1. в интерфейсной части описываются модули, которые нужны для определения констант/типов/классов/т.д. в интерфейсной части;
2. все остальные необходимые модули описываются в части реализации.

В чем неправильность такого подхода? Почему такое решение обходится "дорого" при сопровождении? Оно правильнее, чем пихать всё подряд в одно место), т.е. в интерфейсную часть
...
Рейтинг: 0 / 0
Spring4D
    #39948147
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Надо не усложнять то что можно сделать просто.

Да я вот и хотел сделать просто, чтобы не было кочующих по классам переменных...
...
Рейтинг: 0 / 0
Spring4D
    #39948152
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Есть вероятность, что скоро всё начнёт меняться к лучшему и перемены будут видны уже в 10.4 ;)
Откуда такой инсайд? А то я грешным делом не стал осенью продлять подписку, ибо ничего интересного для меня не было, а x64 для Андроида не актуален пока. Только планы ещё. Хочу, кстати, FGX Native посмотреть, но руки не доходят. Кто-нибудь уже это сделал?
...
Рейтинг: 0 / 0
Spring4D
    #39948154
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Да я вот и хотел сделать просто, чтобы не было кочующих по классам переменных...

У нас с тобой разное понимание того что значит "просто".
...
Рейтинг: 0 / 0
Spring4D
    #39948174
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
Откуда такой инсайд?

Это не инсайд, просто в роадмапе правильные вещи написаны. С этим релизом придёт поддержка LSP, что, наконец, должно избавить среду от нескольких парсеров кода. Это должно положительно сказаться на работе инсайтов, фолдинге и в целом ускорить работу кодтулов. Далее, на апдейты намечена работа по объединению нескольких отладчиков и фокусировка на LLDB.

Сергей Фролов
Хочу, кстати, FGX Native посмотреть, но руки не доходят. Кто-нибудь уже это сделал?

Я триалку покрутил. Защита триала никакущая :) Дизайнеры симпатичные. На устройстве не пробовал. Имей ввиду, что библиотека поставляется с неполными исходниками.
...
Рейтинг: 0 / 0
Spring4D
    #39948189
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Кстати говоря, в лазаре с иде всё сильно лучше, уж в редакторе точно (за отладчик его пинают, но лично меня это не напрягает).

подозреваю, что из-за "древности" gdb, что идет в комплекте с компилятором от 2017г.

зы. простите, что я все опять свел к бабам Лазарю
...
Рейтинг: 0 / 0
Spring4D
    #39948195
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Они сейчас тоже к LLDB идут.
...
Рейтинг: 0 / 0
Spring4D
    #39948199
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Они сейчас тоже к LLDB идут.

если я правильно улавливаю общую тенденцию, то все разговоры об этом ведутся пока практически это реализовано только применительно к макоси
...
Рейтинг: 0 / 0
Spring4D
    #39948213
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Да, так и есть, похоже.
...
Рейтинг: 0 / 0
Spring4D
    #39948214
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey

в роадмапе правильные вещи написаны. С этим релизом придёт поддержка LSP, что, наконец, должно избавить среду от нескольких парсеров кода. Это должно положительно сказаться на работе инсайтов, фолдинге и в целом ускорить работу кодтулов. Далее, на апдейты намечена работа по объединению нескольких отладчиков и фокусировка на LLDB.

Скрещу пальцы на всякий случай ;)

Kazantsev Alexey
Имей ввиду, что библиотека поставляется с неполными исходниками.

Это я в курсе. Ярослав пытается пойти по пути турка с его оберткой над ExtJs. Может и взлетит.
Но лично я, например, без 100% исходников покупать не буду, это даже не обсуждается.
...
Рейтинг: 0 / 0
Spring4D
    #39948220
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
Если честно, твоя точка зрения непонятна .

В проектах, где я работал и работаю, используется правило:
1. в интерфейсной части описываются модули, которые нужны для определения констант/типов/классов/т.д. в интерфейсной части;
2. все остальные необходимые модули описываются в части реализации.

В чем неправильность такого подхода? Почему такое решение обходится "дорого" при сопровождении? Оно правильнее, чем пихать всё подряд в одно место), т.е. в интерфейсную часть
Всё просто, расмотрим на примере с регистрацией (так называемая фабрика классов, собственно как и в этой либе), с модулями будет не так очевидно

Есть модуль агрегатор - AUnit, цепляешь его, регистрируешь свой класс и он добавляет какой-то функционал в общее приложение
в нём реализована функция создания и в финализации подчищение всего, что он создал
Можно модули по выбору цеплять, модуль сам себя зарегал функционал добавил - вообще замечательно, всё пашет как задумано, класс!!!

Добавил ты модуль с хитрой библиотекой, которую ведет соседний отдел - попросили что бы был функционал из неё. Не вопрос, добавили, всё работает, плывём дальше.

а теперь овраги:
В сосоеднем отделе решили, что скорости у либы не хватает и добавили статичный хеш, ну где ж его убивать - конеш в финализации

Закинули либу, твоя прога собралась на билд машине (интерфейс то у неё тот же, обратная совместимость наше всё), и прога ушла в массы.
И тут ты начинаешь получать кучу багов с непонятными стеками....
...
Рейтинг: 0 / 0
Spring4D
    #39948224
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)

Добавил ты модуль с хитрой библиотекой, которую ведет соседний отдел - попросили что бы был функционал из неё.

а теперь овраги:
В сосоеднем отделе решили, что скорости у либы не хватает и добавили статичный хеш, ну где ж его убивать - конеш в финализации

Закинули либу, твоя прога собралась на билд машине (интерфейс то у неё тот же, обратная совместимость наше всё), и прога ушла в массы.
И тут ты начинаешь получать кучу багов с непонятными стеками....

Немного не понял причину и следствие.

Если твой волшебный AUnit управляет временем жизни создаваемых объектов, то какое отношение к этому имеет кэш, который убивается в секции finalization того модуля, который ты подключил? Кэш же, если модуль нормально написано, ничего не должен знать ни про какие инстансы вызывающей его либы? Если это не так, то твои коллеги из соседнего отдела просто дебилы и никакого отношения к описываемым тобой страхам это не имеет.
...
Рейтинг: 0 / 0
Spring4D
    #39948233
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов,
коллеги точно не дебилы, у них всё чики-пуки полное соблюденние интерфейса
придумывай другие варианты, почему валится
...
Рейтинг: 0 / 0
Spring4D
    #39948234
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)

придумывай другие варианты, почему валится

У тебя есть хотя бы одна причина, почему я должен это делать? ;)
...
Рейтинг: 0 / 0
Spring4D
    #39948272
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов,

а "понять где слабые подходы данного применения" разве не хороший мотив?
...
Рейтинг: 0 / 0
Spring4D
    #40032291
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто подскажет, есть ли возможность запретить использование конструкторов из предков, если есть конструктор в наследнике, но при этом зависимости не зарегистрированы?
Чтобы выдавало какой-нибудь error. А не использовало конструктор с зарегистрированными зависимостями или из TObject.
При этом не определять конструктор без параметров в наследнике с exception.
...
Рейтинг: 0 / 0
Spring4D
    #40032312
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у конструктора указать атрибут [Inject] то в принципе норм, работает, но хотелось бы иметь возможность динамически определять из кода.. Полазил по исходникам, вроде другого способа нет (
...
Рейтинг: 0 / 0
86 сообщений из 86, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Spring4D
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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