Ваш вопрос немного расплывчатый, но я бы сказал, что программист примерно в два раза чаще совершает важную ошибку при реализации очереди на основе неограниченного массива, чем он при реализации стека на основе неограниченного массива .
Очередь также потребует примерно на 30% больше кода.
Таким образом, мы можем сказать, что с очередью сложнее управлять.
Проблема с это то, что это экранирующий символ практически в любом другом контексте. Это означает, что люди непреднамеренно испортят это, но это также затрудняет чтение, потому что ваши глаза настроены читать обратную косую черту как метасимвол, а не просто как другой символ.
Я бы предпочел три двоеточия, которые было предложено в какой-то момент.
Что в этом плохого: Можете ли вы заметить ошибку в следующем коде?
if(class_exists("namespace1\namespace2\myClass"))
echo "This will never be true";
Что бы я предложил: К сожалению, ' \ '- единственный доступный одиночный символ. Если бы PHP6 был моим, я бы заменил все побитовые операторы (^, &, |, ~) с ключевыми словами (поскольку они используются так мало) и использовать '|' в качестве разделителя пространства имен. Фактически, я бы предложил гораздо более простые изменения синтаксиса, чтобы упростить чтение и запись PHP, но вместо этого проще просто использовать Python ...
Что ж, при использовании "\" в качестве пространства имен возникает другая проблема.
Это единственная причина, по которой я могу понять, почему использование escape-символа может быть плохим. Если честно, я все еще жду языка, который создаст свои собственные символы юникода. Таким образом, будет гораздо больше гибкости в выборе оператора, который вы можете переопределить. Скажем, на С ++ вы можете написать что-то вроде.
bool operator ≤ (Dog dog);
//and then do this
if(myDog ≤ thisDog){
}
//Seems useful?
bool operator ≅ thisDog){
// this wouldn't check for equality
// but for something close to it
}
Возможность использовать наш собственный произвольный оператор имеет гораздо больше смысла, чем использование + для группировки ... "∪" имеет гораздо больший смысл ... И если вы хотите получить пересечение, просто вы "∩", а затем люди может сказать ... "что, если у нас нет этих символов в нашем шрифте?" Я могу ответить только так: «Найдите шрифт, в котором они есть !!!!»
Более того, если бы я хотел язык, который заново изобрел синтаксис без особых на то причин, я бы использовал Ruby.
давайте предположим следующее пространство имен:
jp\nintendo\rvl\testing
вы замечаете ошибки?
фактическое (внутреннее) пространство имен, скорее всего, выглядит примерно так:
jp intendo vl esting
Решение этой проблемы - всегда используйте две обратные косые черты в качестве разделителя пространства имен, аналогично тому, как мы используем это в именах файлов Windows.
использование двух обратных косых черт полностью вредно, так как это сама escape-последовательность, которая заменяется на 1 одинарную обратную косую черту, которая является фактической разделитель пространства имен.
теперь, если мы используем
jp\\nintendo\\rvl\\testingв качестве пространства имен (с использованием двух обратных косых черт в качестве разделителя), фактическое (внутреннее) пространство имен становится:
jp\nintendo\rvl\testing
Настоящий вопрос в том, почему они просто не поставили его как / ? Лично я ненавижу \, потому что это беглый персонаж... который все портит для меня!