Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Зануление переменных / 17 сообщений из 17, страница 1 из 1
14.02.2019, 13:06
    #39773808
grinn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Уважаемые специалисты.
В проекте сталкиваюсь с таким кодом:
Код: plsql
1.
2.
l_var_date   := NULL;
l_var_date   := l_date_status_changed + validity_duration;


Имеет ли смысл занулять переменные перед использованием?
...
Рейтинг: 0 / 0
14.02.2019, 13:20
    #39773816
grinn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Или перед повторным использованием..
...
Рейтинг: 0 / 0
14.02.2019, 13:39
    #39773829
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
grinn,

Смысла нет, но результат может быть разным.
...
Рейтинг: 0 / 0
14.02.2019, 13:43
    #39773834
grinn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Поясните, пожалуйста, в каких случаях?
...
Рейтинг: 0 / 0
14.02.2019, 13:48
    #39773837
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
grinnв каких случаях?Очевидно же. Результирующие значения будет отличаться, когда предизменение переменной влияет на результат присваемого выражения.
...
Рейтинг: 0 / 0
14.02.2019, 13:55
    #39773842
grinn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Если Вы имеете в виду
Код: plsql
1.
2.
l_var_date   := NULL;
l_var_date   := l_var_date + l_date_status_changed + validity_duration;


то это само собой.
Я имею в виду ситуацию, когда переменная не участвует в вычислении своего значения.
То есть, зануление переменной не имеет смысла? ОК, спасибо!
...
Рейтинг: 0 / 0
14.02.2019, 14:03
    #39773850
brzl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Это индус-код.
За строчку кода платят бабки
...
Рейтинг: 0 / 0
14.02.2019, 14:06
    #39773851
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
brzlЭто индус-код.
За строчку кода платят бабки

В теории да, но мы живем в реальном мире.

Инициализация переменных, позволяет отслеживать использование неинициализированных переменных. Ну или по крайней мере получать однозначную ошибку :)
...
Рейтинг: 0 / 0
14.02.2019, 14:07
    #39773852
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
grinnпеременная не участвует в вычислении своего значения1. Из приведенных фрагментов этого не следует. Переменная может участвовать в результате неявно.
2. Присвоение null литералом может в принципе препятствовать plsql-компиляции и этот "результат" отличается от без присвоения.
...
Рейтинг: 0 / 0
14.02.2019, 16:10
    #39773935
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
grinn,

Предполагаю, что зануление может иметь смысл (в зависимости от остального кода, конечно), если на второй строчке может вылететь исключение и тогда в неинициализированной переменной останется мусор
...
Рейтинг: 0 / 0
14.02.2019, 17:40
    #39773988
-gt-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
Кроик Семёнgrinn,

Предполагаю, что зануление может иметь смысл (в зависимости от остального кода, конечно), если на второй строчке может вылететь исключение и тогда в неинициализированной переменной останется мусор
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.
...
Рейтинг: 0 / 0
14.02.2019, 18:09
    #39774005
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
-gt- https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.

Ты не ту часть выделил жирным - медитируй над "every time a block or subprogram is entered".

SY.
...
Рейтинг: 0 / 0
14.02.2019, 19:40
    #39774077
-gt-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
SY-gt- https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.

Ты не ту часть выделил жирным - медитируй над "every time a block or subprogram is entered".

SY.
А над чем тут медитировать?

Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор.
То что инициализация переменных будет происходить каждый раз, при входе в plsql блок, была оставлена сознательно. Но как доп. информация, потому что основная мысль про значения, а не про моменты инициализации.
...
Рейтинг: 0 / 0
14.02.2019, 19:58
    #39774084
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
-gt-Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор. Кроик Семён некорректно обозначил предпосылку, но, возможно сам не осознавая, вывод указал верный. Незачем упорствовать насчет null.
...
Рейтинг: 0 / 0
14.02.2019, 20:37
    #39774110
-gt-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
-2--gt-Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор.
Согласен, не учел неявную инициализацию. Посыпаю голову пеплом
...
Рейтинг: 0 / 0
14.02.2019, 21:30
    #39774126
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
-gt-А над чем тут медитировать?


Mы понятия не имеем что есть l_var_date и что есть validity_duration. А l_var_date может быть, напрмер, глобальной переменной пакета a validity_duration функцией ее исользующей.

SY.
...
Рейтинг: 0 / 0
14.02.2019, 23:14
    #39774158
-gt-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зануление переменных
SY-gt-А над чем тут медитировать?


Mы понятия не имеем что есть l_var_date и что есть validity_duration. А l_var_date может быть, напрмер, глобальной переменной пакета a validity_duration функцией ее исользующей.

SY.
Мы действительно не имеет понятия, что есть l_var_date и что есть validity_duration.
Но Ваш пример, с функцией и глобальной пакетной переменной, не подходит. Вы невнимательно читали ветку 21809441
grinnЯ имею в виду ситуацию, когда переменная не участвует в вычислении своего значения.

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


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