От поразрядных Флагов отказываются? [закрытый]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

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

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
20
задан Tim Lytle 28 February 2010 в 20:37
поделиться

8 ответов

Я высуну шею и скажу, что каждое техническое положение требует четкого понимания битовых операций.

И у меня есть история, которая косвенно обращается к теме.

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

, Когда я обсудил свой подход с индийским парнем HR, меня (мягко) упрекнули за подачу слишком низко. Он прояснил, что мои вопросы о шестнадцатеричном числе будут возможно истолкованы как оскорбление опыта кандидатов или образования.

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

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

, Поскольку интервью прогрессировали, я был рад, что запустил на том уровне. Это не оскорбляло никого, и неподходящие кандидаты были легко идентифицированы.

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

, Но для разработчиков, начинающих за прошлые пять лет, я полагаю, что слишком легко замять основные принципы, избалованные хорошо умышленными IDE и мемом программирования "codeless". Установка Visual Studio spash экранирует хвастовство о разработке без написания кода. Действительно, Visual Studio гниет ум ?

13
ответ дан 29 November 2019 в 23:20
поделиться

Битовые операции примерно не сохраняют память. Они действительно полезны для написания кода разъединения. Который Вы видели бы?

OpenFile("...", true, false)

или

OpenFile("...", writeonly | append)

Это - своего рода бессмысленный/тривиальный пример, но Вы получаете идею.

10
ответ дан 29 November 2019 в 23:20
поделиться

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

Это - умирающее искусство, которое я говорю Вам...

12
ответ дан 29 November 2019 в 23:20
поделиться

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

, Если Вы не делаете встроенное программирование или что-то подобное, Вам не нужны они. Существует намного больше читаемых, мощных, расширяемых механизмов для выполнения той же задачи. Например, EnumSets Java.

я ожидал бы, что хороший программист будет знать их и не использовать их :-p

2
ответ дан 29 November 2019 в 23:20
поделиться

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

, О, и для записи, я действительно знаю, как использовать их.

7
ответ дан 29 November 2019 в 23:20
поделиться

"Много" довольно универсально, мы хотим имена! ;-)

Серьезно, я происхожу из ассемблера и C, и я являюсь довольно опытным с битовыми операциями. Но я не использовал бы их, чтобы заменить, сказать 10 несвязанных булевских переменных в классе с двоичными флагами в целом числе... Если, возможно, у меня нет миллионов экземпляров этого класса!

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

Теперь, побитовая обработка fu почти обязательна в программировании, если Вы захотите получить доступ к компонентам RGB к значениям, если Вы захотите назвать некоторые API (даже если это будет просто осуществлением операции ИЛИ много именованных флагов), и т.д.

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

2
ответ дан 29 November 2019 в 23:20
поделиться

Я все еще использую побитовые операторы, хотя, поскольку мой основной предпочтительный язык (и профессионально) является C#, я часто использую перечисления Флага для него :) Но да, я думаю много людей, которые кодируют в вещах как PHP, выучились самостоятельно, и не знают о битовых операциях или использованиях их.

Являющийся выучившимся самостоятельно самостоятельно, я не знал много о них, пока я не начал писать код C++ и C. Теперь я использую их, где они имеют смысл :)

0
ответ дан 29 November 2019 в 23:20
поделиться

У них всегда есть место для хранения большого количества булевых флагов в небольшом количестве пространства;

Просто думают, есть ли у Вас 32 флага (например); Вы могли сохранить их всех в одном "длинном целом" и просто израсходовать 4 байта, Теперь предположить, что приняли решение использовать длинное для каждого флага (просто, потому что код легче поддержать - Вы теперь заставили 128 байтов иметь дело с.

Моим образованием является, прежде всего, C/C++, таким образом, я воспитывался на них так, я определенно использую их на каждом языке, который я использую; но я действительно соглашаюсь; программисты новичка склонны даже не заботиться - вся эта память, лежащая вокруг - кто заботится?

0
ответ дан 29 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

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