AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2009, 12:17   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Это же не айс.
Ну, почему же?
Это ограничивает область видимости. И решает проблему использования переменной ЗА областью видимости
Страустрап: http://htw.narod.ru/C/intro/gl2.htm#gl2.1.1
__________________
полезное на axForum, github, vk, coub.
Старый 12.10.2009, 12:33   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Страустрапу не зачёт за такой код.
Он бы ещё в цикле пустил инициализацию.
В Аx-e более менее всё нормально с утечкой памяти в отличии от ранних версий VC(6.0 на других не работал).
Ну и спрашиваеться нужно ли оно.
Тем более просто так, такие вещи не даются.
Выделил память, кто же должен её освободить. Значит лишние телодвижения за кадром.
Или она так и висит пока класс не отработает.
Пиши не большие методы и с видимостью будет всё нормально.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.10.2009, 12:46   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Он бы ещё в цикле пустил инициализацию.
И в цикле...
Инициализация - это не только обнуление. Инициализация - это еще и вызов конструктора.
Таким образом, объявление и инициализация максимально приближены друг к другу.
А вызов деструктора выполняется при выходе из области видимости.

В результате получается очень ожидаемое поведение.
И снижается риск использования неинициализированной переменной.
Даже в маленьких методах.
__________________
полезное на axForum, github, vk, coub.
Старый 12.10.2009, 12:58   #4  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от mazzy Посмотреть сообщение
И в цикле...
Инициализация - это не только обнуление. Инициализация - это еще и вызов конструктора.
А таким образом объявление и инициализация максимально приближены друг к другу.
А вызов деструктора выполняется при выходе из области видимости.
Ну хорошо бы если бы это было так.
В С++ 6.0 в зависимости от конструкций или воровали чужую ящейку или работали со следующими.
В результате чуть зазеваешься и получались такие чудеса.
Цитата:
Сообщение от mazzy Посмотреть сообщение
В результате получается очень ожидаемое поведение.
Даже в маленьких методах.
Ну и что, что ожидаемое. Сам же написал работают конструктор, деструктор. Это что правильно? Лишние команды на процесор кидать, плюс с памятью действия нужно делать.
Конструктор и деструктор думаю более употребимо в отношении классов.
А с переменными там что-то другое работает. (там более элементарные операции, названия этим действиям не видел)
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.10.2009, 13:11   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Сам же написал работают конструктор, деструктор. Это что правильно?
Дык, как напишешь.
Если переменную в начале объявить, то ничего не изменится.

А вот если область видимости переменной действительно ТОЛЬКО внутри цикла.
И внутри цилка она и так конструируется и уничтожается.
То, программисту меньше писать. И меньше ошибок с неинициализированной переменной ДО цикла и уничтоженной ПОСЛЕ цикла
__________________
полезное на axForum, github, vk, coub.
Старый 12.10.2009, 13:19   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
замечания для программистов С
Цитата:
...практически нет причин описывать локальную переменную не инициализируя ее, поскольку описание может появляться везде, где может стоять оператор, – не описывайте переменную, пока она вам не нужна.
http://lib.rus.ec/b/78907/read
__________________
полезное на axForum, github, vk, coub.
Старый 12.10.2009, 13:23   #7  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Да. То, о чем так долго говорили большевики, СВЕРШИЛОСЬ.
Только вот про розовый цвет он сказал.
А про то, что изменять ПРОИЗВОЛЬНО цвет операторов, инструкций, комментариев - не сказал.
Неужто опять зафиксируют эти ужасные зеленый красный синий?...
да еще добавят перламутровый для операторов?!
Старый 12.10.2009, 13:43   #8  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от ta_and Посмотреть сообщение
Только вот про розовый цвет он сказал.
А про то, что изменять ПРОИЗВОЛЬНО цвет операторов, инструкций, комментариев - не сказал.
Неужто опять зафиксируют эти ужасные зеленый красный синий?...
да еще добавят перламутровый для операторов?!
А на большее чего-то не хватает...

А ещё интересно, почему был выбран розовый цвет и вообще, расширение в сторону цветовой палитры, нежели инструментария...
Старый 12.10.2009, 13:28   #9  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от mazzy Посмотреть сообщение
Дык, как напишешь.
Я и говорю: Шкатулка Пандоры.
Пока не вляпаешься как нибудь, не узнаешь.
Вот если бы MS хотя бы в Best Practices внесла что-то вроде: Можно так то так то но не желательно, это может привести к тому то тому то. А может и не приведёт.
Ведь не напишут. А сами ещё в тихую будут писать как надо.
А начинаю с какой нибудь версии скажут: Улучшили редактор за счёт...
Узнают все только когда появится ветка на Axforum-e: Замеры производительности редактора кода Ax 2009 и Ax 6.0 или Глюки в Ax 6.0.
Хорошо бы конечно, что бы этого не было.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.10.2009, 16:39   #10  
brahma is offline
brahma
Участник
1C
 
278 / 80 (3) ++++
Регистрация: 01.12.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
А вызов деструктора выполняется при выходе из области видимости.
Это только для native C++. Для managed С++ (и остальных) деструктор вызовется когда GarbageCollector убьет объект. Или нужно самому вызывать деструктор.
Старый 13.10.2009, 19:33   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от konopello Посмотреть сообщение
Да конечно в некоторых местах AX такой способ даст преимущество, но данный способ объявления я бы строго регламентировал, без особой надобности и целесообразности не использовать.
Просто будут действовать нормальные правила рефакторинга
http://ru.wikipedia.org/wiki/%D0%A0%...B8%D0%BD%D0%B3
http://www.softkey.info/reviews/review5449.php
http://www.bolero.ru/product-2229394...1330c167a8b320
http://www.ozon.ru/context/detail/id/1308678/

Цитата:
Сообщение от brahma Посмотреть сообщение
Это только для native C++. Для managed С++ (и остальных) деструктор вызовется когда GarbageCollector убьет объект. Или нужно самому вызывать деструктор.
Да, для управляемых языков утверждение звучит немножко по-другому.
А вызов деструктора МОЖЕТ выполняться при выходе из области видимости.
__________________
полезное на axForum, github, vk, coub.
Старый 23.10.2009, 17:31   #12  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да, для управляемых языков утверждение звучит немножко по-другому.
А вызов деструктора МОЖЕТ выполняться при выходе из области видимости.
Фича еще в том, что деструктор-то МОЖНО вызвать, но память реально очистится только сборщиком мусора
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Developer for Microsoft Dynamics AX Certification Roadmap Blog bot DAX Blogs 1 13.05.2009 16:17
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 4.0 Bookshelf Blog bot Dynamics CRM: Blogs 1 22.01.2009 04:46
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:41.