GOTO в зле PHP? [закрытый]

Вы обычно не могли давать атрибуты экземпляра просто класс, по крайней мере, не инстанцируя класса. Можно получить атрибуты экземпляра, приведенные, пример, тем не менее, или класс приписывают, учитывая класс. Посмотрите 'осмотреть' модуль. Вы не можете получить список атрибутов экземпляра, потому что экземпляры действительно могут иметь что-либо как атрибут, и - как в Вашем примере - нормальный способ создать их состоит в том, чтобы просто присвоить им в __ init __ метод.

исключение - то, если Ваш класс использует слоты, который является фиксированным списком атрибутов, которые класс позволяет экземплярам иметь. Слоты объяснены в http://www.python.org/2.2.3/descrintro.html , но существуют различные ловушки со слотами; они влияют на расположение памяти, таким образом, множественное наследование может быть проблематичным, и наследование в целом должно принять слоты во внимание, также.

70
задан 3 revs, 3 users 67% 24 December 2009 в 21:48
поделиться

7 ответов

Если вы не программируете на ассемблере, GOTO всегда следует рассматривать так же, как и спасательный жилет самолеты: хорошо иметь их в наличии, но если вам нужно их использовать, значит, у вас большие проблемы.

143
ответ дан 24 November 2019 в 13:09
поделиться

Не могу поверить, что никто не опубликовал это :)

xkcd - goto

Конечно, PHP не компилируется ... Может быть, хищник будет преследовать вас при каждом посещении вашего сайта?

103
ответ дан 24 November 2019 в 13:09
поделиться

Как инженер-программист, я в основном работаю на "мэйнфреймах" и "больших корпоративных серверах" ... И наш повседневный язык (я имею в виду тот, который составляет 95% нашего базового кода) - это Cobol, который широко использует GOTO.

Это использование не означает, что код плохой. Это просто означает, что этот инструмент (GOTO) был правильным на момент написания программ.

Чтобы ответить на вопрос Кайцули, я думаю, что он может быть полезным инструментом при написании сценариев PHP. С другой стороны, уже почти десять лет многие сценарии создавались без него. Более того, это идет вразрез с развитием PHP с более объектно-ориентированными функциями.

ИМХО, для кода это ни хорошо, ни плохо: хорошие программы все равно будут хорошими, а «ужасные программы» будут хуже ... Единственный вопрос: «Почему в добавлении GOTO через 10 лет после доказательства не было необходимости?»

5
ответ дан 24 November 2019 в 13:09
поделиться

Плохая структура кода - зло, независимо от структуры управления вы используете.

Я лично предпочитаю goto, который проясняет поток программы для «управляющих переменных» и вложенных «если», что косвенно вызовет одну и ту же ветвь в коде.

Итак, просто напишите два версии (с GOTO и без) и посмотрите, какую из них легче понять. Тогда выбор прост.

это косвенно вызовет одну и ту же ветвь в коде.

Итак, просто напишите две версии (с GOTO и без него) и посмотрите, какую из них легче понять. Тогда выбор прост.

это косвенно вызовет одну и ту же ветвь в коде.

Итак, просто напишите две версии (с GOTO и без него) и посмотрите, какую из них легче понять. Тогда выбор прост.

79
ответ дан 24 November 2019 в 13:09
поделиться

Are guns evil? Both can be used for good or for evil. I would say it was easier to write good code without goto, than with.

10
ответ дан 24 November 2019 в 13:09
поделиться

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

7
ответ дан 24 November 2019 в 13:09
поделиться

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

Когда у вас есть неструктурированный код, который прыгает отсюда туда, вы только что обнаружили зло, исходящее от оператора GOTO. Практически всегда лучше избегать этого. Может быть, раз в 100 000 строк найдется место, где предложение GOTO НАМНОГО упрощает код, таким образом, не является злом, но если вы не уверены, вам следует избегать GOTO.

Надеюсь, это поможет.

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

4
ответ дан 24 November 2019 в 13:09
поделиться
Другие вопросы по тегам:

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