Пример глобального метода:
import utils.assets.getTexture(); // Импорт глобального метода
public function Main()
{
var texture:Texture = getTexture("myTexture.png");
}
Я считаю, что это нарушает принципы ООП, усложняет дебаг расширяя стек при ошибках, и вообще — непрофессионально и по-дилетантски.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (10)
MaximChistov
26.08.2015 09:54Удачи в тестировании таких методов когда они еще внутри себя другие статические зовут :D
decore
26.08.2015 10:02-2В использовании глобальных методов нет ничего плохого. Например, есть проект, где в десятке классов существуют методы с одинаковым названием. Можно запутаться и накосячить, но есть неймспейсы, которые изолируют их друг от друга. Я стараюсь не использовать глобальных методов, но если придется вызвать метод типа: App.Networks.Connections.Protocols.HTTP.GetPort()? Иногда вызов таких методов в коде, на каждой третьей строке. И читать такой код, одно «наслаждение». Так что к использованию глобальных методов нужно просто правильно подходить.
Crash512 Автор
26.08.2015 10:12App.Networks.Connections.Protocols.HTTP.GetPort()
Это и есть тот самый «крайний случай».
SergeyGrigorev
26.08.2015 10:02В обычном коде не применяю никогда, но вот в юнит-тестах, повсюду импортированы методы.
Например
import static org.testng.Assert.*,
и затем в коде тестов
assertTrue(tokenizer.hasMoreElements());
assertEquals(tokenizer.nextElement(), «test1»);
dim_s
26.08.2015 10:18На счет тестирования статических методов, для Java например есть либы, которые умеют делать моки и для статики. Я использую статические методы в основном для утилитных классов или как дополнительные статические методы-конструкторы для класса.
MaximChistov
26.08.2015 10:36есть либы, которые умеют делать моки и для статики
Вот только они в десятки-сотни раз медленнее того же мокито и ломают байткод
APXEOLOG
26.08.2015 10:31Всегда предпочитаю вариант
Assets.getTexture()
А вообще когда-то давно на хабре была статья, после которой я завел себе статический класс с util-функциями и использую его в большинстве проектов, периодически докладывая туда полезные функции, например
ALS.printObjects(Object… objs)
WeslomPo
Это же жесть в чистом виде. Метод который взялся ниоткуда и делает непонятно что. Без компилятора не разберешься.
Еще это идет в разрез используемого паттерна программирования в Unity, а приведённые в пример методы названы вопреки принятой конвенции.