когда передать параметр и когда использовать переменную экземпляра

Невозможно запустить автозапуск в мобильных браузерах. (Это недопустимо)

Но некоторые трюки делают это.

Нажмите на ссылки ниже, чтобы просмотреть некоторые трюки

Автовоспроизведение аудио на мобильном сафари

Особенности iOS | Атрибут Loop

84
задан GEOCHET 3 March 2009 в 22:51
поделиться

5 ответов

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

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

  • Локальные переменные используются в рамках методов, чтобы помочь им завершить свою работу. Обычно, метод должен иметь цель получить некоторые данные, возвращая некоторые данные и/или proccessing/running алгоритм на некоторых данных. Иногда, это помогает думать о локальных переменных как о способах помочь методу добраться с начала до конца.

  • объем Переменной экземпляра не только для безопасности, но и для инкапсуляции, также. не предполагают, что "цель должна состоять в том, чтобы сохранить все переменные частными". В случаях наследования, делая переменные, как защищено обычно хорошая альтернатива. Вместо того, чтобы отмечать всю общественность данных экземпляра, Вы создаете методов get/методы set для тех, к которым нужно получить доступ к внешнему миру. Не делайте их всех доступными - только те Вам нужно. Это прибудет в течение жизненного цикла разработки - трудно предположить с самого начала.

Когда дело доходит до передающих данных вокруг класса, трудно сказать, что Вы делаете, хорошая практика, не видя некоторый код. Иногда, работа непосредственно на данных экземпляра прекрасна; другие времена, это не. По-моему, это - что-то, что идет с опытом - Вы разработаете некоторую интуицию, когда Ваши объектно-ориентированные навыки мышления улучшаются.

48
ответ дан Tom 5 November 2019 в 16:24
поделиться

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

, Когда Ваш список переменных становится слишком длинным, возможно, это - положительная сторона для размышления о рефакторинге некоторых частей класса в новый класс.

43
ответ дан Jonathan Leffler 5 November 2019 в 16:24
поделиться

По-моему, переменные экземпляра только необходимы, когда данные будут использоваться через вызовы.

Вот пример:

myCircle = myDrawing.drawCircle(center, radius);

Теперь позволяет обработке изображений myDrawing использования класса, для 15 функций помощника для создания объекта myCircle и каждой из тех функций будут нужны центр и радиус. Они все еще не должны быть установлены как переменные экземпляра myDrawing класса. Поскольку они никогда не будут необходимы снова.

, С другой стороны, myCircle класс должен будет сохранить и центр и радиус как переменные экземпляра.

myCircle.move(newCenter);
myCircle.resize(newRadius);

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

Так в основном, переменные экземпляра являются способом сохранить "состояние" объекта. Если переменная не необходима для знания состояния объекта, то это не должна быть переменная экземпляра.

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

19
ответ дан ng.mangine 5 November 2019 в 16:24
поделиться

По моему скромному мнению:

, Если переменная является частью состояния экземпляра, то это должна быть переменная экземпляра - classinstance ИМЕЕТ - instancevariable.

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

Hope это помогает

4
ответ дан brabster 5 November 2019 в 16:24
поделиться

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

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

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

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

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

3
ответ дан Yuval Adam 5 November 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: