Различия между созданием переменных вне конструктора и в - PullRequest
0 голосов
/ 19 декабря 2010

Я должен решить, помещать ли переменную внутри конструктора или снаружи, но у меня все время возникает ощущение, что мне не хватает информации, я смотрел другие посты о переполнении стека, но все упоминали, что это вопрос предпочтений,тем не менее я обнаружил две разницы, которые, по моему мнению, могут быть важны:

-Если я решу поместить переменные в конструктор, тогда у меня должен быть параметр объекта для любой функции, которая желает изменить переменные, даже есликод является внутренним для класса.

- Подклассификация приведет к тому, что переменные не появятся, что вызывает проблемы, когда класс и любые подклассы должны иметь переменные для правильной работы.

Я могу ошибаться по всем этим пунктам, но в 4 часа утра мне скорее скажут, что я неправ, чем совершить ошибку из-за гордости.Если на этот вопрос ответили где-то еще, и я пропустил его, извините, и если вы могли бы опубликовать ссылку, я был бы признателен.

Ответы [ 3 ]

0 голосов
/ 19 декабря 2010

Как уже говорилось в www0z0k, объявления вне конструктора интерпретируются в достаточной мере, поэтому их объявление за пределами может стать причиной потери производительности при некоторых обстоятельствах.

-Если я решу поместить переменные в конструктор, тогда у меня должен быть параметр объекта для любой функции, которая желает изменить переменные, даже если код является внутренним для класса.

Это правильно.

- Подклассификация приведет к тому, что переменные не появятся, что вызывает проблемы, когда класс и любые подклассы должны иметь переменные для правильной работы.

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

Привет,

iuiz

0 голосов
/ 24 декабря 2010

- Подклассификация приведет к тому, что переменные не появятся, что вызывает проблемы, когда у класса и любых подклассов должны быть переменные, чтобы они работали должным образом.вы ищете защищенные поля (или свойства) .

-Если я решу поместить переменные в конструктор, тогда я должен иметь объектный параметр для любой функции, которая хочет изменить переменные, даже если код является внутренним для класса.

Извините, я не понимаю ...

@ Производительность: с учетом всего сказанного о интерпретируемых конструкторах вы можете добавить в свой конструктор простую функцию init (...), которая делает все, что вы делаете в конструкторе, - но без интерпретации.

public function ConstructorOfClass(arg1:int, arg2:*)
{
    init(arg1, arg2);
}

private function init(arg1:int, arg2:*):void
{
    // do whatever you want here
}
0 голосов
/ 19 декабря 2010

действия внутри конструктора интерпретируются, все остальные прекомпилируются, поэтому они работают быстрее

...