Оператор Namespace …, каково грандиозное предприятие?

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

Очередь также потребует примерно на 30% больше кода.

Таким образом, мы можем сказать, что с очередью сложнее управлять.

12
задан Gordon 19 March 2012 в 14:56
поделиться

6 ответов

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

Я бы предпочел три двоеточия, которые было предложено в какой-то момент.

3
ответ дан 2 December 2019 в 18:22
поделиться

Что в этом плохого: Можете ли вы заметить ошибку в следующем коде?

if(class_exists("namespace1\namespace2\myClass"))
    echo "This will never be true";

Что бы я предложил: К сожалению, ' \ '- единственный доступный одиночный символ. Если бы PHP6 был моим, я бы заменил все побитовые операторы (^, &, |, ~) с ключевыми словами (поскольку они используются так мало) и использовать '|' в качестве разделителя пространства имен. Фактически, я бы предложил гораздо более простые изменения синтаксиса, чтобы упростить чтение и запись PHP, но вместо этого проще просто использовать Python ...

12
ответ дан 2 December 2019 в 18:22
поделиться

Что ж, при использовании "\" в качестве пространства имен возникает другая проблема.

  1. Это escape-символ. если ты нужно использовать \ in "строка" и \ in "строка". Я чувствую, что кто-то испортит с ним в какой-то момент. Рано или поздно. вас поймает escape-символ.
  2. '\' не очень хорошо расположен на каждой клавиатуре. На моей клавиатуре я должен использовать комбинацию клавиш, которые не очень близки друг к другу, и иногда это просто боль. Хотя это не так плохо, как '^'. Другими словами, невозможно будет свободно писать код, который должен иметь доступ к пространству имен на определенной раскладке.
  3. Я помню, когда они проголосовали за это, и насколько абсурдны результаты. Они выбрали его, потому что он был проще, чем другие символы, и требовал меньше ввода. Если честно, все зависит от вашей раскладки клавиатуры.

Это единственная причина, по которой я могу понять, почему использование 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
}

Возможность использовать наш собственный произвольный оператор имеет гораздо больше смысла, чем использование + для группировки ... "∪" имеет гораздо больший смысл ... И если вы хотите получить пересечение, просто вы "∩", а затем люди может сказать ... "что, если у нас нет этих символов в нашем шрифте?" Я могу ответить только так: «Найдите шрифт, в котором они есть !!!!»

1
ответ дан 2 December 2019 в 18:22
поделиться

Более того, если бы я хотел язык, который заново изобрел синтаксис без особых на то причин, я бы использовал Ruby.

3
ответ дан 2 December 2019 в 18:22
поделиться

давайте предположим следующее пространство имен:

jp\nintendo\rvl\testing

вы замечаете ошибки?

фактическое (внутреннее) пространство имен, скорее всего, выглядит примерно так:

jp
intendo
vl  esting

Решение этой проблемы - всегда используйте две обратные косые черты в качестве разделителя пространства имен, аналогично тому, как мы используем это в именах файлов Windows.

использование двух обратных косых черт полностью вредно, так как это сама escape-последовательность, которая заменяется на 1 одинарную обратную косую черту, которая является фактической разделитель пространства имен.

теперь, если мы используем

jp\\nintendo\\rvl\\testing
в качестве пространства имен (с использованием двух обратных косых черт в качестве разделителя), фактическое (внутреннее) пространство имен становится:
jp\nintendo\rvl\testing
0
ответ дан 2 December 2019 в 18:22
поделиться

Настоящий вопрос в том, почему они просто не поставили его как / ? Лично я ненавижу \, потому что это беглый персонаж... который все портит для меня!

0
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

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