Почему инструкции по платформе .NET рекомендуют не использовать касательно / аргументов?

Когда это происходит? Это после нажатия кнопки или до? если это после того, как вы хотите установить все атрибуты диалогового окна, прежде чем его надувать. Поместите код:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

перед:

setContentView(R.layout.activity_dialog)

РЕДАКТИРОВАТЬ: у меня была та же проблема всякий раз, когда диалоговое окно было отменено, я обнаружил, что в моем случае контекст приложения был null каждый раз, когда это происходило.

9
задан pb2q 15 May 2013 в 05:40
поделиться

10 ответов

Вы видели, касательно / скольких действительно не понимают разработчики?

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

13
ответ дан 4 December 2019 в 10:06
поделиться

По-моему, их считают запахом кода потому что в целом существует много более оптимального варианта: возврат объекта.

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

  • возврат класса означал бы упаковывать тип значения
  • контракт метода требует, чтобы это, чтобы быть быстрым, и таким образом упаковывая/распаковывая не был жизнеспособный вариант.
5
ответ дан 4 December 2019 в 10:06
поделиться

касательно / автоматически переменчивости средств и функционального программирования с неизменными значениями весь гнев в эти дни. Попытайтесь вставить вызов в Словарь. TryGetValue в запрос LINQ. API требует объявления переменных и разрушает любую 'беглость' в API.

Но это вовсе не значит это - "причина", но это - пример "причины".

(См. также

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!181.entry

для комментария относительно того, как функциональные языки имеют дело с такими API.)

2
ответ дан 4 December 2019 в 10:06
поделиться

Причиной, которую мне сказали, являются 1,0 GC, имел проблемы, когда касательно / использовался. GC в 2,0 (и вероятно не 1.1 любой) не имеет тех проблем, таким образом, я обычно предполагал бы, что это - теперь неполезное наследие.

0
ответ дан 4 December 2019 в 10:06
поделиться

касательно / также не работают с делегатами "Func", таким образом, эти API стиля менее компонуемы/допускающие повторное использование с некоторыми другими API то использование делегаты.

1
ответ дан 4 December 2019 в 10:06
поделиться

@TraumaPony было бы хорошо, если Вы даете нам источник (URL или что-то) к этой платформе.NET инструкции.

0
ответ дан 4 December 2019 в 10:06
поделиться

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

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

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

2
ответ дан 4 December 2019 в 10:06
поделиться

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

Customer GetCustomerById(int id, out string errorMessage);

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

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

1
ответ дан 4 December 2019 в 10:06
поделиться

Необходимо возвращаться, объекты, вероятно, наиболее вероятная причина, что они предлагают не использовать касательно или.

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

-1
ответ дан 4 December 2019 в 10:06
поделиться

Разве сложность кода не, рассуждают достаточно? Сравните:

int myValue;
ReadFromSomewhere(ref myValue);

Кому:

int myValue = ReadFromSomewhere();
-2
ответ дан 4 December 2019 в 10:06
поделиться
Другие вопросы по тегам:

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