Где такое есть? В C#, к примеру, если я попытаюсь получить значение переменной до её объявления, программа не скомпилируется. Напомните мне, в каком языке это не так?
Аргументы в стиле «а представьте, что ваш ребёнок объявляет переменные в теле процедуры!» — это круто, но всё же, вы так и не привели примера, который бы действительно показывал, что объявлять переменные удобнее в начале программы, а не при инициализации. А вот пример, показывающий обратное: пишешь ты такой код, и нужно сделать
for point in vector do
Придётся перейти в секцию var и вписать туда
point:TPoint
и снова вернуться к секции for. Или, к примеру, обрабатываешь ты XML-ку, нужно получить какие-то атрибуты из ноды. Если бы в паскале можно было объявлять переменные в месте их использования, получилось бы так:
Когда переменные нужно объявлять вначале, пишут так:
var
…
Node:IXmlNode;
…
begin
Node := Document.DocumentElement['HEADER'];
Model := Node.Attributes['MODEL'];
Mark := Node.Attributes['MARK'];
Node : IXmlNode = Document.DocumentElement['ENGINE'];
EngineVolume := Node.Attributes['VOLUME'];
EngineType := Node.Attributes['TYPE'];
Или так:
with Document.DocumentElement['HEADER'] do
begin
Model := Attributes['MODEL'];
Mark := Attributes['MARK'];
end;
with Document.DocumentElement['ENGINE'] do
begin
EngineVolume := Attributes['VOLUME'];
EngineType := Attributes['TYPE'];
end;
А то и вовсе
Model := Document.DocumentElement['HEADER'].Attributes['MODEL'];
Mark := Document.DocumentElement['HEADER'].Attributes['MARK'];
EngineVolume := Document.DocumentElement['HEADER'].Attributes['VOLUME'];
EngineType := Document.DocumentElement['HEADER'].Attributes['TYPE'];
Многие программисты, пишущие на Delphi методы длиной более 1000 строк, объявляющие переменные про запас, использующие переменные по нескольку раз и дающие им имена типа «s1», «sss» и «str1», игнорируют предупреждения компилятора.
Параметры — это интерфейс между функцией и вызывающим её кодом.
Константы — на то и константы, что могут использоваться где угодно, но обязаны иметь всегда одно значение, тем более что «инициализируются» они сразу при объявлении.
Почему к ним должны быть «должны быть ближе остальные локальные переменные»? Почему «Чем ближе все определения друг к другу — тем удобнее работать»?
Единственный, довольно сомнительный, плюс от объявления переменных в начале функции — такое ограничение заставляет писать более короткие функции. Однако, любители писать функции на 1000 строк выходят из положения, просто объявляя «про запас» переменные типа «s1,s2…», либо повторно используя одну и ту же переменную.
Сдаётся мне, что общество плоской земли было придумано специально, чтобы даже необразованным обывателям, верящим в астрологию и мировые заговоры, было на фоне кого казаться умнее.
Придётся перейти в секцию var и вписать туда
и снова вернуться к секции for. Или, к примеру, обрабатываешь ты XML-ку, нужно получить какие-то атрибуты из ноды. Если бы в паскале можно было объявлять переменные в месте их использования, получилось бы так:
Когда переменные нужно объявлять вначале, пишут так:
Или так:
А то и вовсе
Константы — на то и константы, что могут использоваться где угодно, но обязаны иметь всегда одно значение, тем более что «инициализируются» они сразу при объявлении.
Почему к ним должны быть «должны быть ближе остальные локальные переменные»? Почему «Чем ближе все определения друг к другу — тем удобнее работать»?