Почему использование заглавных букв в именах классов в Java (и других) - это только предложение, а не правило? - PullRequest
3 голосов
/ 24 июля 2009

Мне интересно, почему Java с ее многочисленными функциями безопасности и ограничениями позволяет разработчикам начинать имя класса со строчной буквы, даже если это будет крайне глупой идеей.

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

Ответы [ 5 ]

2 голосов
/ 24 июля 2009

Это потому, что считалось, что язык программирования не должен навязывать соглашения в предыдущие годы. Но теперь сцена немного меняется, и есть благоприятная атмосфера для подхода «Соглашения над конфигурацией», как в Ruby на рельсах.

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

2 голосов
/ 24 июля 2009

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

В конце - использование заглавных букв в именах классов и методов является условием, и это верно в большинстве языков. .

0 голосов
/ 24 июля 2009

Perl имеет директиву «использовать строгое», которая применяет некоторые (но не конкретные) передовые методы. Почему бы не добавить опцию -strict в javac, которая обеспечивает соблюдение таких правил передовой практики при компиляции кода? Это по-прежнему может позволить использовать библиотеки .jar или .class, которые не соответствуют стандарту, но применяют его при компиляции чего-либо нового (.java) ... Или, что еще лучше, включите его по умолчанию и предоставьте директиву -relaxedотключить правоприменение, тем самым поощряя каждого более строго следовать стандарту, не наказывая тех, кто по какой-либо причине не может.

0 голосов
/ 24 июля 2009

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

Особая проблема с именами классов заключается в том, что, IIRC, в грамматике неясно, какие идентификаторы являются именами классов / интерфейсов, а какиене. Строгость в точках объявления возможна, но тогда она усложняет остальную грамматику.

Вероятно, это связано с нехваткой времени. И даже тогда Java считалась властной. Людей, которые заняты написанием C и C ++ со всевозможными соглашениями (обычно отличающимися от библиотек), вызывают всевозможные недоразумения, но, похоже, им все равно.

0 голосов
/ 24 июля 2009

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

...