Статические методы в классе - хорошо в этой ситуации?

Вы можете закрыть навигатор ящика, используя this.props.navigation.closeDrawer().

Docs

7
задан Bill Martin 21 January 2009 в 18:18
поделиться

7 ответов

Этого не произойдет. Когда метод является Статическим (или Общим в VB.NET), затем Вы в безопасности, пока метод ни на что не полагается кроме исходных данных для понимания чего-то. Пока Вы не изменяете общедоступных переменных, или отовсюду еще возражает, Вы в порядке.

7
ответ дан 6 December 2019 в 11:53
поделиться

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

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

1
ответ дан 6 December 2019 в 11:53
поделиться

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

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

4
ответ дан 6 December 2019 в 11:53
поделиться

ASP.net действительно использует все виды объединения потока под капотом, которое может сделать статические методы и поля рискованными.

Однако можно избежать большинства проблем поточной обработки со статическим методом только при помощи локально ограниченных по объему переменных в том методе. Тем путем каждый поток (пользователь) будет иметь их собственную копию в оперативной памяти всех переменных используемой.

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

3
ответ дан 6 December 2019 в 11:53
поделиться

Выдавание исключения не является хорошей практикой, поскольку оно делает время выполнения .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{}
}

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

2
ответ дан 6 December 2019 в 11:53
поделиться

Возможно, лучше использовать public static void Authenticate(string, string) который выдает исключение, если что-то идет не так, как надо (return false в исходном методе)?

Это - хороший стиль.NET. Тип возврата булевой функции является стилем C и является устаревшим.

0
ответ дан 6 December 2019 в 11:53
поделиться

Почему у вас нет класса пользователя с именем пользователя и паролем и метода, который называется authenticate?

0
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

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