![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Название темы слегка идиотское, но я правда не знаю как назвать её лучше.
wxvxw говорил как то, что конструкторы должны содержать минимум логики, потому что они не кешируются (или что-то в этом духе). Пожалуйста, объясни это ещё раз и откуда ты это узнал. ) Вопрос темы смежный с предыдущим: в code convention сказано, что значения у полей класса лучше объявлять сразу же вместе с определением. Например: private var _maskShape:Shape; public function ClassConstructor(){ _maskShape=new Shape(); //неправильно } private var _maskShape:Shape; public function ClassConstructor(){ _maskShape=new Shape(); super(); } Раз оно создается в конструкторе, а код из конструктора стоит выносить - то я нарушал конвенцию и инициализировал переменные в методе init. Но недавно стал задумываться, что же на самом деле там обстоит и полез смотреть abc код. При задании переменных "руками" в конструкторе всё четко и понятно. Мистика творится при задании как раз по "правильному" примеру. Дело в том, что простые типы не определяются там вообще. Сложные типы, например Object - честно создаются в конструкторе, всё хорошо. Но переменные, например, типа String и int просто напросто отсутствуют. Нет, они конечно в ролике присутствуют, как и их значения, но нигде в явном виде им не присваивается их значения. Это, конечно, очень круто, что это дело транслируется красиво, но я слабо в это верю. Интересует комментарий от компетентных людей.) Однако, я был прав хотя бы насчет сложных типов - они объявляются в конструкторе. И вот всплывает вопрос - как стоило бы эти переменные объявлять? Как их объявляете Вы?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Цитата:
А вот значение им я присваиваю в конструкторе или методе. Для меня всегда было логичней так: в классе только объявление, а выполнение начинается с конструктора. Как-то так.А что за мода у всех пошла, байт-код смотреть? Это что так интересно? |
|
|||||
|
MrPoma, про моду ничего не знаю.
![]() Умный человек сказал что ненужно в конструкторе писать код лишний, а с другой стороны в конверсии сказано что код нужно писать вон там. Я сходу не смогу сказать, куда компилируется этот самый код с верхушки и правду можно найти только в байткоде. Помоему, в этом нет ничего плохого. И на самом деле да, очень интересно =)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Маз можно придумать много, суть одна)
Скорее наиболее главный вопрос - это почему же большой конструктор это плохо и действительно ли это плохо. Остальные - подняты как околотрейдовые и их следовало бы задать чтобы навести тех, кто принимает участие в вопросе на должные мысли. Ну, как то так. UPD: постой, wvxvw, т.е. с точки зрения производительности разницы нет? Вынос в отдельный метод, по сути, служит для ускорения компиляции? Тогда если так, почему в каком то продукте от Adobe, в котором анализировался код и искались потенциальные "кривости" кривостью было помечено "избыточный код в конструкторе". По тем же соображениям? Или избыточный в "логическом" смысле? Столько вопросов, рррр..)
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 30.08.2010 в 23:45. |
|
|||||
|
Modus ponens
|
Нет, с конструктором фишка в другом. JIT компилятор каждый раз компилирует конструктор повторно. Я не знаю чем это вызвано, но так вот работает.
__________________
Hell is the possibility of sanity |
|
|||||
|
.
|
Сслыка на источник будет?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|