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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2009, 12:11   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Инициализацию где хочешь в коде можно делать. Ужас.
Это же не айс. Код превращается в фиг знает что.
Это возможность хороша только для длинных методов.
Открывая эту шкатулку пандоры, они что хотят сказать да пишите наздоровье длинные методы.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.10.2009, 12:17   #2  
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   #3  
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   #4  
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   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от mazzy Посмотреть сообщение
И в цикле...
Инициализация - это не только обнуление. Инициализация - это еще и вызов конструктора.
А таким образом объявление и инициализация максимально приближены друг к другу.
А вызов деструктора выполняется при выходе из области видимости.
Ну хорошо бы если бы это было так.
В С++ 6.0 в зависимости от конструкций или воровали чужую ящейку или работали со следующими.
В результате чуть зазеваешься и получались такие чудеса.
Цитата:
Сообщение от mazzy Посмотреть сообщение
В результате получается очень ожидаемое поведение.
Даже в маленьких методах.
Ну и что, что ожидаемое. Сам же написал работают конструктор, деструктор. Это что правильно? Лишние команды на процесор кидать, плюс с памятью действия нужно делать.
Конструктор и деструктор думаю более употребимо в отношении классов.
А с переменными там что-то другое работает. (там более элементарные операции, названия этим действиям не видел)
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.10.2009, 13:11   #6  
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   #7  
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   #8  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Да. То, о чем так долго говорили большевики, СВЕРШИЛОСЬ.
Только вот про розовый цвет он сказал.
А про то, что изменять ПРОИЗВОЛЬНО цвет операторов, инструкций, комментариев - не сказал.
Неужто опять зафиксируют эти ужасные зеленый красный синий?...
да еще добавят перламутровый для операторов?!
Старый 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 Посмотреть сообщение
Да, для управляемых языков утверждение звучит немножко по-другому.
А вызов деструктора МОЖЕТ выполняться при выходе из области видимости.
Фича еще в том, что деструктор-то МОЖНО вызвать, но память реально очистится только сборщиком мусора
Старый 12.10.2009, 16:00   #13  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Инициализацию где хочешь в коде можно делать. Ужас.
Это же не айс. Код превращается в фиг знает что.
Во первых, если я правильно понял то речь не о инициализации, а о объявлении переменных в любом месте кода. Инициализацию мы и сейчас можем делать когда захотим, что в общем то правильно. Во вторых, если будет нормальный переход к "строке объявления", то никакой каши мы не получим. Неплохо бы еще было добавить "выведение типов". В конце концов, поскольку все это плавно движется в сторону .NET пора начинать привыкать к доступным там "фокусам".

Кстати, кмк, многие фичи X++, к которым мы так привыкли и которые нам нравятся, это следствие не продуманности языка, а то что Дамгаард 10 лет назад это далеко не Микрософт или Сан, т.е. не было у них таких ресурсов что бы спроектировать и реализовать полноценный Java подобный ЯП. Так что то, что X++ в том виде, в котором мы его видим сегодня, скорее необходимый минимум того, чем хотела наделить систему Датская компания. Более того, я думаю что совершенствование самого языка это новые шаги, в долгосрочной перспективе, целиком заменить его на C#. Правда, мне лично, очень интересно что будут делать со встроенным SQL? Я не разделяю оптимизм того бравого менеджера, который в видео про трансляцию p-кода в CLR, небрежно заявил: "что мол, у нас есть LINQ и встроенный SQL нам больше не нужен".

В общем, поживем увидим, но развитие это всегда хорошо, да и жить программистам будет веселей
За это сообщение автора поблагодарили: miklenew (2).
Старый 12.10.2009, 16:19   #14  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Lemming Посмотреть сообщение
не разделяю оптимизм того бравого менеджера, который в видео про трансляцию p-кода в CLR, небрежно заявил: "что мол, у нас есть LINQ и встроенный SQL нам больше не нужен".
Всттроенный SQL убогее LINQ, насколько я знаю. Что тебе не зватает в LINQ, что есть во встроенном SQL?
За это сообщение автора поблагодарили: Lemming (2).
Старый 12.10.2009, 16:19   #15  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Lemming Посмотреть сообщение
Во первых, если я правильно понял то речь не о инициализации, а о объявлении переменных в любом месте кода.
Да. По терминологии именно так. Инициализация всё же - это присвоение начальных значений.
Цитата:
Сообщение от Lemming Посмотреть сообщение
В общем, поживем увидим, но развитие это всегда хорошо, да и жить программистам будет веселей
Когда я перешёл с VC++ 6.0 на С++ Builder, я был просто счастлив на сколько всё проще работает. И части глюков уже не было. Были другие, но с ними легче бороться.
Когда перешёл с С++ Builder на Axapt-у, было тоже самое.
А щас что? Возвращаться назад. В страну невыученных уроков.
Если программистам среды хватает для реализации самых разных задач, зачем чё то выдумывать.
MS то понятно: Кручу - верчу, выиграть хочу.
Но вам Lemming за чем это?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.10.2009, 16:33   #16  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Но вам Lemming за чем это?
Just for fun, как и написано в предыдущем моем посте. А вот про LINQ2SQL я, походу, преждевременно ввязался в дискуссию Собственно, что служит поводом покурить эту технологию более глубоко.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 10:13.