Чувствительный к регистру По сравнению с нечувствительным синтаксисом

В документации по муравьям есть пример такого типа проблемы. Он использует селекторы (упомянутые выше) и картографы. См. Последний пример в http://ant.apache.org/manual/Types/dirset.html :


   
        
   

. Выбирает все каталоги в разделе ${workingdir}, которые содержат ${markerfile}.

6
задан csmba 22 June 2009 в 05:08
поделиться

7 ответов

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

Что касается конкретного ответа, как насчет удобочитаемости? Разве stoRetroData не сильно отличается визуально от storeTRodAtA? Не то, чтобы кто-то мог это сделать, но какой смысл разрешать это?

Я не могу придумать никаких причин, позволяющих игнорировать дело.

По крайней мере, таково мое мнение - но ваш опыт может отличаться.

Редактировать: Мне, наверное, следовало начать это с отказа от ответственности:

Я научился программировать на основах, и примерно 18 лет назад у меня мелькнула такая же мысль. Поверьте мне, это одна из тех вещей, на которые вы оглянетесь через 20 лет и скажете: "О, да,

4
ответ дан 8 December 2019 в 05:57
поделиться

Правила регистра зависят от языка и региональных параметров. Вы хотите язык программирования, в котором переменная i иногда считается такой же, как I , а иногда они разные переменные? (Это не выдуманный пример, кстати, на турецком языке I - это не верхний регистр i .

Честно говоря, это довольно просто. Вы хотите, чтобы компилятор исправлял вас, когда вы допустили опечатку, или вы хотите, чтобы он угадал, что вы имели в виду? Как вы выяснили, последнее приводит к ошибкам. VB предполагает: «О, вы, вероятно, имели в виду то же самое, ничего страшного, мы вас не остановим», и XML воспринял вас буквально.

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

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

Foo foo; // declare a variable foo of type Foo

Конечно, вы можете возразить, что «вам не следует этого делать», но это удобно и сразу же сообщает читателю, что тип переменной. Это позволяет нам создать класс журнала и объект журнала. И поскольку цель этого объекта - регистрировать, имя довольно очевидно.

И последнее, что следует учитывать:

Регистр имеет значение в реальных языках. Слово, которое начинается с верхнего регистра, отличается от того же самого, но начинается с нижнего регистра. Слово "WORD" не совсем по-английски. Информация в футляре закодирована, что облегчает чтение текста. Он сообщает нам, например, когда мы встречаем имя или когда начинается предложение, что очень удобно. Если разрешить людям игнорировать правила регистра, текст будет труднее читать. А поскольку код обычно должен быть максимально читабельным, почему бы нам не поступить так же в программировании? Позвольте корпусу закодировать важную информацию. Во многих языках Foo - это тип, а foo - это переменная. Это важная информация. Я хочу знать это при программировании. Если я вижу функцию под названием «Getage», я думаю, это какое-нибудь английское слово, которое я никогда раньше не слышал. Но когда я вижу «GetAge», я сразу понимаю, что это следует читать как слово «Get», за которым следует слово «Age».

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

Мы делаем то же самое в программировании? Позвольте корпусу закодировать важную информацию. Во многих языках Foo - это тип, а foo - это переменная. Это важная информация. Я хочу знать это при программировании. Если я вижу функцию под названием «Getage», я думаю, это какое-нибудь английское слово, которое я никогда раньше не слышал. Но когда я вижу «GetAge», я сразу понимаю, что это следует читать как слово «Get», за которым следует слово «Age».

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

Мы делаем то же самое в программировании? Позвольте корпусу закодировать важную информацию. Во многих языках Foo - это тип, а foo - это переменная. Это важная информация. Я хочу знать это при программировании. Если я вижу функцию под названием «Getage», я думаю, это какое-нибудь английское слово, которое я никогда раньше не слышал. Но когда я вижу «GetAge», я сразу понимаю, что это следует читать как слово «Get», за которым следует слово «Age».

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

11
ответ дан 8 December 2019 в 05:57
поделиться
  1. История Так это было сделано. XML - это VB.NET чувствителен к регистру, потому что этого требует стандарт XML
  2. Интернационализация Собираемся ли мы поддерживать регистр на всех языках (французский, японский, иврит, клингонский и т. Д.)?
2
ответ дан 8 December 2019 в 05:57
поделиться

Пара причин.

  • Поиск вещей без учета регистра Я должен был бы повсюду иметь флаг «без учета регистра». С UTF-8, который также должен знать о клингонском малом регистре.

  • Что еще более важно, CamelCasing, CAMelcaSing. Это некрасиво, но используется много и вполне разумно. Это практически невозможно с нечувствительностью к регистру.

  • Четность языков, например xsd.exe (поставляется с VS200x), может генерировать вам классы для xsd, которые вы предоставляете. Как бы вы назвали «Ценность», если бы у вас также было «Ценность»? Таким образом, это устраняет еще один возможный импеданс.

2
ответ дан 8 December 2019 в 05:57
поделиться

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

2
ответ дан 8 December 2019 в 05:57
поделиться

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

Var test = 0;
Console.writeline(test);
Test = test + 1;
Console.writeline(test);

Такая красивая, ...: P

1
ответ дан 8 December 2019 в 05:57
поделиться

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

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

0
ответ дан 8 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

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