![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обьявление переменной в var
alexdn © (2011-08-22 18:30:00)Как то я засомневался в одном вопросе.. вот если переменная обьявляется в блоке var, например:
var p:real;
присваивается ли ей автоматически значение 0..?
Или в коде нужно писать:
var x,y:real
begin
x:=0;
y:=0;
тра-та-та..
говорят есть разница между глобальными и локальными переменными.
sniknik (2011-08-26 15:36:00) [1]> Вот как раз PHP дисциплинирует - приходится писать внимательно и вдумчиво
да вот что то не видно у них особой дисциплины... наоборот "нафига следить? оно само и объявит и про инициализирует и тип определит"... а у меня, где варнинги есть, есть и слежение чтобы их не было, а значит и не было не логичностей/ не определенности в коде.
т.е. вижу не дисциплину, а "с глаз долой из сердца вон".
Anatoly Podgoretsky (2011-08-26 15:17:00) [2]> Омлет (26.08.2011 11:27:50) [50]
70-80% компилятор не устраивает, да и вообще это игру в рулетку напоминает,
мол на 80% все правильно,
а так zero (не ноль) в пользу комилятора
Anatoly Podgoretsky (2011-08-26 15:13:00) [3]> Inovet (26.08.2011 10:50:42) [42]
Так она и так приницилизирована, но только не так как хочется, кстати и
компилятор тоже не знает этого.
Омлет (2011-08-26 14:05:00) [4]Вот как раз PHP дисциплинирует - приходится писать внимательно и вдумчиво, иначе потом полгода будешь вылавливать ошибки.
А на подсказки компилятора полагаться - путь к разгильдяйству )
sniknik (2011-08-26 13:44:00) [5]> Ещё. С автоинициализацией ворнингов совсем не будет по идеологии.
что будет большим минусом языку... имхо. вот сколько раз разбирая варнинг натыкался на нелогичность кода, идеи, реализации... так правишь что-то, убрал "лишнее" и тут опа-не инициализированность, начинаешь подробнее смотреть, а там вообще смысл поменялся, делается не то.
а будет. нужна инициализация? вот вам автоматом в нее нулевое значение, и неважно, что тут нужно что-то вполне конкретное... или не доделано поэтому не инициализировано.
в PHP зачастую так и происходит ;(. от тех же причин.
Inovet (2011-08-26 11:41:00) [6]> [50] Омлет © (26.08.11 11:27)
> Главное, ты будешь знать, что там изначально записано.
Как вариант может быть удобно.
> [50] Омлет © (26.08.11 11:27)
> Проигнорировал (отключил) ворнинги - получил ошибки.
ССЗБ.
Ещё. С автоинициализацией ворнингов совсем не будет по идеологии.
Омлет (2011-08-26 11:27:00) [7]> а остальное = мусор
Главное, ты будешь знать, что там изначально записано. И это удобно - избавляет от лишнего кода инициализации: 0, nil, false, '', [] - покрывают 70-80% случаев (по личному опыту). Единственное зло, по-моему - автоматическое присвоение первого значения в перечислимых enum-типах, т.к. заранее не знаешь, изменится ли оно в будущем.
А сейчас как? Проигнорировал (отключил) ворнинги - получил ошибки.
alexdn (2011-08-26 11:24:00) [8]> OW © (26.08.11 10:38) [41]
> Чекбокс "я батонокидатель".
> и все. Кажется компилятору, что правильно обнулить - пусть
> нулит.
шедевр, Windows forms напоминает в c#
Inovet (2011-08-26 11:06:00) [9]> [45] Омлет © (26.08.11 10:52)
> Есть соглашения. По тем же полям объекта, к примеру.
> Числа - в ноль, объекты - в nil, строки - в '' и т.д.
Ладно ещё nil можно притянуть как инициалицацию, а остальное = мусор. Никто, кроме разработчика не знает, что ему надо в качестве начальногго значения, а тут предложили вместо ворнинга инициализацию сделать - ну так компилятор тупой ведь.
OW (2011-08-26 11:00:00) [10]
> sniknik © (26.08.11 10:51) [44]
> вместо "нулевого" интерфейса из объекта nil
батонокидатель не получит никак :). Он батонокидатель.
либо - либо.
Либо сам, либо готовься к возможным проблемам, доверяя все сделать компилятору самому.
Серьёзные люди конечно будут сами, но и простенькие вещи пусть будут автоматом.
Может какой {$TrustCompile+} ввести..
Пишешь, пишешь, а тут такой - оп!
{$TrustCompile-} // вряд ли дальше компилятор поймет
Пишешь, пишешь
{$TrustCompile+} // далее фигня, понять должен
Inovet (2011-08-26 10:53:00) [11]> [34] Дмитрий С © (26.08.11 05:12)
> и так что компилятор не догадается. Например
> A := A xor A;
Да кудп ему, его разработчикам сирым и убогим - они же только константы за инициализацию считают, а значёк ":=" не для их скудных умишек.
Омлет (2011-08-26 10:52:00) [12]> Inovet © (26.08.11 10:50) [42]
> Чем её инициализировать компилятор не знает
Есть соглашения. По тем же полям объекта, к примеру.
Числа - в ноль, объекты - в nil, строки - в '' и т.д.
sniknik (2011-08-26 10:51:00) [13]OW © (26.08.11 10:38) [41]
в С так неправильным приведением типов - варнинг/ошибка... и знаешь сколько с этим проблем? (я как то вместо "нулевого" интерфейса из объекта nil получал, и кучу уверений типа "ваша дельфя нифига не понимает"). блин, единственное к чему это привело (имхо, только таких С-шников и вижу) это к полному игнору варнингов, а переключится на контроль со стороны компилятора и явную ошибку, не дает завышенная самооценка.
Омлет (2011-08-26 10:50:00) [14]> sniknik © (26.08.11 10:23) [40]
> ты наверное менеджер?
А ты, наверное, меня неправильно понял ))
"Ещё можно ходить спиной вперед."- это была ирония в ответ на способ объявления инициализации переменной "A := A xor A;"
Т.е. так делать можно, но это будет странно, неудобно и даже опасно. Компилятор не обязан распознавать такую инициализацию как безопасную также, как и светофор не обязан стучать по голове спинойвпередходящим.
Inovet (2011-08-26 10:50:00) [15]> [27] DiamondShark © (25.08.11 23:59)
> 2. Компилятор генерирует инициализацию.
Чем её инициализировать компилятор не знает = мусор оставить?
OW (2011-08-26 10:38:00) [16]на правах Компромиса (с)
имхо, надо настройку сделать в delphi.
Чекбокс "я батонокидатель".
и все. Кажется компилятору, что правильно обнулить - пусть нулит.
Чекбокс "я батонокидатель". - > OFF - только ругается.
sniknik (2011-08-26 10:23:00) [17]что это меняет для вопроса как?
ты наверное менеджер? или в "их вере"... они тоже когда им говорят о технической невозможности реализации чего то, вместо изменения условий/логики с оставлением цели "в общем" начинают "уговаривать", типа клиент важный, мы уже договорились, и как всем будет хорошо если это сделать...
врут конечно, почти всегда, по всем пунктам, но зато, им понимать ничего не нужно, и всегда программист виноват "не захотел делать". хотя напрямую с заказчиком практически всегда находится компромисс.
Омлет (2011-08-26 10:04:00) [18]> sniknik © (26.08.11 09:52) [38]
> и???
И тогда можно будет всем не знать правил )
sniknik (2011-08-26 09:52:00) [19]> Ещё можно ходить спиной вперед.
и как ты будешь делать защиту от "ходящих вперед"? тут же это пример почему не сработает...
вот дадут, с "легкой руки", кому нибудь разработать светофор не только показывающий состояния, для знающих правило, но предупреждающий аварии тех кто знать их не желает...
и???
Anatoly Podgoretsky (2011-08-26 09:43:00) [20]> Дмитрий С (26.08.2011 05:12:34) [34]
Неужели не догадается, что A := это инициализация?