Мы с коллегой обсуждали, как объявить переменные в функции.
Допустим, у вас есть класс с именем TStrings (используя Delphi для пояснения), который имеет по крайней мере один абстрактный метод и класс-потомок с именем TStringList, который, очевидно, реализует абстрактный метод, но он не вводит ничего, что вам нужно, что еще не реализовано в предок, как бы вы объявили функциональную переменную типа TStringList?
Вот два примера. Что считается лучшей практикой и почему?
procedure AddElements;
var
aList: TStringList;
begin
aList := TStringList.Create;
try
aList.Add('Apple');
aList.Add('Pear');
finally
aList.free;
end;
end;
procedure AddElementsII;
var
aList: TStrings;
begin
aList := TStringList.Create;
try
aList.Add('Apple');
aList.Add('Pear');
finally
aList.free;
end;
end;