UWP. Как найти уже спаренные устройства, но которые сейчас в режиме обнаружения?

Возьмем крайний случай: целочисленные константы. Если я напишу заявление типа «x = x + 1», я хочу быть на 100% доверенным, что число «1» не будет каким-то образом становиться 2, независимо от того, что происходит в другом месте программы.

Теперь okay, целочисленные константы не являются классом, но концепция одинаков. Предположим, что я пишу:

String customerId=getCustomerId();
String customerName=getCustomerName(customerId);
String customerBalance=getCustomerBalance(customerid);

Выглядит достаточно просто. Но если строки не были неизменными, тогда мне пришлось бы учитывать возможность того, что getCustomerName может изменить customerId, так что, когда я вызываю getCustomerBalance, я получаю баланс для другого клиента. Теперь вы можете сказать: «Почему в мире кто-то, пишущий функцию getCustomerName, изменит идентификатор? Это не имеет смысла». Но это именно то, где вы можете попасть в беду. Человек, написавший вышеуказанный код, может считать это просто очевидным, что функции не изменят параметр. Затем приходит кто-то, кто должен изменить другое использование этой функции, чтобы обрабатывать случай, когда клиент имеет несколько учетных записей под тем же именем. И он говорит: «О, вот эта удобная функция имени getCustomer, которая уже ищет имя. Я просто сделаю это, чтобы автоматически изменить идентификатор на следующую учетную запись с тем же именем и поставить ее в цикл ...» И то ваша программа начинает таинственно не работать. Будет ли это плохой стиль кодирования? Вероятно. Но это точно проблема в тех случаях, когда побочный эффект НЕ очевиден.

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

( Конечно, пользователь может назначить переменную «постоянный объект» для переменной. Кто-то может написать String s = «hello», а затем написать s = «goodbye»; если я не сделаю переменную final, я не могу быть уверен, что он не изменяется в моем собственном блоке кода. Как и целочисленные константы, заверить меня, что «1» всегда совпадает с номером, но не «x = 1» никогда не будет изменен, написав «x = 2». быть уверенным в том, что если у меня есть дескриптор неизменяемого объекта, то никакая функция, которую я передаю, не может изменить его на мне, или что если я сделаю две копии этого, то изменение переменной, содержащей одну копию, не изменит другую И др.

0
задан KilatiF 18 January 2019 в 14:30
поделиться