Вы можете закрыть навигатор ящика, используя this.props.navigation.closeDrawer()
.
Этого не произойдет. Когда метод является Статическим (или Общим в VB.NET), затем Вы в безопасности, пока метод ни на что не полагается кроме исходных данных для понимания чего-то. Пока Вы не изменяете общедоступных переменных, или отовсюду еще возражает, Вы в порядке.
В то время как я вижу значение статического метода в отношении воспринятого увеличения производительности, я полагаю, что реальная проблема вот - стоят ли усиления (и риски) клуджа обслуживания и слабости безопасности, которую Вы потенциально создаете. Я полагаю, что большинство людей предупредило бы Вас далеко от обеспечения открытого метода, который принимает удостоверения пользователя и возвращает успешность или неуспешность. Это потенциально предоставляет легкому метод для взламывания.
Так, моя точка является философской. Иначе я соглашаюсь с другими, которые указали, что ограничение кода для использования локальных переменных должно гарантировать, чтобы у Вас не было проблем с побочными эффектами из-за параллельного доступа метода, даже на различных потоках, т.е. если Вы вызываете метод на поток ThreadPool.
Статический метод состоит очень хорошо в том, пока он не использует ни одних из персистентных данных между последовательными вызовами. Я предполагаю, что Ваш метод просто выполняет запрос на базе данных и возвращает true на основе этого.
В этом сценарии я думаю, что статический метод должен работать без проблемы, независимо от того, сколько вызовов Вы выполняете к нему.
ASP.net действительно использует все виды объединения потока под капотом, которое может сделать статические методы и поля рискованными.
Однако можно избежать большинства проблем поточной обработки со статическим методом только при помощи локально ограниченных по объему переменных в том методе. Тем путем каждый поток (пользователь) будет иметь их собственную копию в оперативной памяти всех переменных используемой.
При использовании выше ограниченных по объему переменных удостоверьтесь, что сделали весь доступ к ним сознательным поток.
Выдавание исключения не является хорошей практикой, поскольку оно делает время выполнения .NET для создания дополнительной инфраструктуры для ловли их. Для проверки это создает класс и и заполняет его с некоторыми случайными значениями с помощью цикла. Заставьте цикл выполнить итерации для большого счетчика как 10 000. Запишите время, которое требуется для создания списка. Теперь включите создание экземпляра в попытку.. блок выгоды и запись время. Теперь, Вы видите исключительно значительные различия.
например,
for(int i=0; i<10000; i++){
Employee emp = new Employee();
emp.Name = "Random Name" + i.ToString();
}
По сравнению с
for(int i=0; i<10000; i++){
try{
Employee emp = new Employee();
emp.Name = "Random Name" + i.ToString();
}catch{}
}
Хотя нет никакого фиксированного решения, выдать ли исключение или нет, это - лучшая практика, чтобы создать альтернативные потоки в Вашей программе и обработать каждое условие с надлежащими возвращаемыми значениями. Исключения должны быть выданы только, когда ситуация может быть выровнена по ширине как исключительная.
Возможно, лучше использовать public static void Authenticate(string, string)
который выдает исключение, если что-то идет не так, как надо (return false
в исходном методе)?
Это - хороший стиль.NET. Тип возврата булевой функции является стилем C и является устаревшим.
Почему у вас нет класса пользователя с именем пользователя и паролем и метода, который называется authenticate?