вы можете использовать
$ar = (array) $get_user;
, тогда вы можете получить доступ к их индексам:
echo $ar[0];
Я просто пошел бы прямо для рефакторинга в меньшие методы. Если метод является достаточно большим, что ему нужно разбивание как это, ему действительно нужно разбивание в несколько методов если во всем возможный.
При ограничении объема хорошо, это не действительно, для чего именованные блоки. Это неидиоматично, который является очень редко хорошей вещью.
Если это было плохо, то, почему это функция на языке! Это имеет цель, и Вы нашли его.
я часто пишу код точно как в Вашем примере. Когда Вы хотите инициализировать переменную, и существует немного вычисления, для которого нужно выполнение для разработки то, чем это должно быть, и это включает несколько переменных... тогда, Вы не хотите те переменные, бродящие вокруг для всего объема Вашей функции, тогда немного объема для содержания инициализации работает отлично.
Мини-объемами является простой способ повредить код в 'абзацы'. Если Вы разделяете на методы, можно сделать код тяжелее для навигации, когда те методы ниоткуда еще не становятся названными и имеют последовательный вид порядка, в котором они должны быть выполнены.
Это всегда - баланс, но если Вы думаете, что будет самым легким поддержать, и это на самом деле увеличивает стоимость будущего читателя Вашего кода, если все встраивают, то пойдите для него.
нет никаких жестких правил. Я немного иногда устаю от коллег, которые чрезмерно поместили все в его собственный метод или класс или файл, и это становится кошмаром для навигации. Где-нибудь существует хороший баланс!
Используя блоки для ограничения объема хорошая техника в моей книге.
, Но так как Вы используете маркировку, чтобы сделать работу комментария, почему не только используют фактический комментарий вместо этого? Это удалило бы беспорядок о не имеющей ссылки маркировке.
Иногда я использую блоки без имени для изоляции изменяемых вещей, должен был подготовить некоторую неизменную вещь. Вместо того, чтобы иметь маркировку я подверг Блок неизменному объявлению переменной.
final String example;
{
final StringBuilder sb = new StringBuilder();
for(int i = 0; i < 100; i++)
sb.append(i);
example = sb.toString();
}
, Когда я нахожу некоторое другое использование для блока, или просто думаю, что это находится в пути, я превращаю его в метод.
Это - 1-й раз, когда я вижу, что кто-то еще использует блоки. гмм! Я думал, что был единственным. Я знаю, что не изобрел его - не забыл читать его где-нибудь - возможно от моего предыдущего мира C++.
я не использую маркировки, хотя и просто комментируют, что я делаю.
я не соглашаюсь со всеми парнями, которые просят, чтобы Вы извлекли его в метод. Большинством вещей, которые мы надеваем в таких блоках, не являются действительно допускающие повторное использование блоки. Это имеет смысл в большой инициализации И ДА, я использовал блоки для предотвращения СКОПИРОВАТЬ/ВСТАВИТЬ ошибок.
BR,
~A
Просто, потому что они существуют, не означает, что они должны использоваться. Большинство преимуществ, полученных от использования именованных блоков, лучше получено при помощи нового закрытого метода.
В дополнение к этим преимуществам, Вы также извлекаете пользу повторного использования кода, и это сократит Ваши длинные методы.
Если у Вас есть 5-10 строк кода, который может безопасно быть помещен в блок как этот, тот же код мог точно также быть извлечен в метод.
Это могло бы казаться, что это - только семантическое различие, но по крайней мере с извлечением в метод тогда Вы получили бы выгоду от способности повторного использования.
Это - хорошая техника в моей книге. Управление большими количествами холостых методов является злым, и причины, Вы предусматриваете именование блоков, хороши.
, На что похож сгенерированный байт-код? Это было бы моим единственным колебанием. Я подозреваю, что это снимает имя блока и могло бы даже извлечь выгоду из большей оптимизации. Но необходимо было бы проверить.
Я сделал это в некоторых моих c#. Я не знал, что Вы могли назвать блоки, хотя, я должен буду попробовать, которые видят, работает ли это в c# также.
я думаю, что блок объема может быть хорошей идеей, потому что можно инкапсулировать код, характерный для чего-то в блоке кода, где Вы не могли бы хотеть разделять его на его собственную функцию.
Что касается недостатка вложения их, я рассматриваю что как большее количество отказа программиста не самих блоков объема.
Названные объемы технически в порядке здесь, это просто, они не используются таким образом очень часто. Поэтому, когда кто-то еще приезжает для поддержания кода в будущем, не может быть сразу очевидно, почему они там. По моему скромному мнению, частный вспомогательный метод был бы лучшим выбором...
Я использовал бы блок с комментарием, довольно добавляющим маркировку там.
, Когда я вижу маркировку, я не могу предположить, что ничто иное не ссылается на блок.
, Если я изменяю поведение блока, тогда имя маркировки не может больше быть соответствующим. Но я не могу просто протянуться и изменить его: я должен буду просмотреть остальную часть метода для определения, какая маркировка обращается к блоку. В которой точке я выясню, что это - не имеющая ссылки маркировка.
Используя комментарий более ясно в этом экземпляре, потому что он описывает поведение блока, не налагая дополнительной работы со стороны специалиста по обслуживанию.