зачем нижнее подчеркивание в названии файла
Зачем нижнее подчеркивание в названии файла
дефис по правилам русского языка относится к небуквенным орфографическим знакам, вот только дефис ли это? ведь ввиду ограниченности возможностей ввода, в компьютерном наборе изначально была стёрта разница между минусом (математический знак), дефисом (орфографический), и тире (пунктационный). 2 из 3 вариантов ну никак частями слов являтся не могут.
нижнее подчёркивание символ искусственный, это не символ даже, это просто отрывок горизонтальной черты (насколько я помню, он для рисования оных на печатных машинках и появился), графический элемент, по сути. считаю, что воспринимать его в качестве замены пробелу не верно, ведь чаще всего он используется как пробел там, где оный из-за ограниченности синтаксиса невозможен (именах переменных, например, в тех же url). «непробельный пробел», короче.
надо бы вспомнить, что в регэкспах нижнее подчёркивание определено как часть «слова» (\w).
2/3 v.s. «(не) совсем (не) то, хотя чаще всего именно так и используется (когда то, что нужно, использовать невозможно)».
думаю, что «-» более однозначен, но не исключено, что поисковики их уравня(ли/ют) (в т.ч. методом игнорирования).
toxic steel добавил 15.11.2008 в 19:15
при этом моим ответом на вопрос ТС
будет «одинаково». ибо не учтено то, что гугл не воспринимает транслит, а яндекс не (ре-)транслитерирует кеи из урла. хотя по прямому запросу латинскими символами фотка найдётся.
переводить же бессмысленно, ибо англокей в урле русскоязычному сайту по сути ничего не даст.
Зачем нижнее подчеркивание в названии файла
Reg.ru: домены и хостинг
Крупнейший регистратор и хостинг-провайдер в России.
Более 2 миллионов доменных имен на обслуживании.
Продвижение, почта для домена, решения для бизнеса.
Более 700 тыс. клиентов по всему миру уже сделали свой выбор.
Бесплатный Курс «Практика HTML5 и CSS3»
Освойте бесплатно пошаговый видеокурс
по основам адаптивной верстки
на HTML5 и CSS3 с полного нуля.
Фреймворк Bootstrap: быстрая адаптивная вёрстка
Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.
Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.
Верстайте на заказ и получайте деньги.
Что нужно знать для создания PHP-сайтов?
Ответ здесь. Только самое важное и полезное для начинающего веб-разработчика.
Узнайте, как создавать качественные сайты на PHP всего за 2 часа и 27 минут!
Создайте свой сайт за 3 часа и 30 минут.
После просмотра данного видеокурса у Вас на компьютере будет готовый к использованию сайт, который Вы сделали сами.
Вам останется лишь наполнить его нужной информацией и изменить дизайн (по желанию).
Изучите основы HTML и CSS менее чем за 4 часа.
После просмотра данного видеокурса Вы перестанете с ужасом смотреть на HTML-код и будете понимать, как он работает.
Вы сможете создать свои первые HTML-страницы и придать им нужный вид с помощью CSS.
Бесплатный курс «Сайт на WordPress»
Хотите освоить CMS WordPress?
Получите уроки по дизайну и верстке сайта на WordPress.
Научитесь работать с темами и нарезать макет.
Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!
Хотите изучить JavaScript, но не знаете, как подступиться?
После прохождения видеокурса Вы освоите базовые моменты работы с JavaScript.
Развеются мифы о сложности работы с этим языком, и Вы будете готовы изучать JavaScript на более серьезном уровне.
*Наведите курсор мыши для приостановки прокрутки.
9 сбивающих с толку соглашений об именовании
Когда Вы только начинаете осваивать различные языки в мире веб-разработки, то очень трудно сразу запомнить все соглашения об именовании, которые в них приняты.
Еще большая путаница возникает, если опытные разработчики сами не могут договориться о том, что считать «лучшей практикой».
Для того, чтобы помочь новичкам сориентироваться в этом вопросе, ниже мы рассмотрим некоторые из наиболее типичных соглашений.
1. Нижнее подчеркивание перед именем свойства
Когда Вы видите, что переменная или метод имеют префикс «_», знайте, что здесь нет никакой скрытой магии вуду. Это просто соглашение об именовании, которое напоминает разработчику о том, что переменная (свойство) или метод являются либо private, либо protected, и к ним нельзя получить доступ из-за пределов класса.
Делая объект Female равным не функции, а возвращаемому объекту, мы можем создавать private-переменные. Опять же, нижнее подчеркивание напоминает нам об этом.
2. ВЕРХНЕРЕГИСТРОВЫЕ константы
К примеру, если Вам нужно использовать в вычислениях некую величину, значение которой неизменно (скажем, гравитационную постоянную), то можно присвоить это значение какой-нибудь константе. Не все языки, однако, обладают таким типом переменных.
3. Префиксы из одной буквы
Вы наверняка где-нибудь уже видели переменную, перед именем которой стояла одна буква, например, «s» или «i».
Это называется «Венгерская нотация», которая в значительной степени утратила свою популярность, хотя все еще применяется достаточно часто.
Представьте, что мы, используя вышеописанное соглашение, объявили переменную для хранения строковых данных, используя префикс «s». После этого мы решили сменить значение переменной на число.
Как Вы понимаете, в этом случае, использование данного соглашения только введет нас в заблуждение, но никак не поможет.
Для тех, кто использует jQuery: Прежде чем Вы запрыгнете на пьедестал почета, радуясь, что не используете это соглашение, спросите себя, используете ли Вы символ доллара для переменных внутри объекта jQuery?
Если да, то это как раз-таки форма Венгерской нотации. Это символ, который предваряет имя переменной и служит исключительно для того, чтобы снабдить Вас информацией о переменной.
Использовать ли Вам его?
Как хотите. Даже многие разработчики из команды jQuery используют данный префикс. В конце концов, имеет значение лишь то, что для Вас это работает.
Я к примеру, около года назад отказался от использования символа доллара, но только потому, что осознал, что он мне не нужен. Так что просто сформируйте свое собственное мнение на этот счет.
4. Большая Первая Буква
Как насчет тех имен «переменных», у которых капитализируется первая буква?
В коде выше переменная $SomeClass капитализирована так как это имя класса, а не имя переменной. Опять-таки, это соглашение об именовании, которого придерживаются большинство разработчиков.
При возвращении к коду через год Вы легко сможете понять, что Вы имеете дело с классом, у которого есть объекты и методы.
Для чего мы капитализируем имя объекта Person?
Делается это потому, что мы можем легко забыть использовать слово new. В этих условиях JavaScript не будет выдавать нам никаких предупреждений, и отлов ошибок рискует превратиться просто в ночной кошмар.
5. ВерблюжьяНотация против нижнего_подчеркивания
Ответ: нет правильного подхода. Это целиком зависит от языка и от стандартов кодирования, которых придерживается какая-либо организация или человек. Оба варианта приемлемы.
Несмотря на вышесказанное, есть некоторые дополнительные моменты, которые следует учесть. К примеру, большинство разработчиков на JavaScript используют верблюжью нотацию, в том время как в других языках, вроде PHP, есть тенденция к применению нижнего подчеркивания для разделения слов. Однако опять же, это не догма. Если взять тот же Zend Framework, то у него лучшей практикой считается использования верблюжьей нотации.
«Не так важно, что Вы используете, как то, чтобы Вы придерживались этого!»
Важность организации структуры папок особенно очевидна при работе в команде. Но, по крайней мере, не стоит накидывать все ваши стилевые файлы и скрипты в одну кучу в корень сайта.
Многие разработчики предпочитают помещать все картинки, скрипты и стилевые файлы в папку с именем Assets.
Также обратите внимание на соглашение использовать папку min, которая содержит динамически добавляемые минимизированные версии ваших скриптов и файлов стилей.
При создании разметки, надеюсь, это всем понятно, идентификаторы и классы, которые Вы выбираете, должны описывать тип содержимого, а не презентационные аспекты (особенности позиционирования и внешнего вида). Пример:
Что будет, если через полгода Вы захотите поместить вашего Джастина Бибера в «middle-RIGHT-and-then-a-little-lower» секцию? В этом случае имя вашего класса будет, мягко говоря, странноватым.
«С постепенным переходом на HTML5 Вам следует все меньше использовать идентификаторы для элементов. Идентификаторы не очень гибки и, во многих случаях, необязательны.»
8. Двойные Хэдеры и Футеры
Вспомните. Когда Вы создаете сайт с центрированным дизайном, у которого должно быть несколько фонов, которые занимают всю доступную ширину экрана (обычно для хэдера и футера), Вы обычно создаете «обертку» для зоны контента, чтобы внешние элементы могли расширяться, в то время как внутрений элемент оставался бы центрированным.
Т.к. это типичная задача, важно выработать общее соглашение для создания необходимой разметки.
Трудность в том, что, подразумевая, что мы работаем с новыми элементами HTML5, нам нужно решить, помещать ли элемент футер внутри или снаружи. Это все еще предмет дискуссий, однако я склонен считать, что более семанически грамотно помещать реальный футер внутрь.
Элементы div следует использовать только, если:
— нет более подходящего элемента для конкретной задачи
— вам нужен элемент исключительно для структурирования макета страницы
Именно поэтому очень важно, чтобы все в команде разработчиков следовали один и тем же стандартам кодирования. Рассмотрим пару примеров:
А Вы дружите с тернарным оператором?
Как насчет логического && для условий?
Многие разработчики побоятся использовать в этом случае логическое И, настаивая на том, что это снижает читабельность кода. Это, разумеется, весомый аргумент, хотя, несмотря на это, даже популярные библиотеки, вроде jQuery, активно применяют данный прием.
Как уже упоминалось, не так важно, каких соглашений Вы придерживаетесь. Главное, чтобы Вы их придерживались, и не допускали «смешения стилей». В реальности некоторые команды разработчиков вырабатывают свои собственные соглашения во время работы над проектами.
P.S. Присмотритесь к премиум-урокам по различным аспектам сайтостроения, а также к бесплатному курсу по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить JavaScript, PHP и другие языки веб-разработки:
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Добавление нижних подчёркиваний к расширению файлов в MS Windows Live Mail (микроликбез)
В этой статье речь пойдёт о такой специфической особенности почтовой программы Почта Windows Live, как добавление значка _ (нижнее подчёркивание) к расширениям файлов.
Причём, эта статья касается как тех, кто отправляет письма, так и тех, кто письма получает. Одних мы будем учить отправлять вложения правильно, других – правильно открывать вложения, если пришли с такими вот дефектными расширениями.
Я думаю, что многие в жизни сталкивались с таким явлением, что приходит некий файл, с которым необходимо быстро ознакомиться и предпринять по нему какие-то действия. А тут – засада! При попытке открытия файла Windows пишет, что нужно выбрать какое-то приложение для открытия и т.п.
Теперь давайте пройдём логично по цепочке – от отправителя к получателю.
Почему добавляется значок нижнего подчёркивания к расширению файлов?
Причина одна единственная – если перед расширением файла поставить не одну, а две точки, то программа Почта Windows Live автоматически подставляет символ «_», но делает это почему-то не вместо первой точки, а вместо второй. Иными словами, если мы называем файл «Файл..doc», то получателю придёт файл «Файл._doc». Причин две – не все операционные системы поддерживают открытие файлов с двумя расширениями. Поэтому при отправке файлов Почта пытается исправить эту ошибку, и тут вскрывается вторая проблема, а именно ошибка программистов. По логике, значок «_» должен ставиться слева от лишней точки, а он подставляется справа. Причём это никак не лечится.
Что делать отправителю файлов, чтобы избегать подобных ситуаций?
Обычно такие проблемы случаются у тех пользователей, у которых стоит скрытие расширений зарегистрированных типов файлов. В таких случаях, например, Word или Excel выдают запрос на сохранение файла без расширения, а только имя. Например, так:
Как и подписано на слайде – никаких точек в конце ставить нельзя. В середине можно. Если у вас включено отображение расширений зарегистрированных типов файлов, то картина несколько меняется:
Хоть это и логично, но всё равно – бдительность прежде всего!
Что делать, если вы получили файл с нижним подчёркиванием перед расширением?
Если вы всё таки получили файл вида
То самым простым будет, не открывая его из программы, сразу сохранить в правильном формате.
Порядок действий такой:
Щёлкаем правой кнопкой мышки по файлу и нажимаем Сохранить как…
В открывшемся окне подправляем расширение файла:
И нажимаем кнопочку Сохранить.
После этого файл обязательно откроется.
Послесловие
Зачем Python столько знаков подчеркивания?
По мере изучения и практики языка Python для вас открывается все больше возможностей с помощью банального использования символа нижнего подчеркивания улучшить надежность своего кода, либо даже привнести некоторый новый функционал в программу.
В статье перечислены следующие приёмы разностороннего улучшения кода с помощью символа нижнего подчеркивания “_”:
1. Временная переменная
Первый из приемов использования символа нижнего подчеркивания связан со временной переменной. Когда нет надобности тратить время на придумывание названия для переменной ввиду её низкой значимости для программы, или же когда никак не удаётся понять, какой идентификатор подойдет для переменной лучше всего — будет неплохим решением указать для переменной идентификатор, полностью состоящий из одного знака нижнего подчеркивания.
Последний результат REPL
Аббревиатура REPL расшифровывается как “Read Evaluate Print Loop”, что в переводе означает “Чтение Оценка Печать Цикл”. Запуская что-либо в консоли Python, результат работы программы будет записан в REPL в виде переменной. У этой переменной нет имени, и в качестве идентификатора для неё как раз подойдет один знак нижнего подчеркивания.
Ознакомиться с крайне типичным примером получения сохраненных в REPL результатов выполнения программы можно при использовании среды Jupyter Notebook. Предположим, в первой ячейке вашего блокнота инициирован запуск чего-либо — это значит, что в последующей ячейке доступ к результату выполнения программного кода первой ячейки можно получить с помощью символа нижнего подчеркивания:
Анонимная переменная
Кроме идентификатора для временной переменной, одинарным знаком нижнего подчеркивания также называют те переменные, в именовании которых особенным образом нет необходимости. Зачастую подобные переменные используются в программе всего один раз, в чем и причина их именования идентификатором, который вскоре будет переназначен.
В приведенном выше примере фрагмент кода выполняется 10k раз подряд с помощью цикла for ; однако не имеет значение, какая сейчас итерация цикла, а потому в качестве идентификатора для переменной с номером итерации выбран одинарный символ нижнего подчеркивания.
Более того, большинство из популярных интегрированных средств разработки по умолчанию знакомы с “эмпирическим правилом” идентификатора-подчеркивания, поэтому переменная с таким идентификатором не проверяется на предмет использования в остальном коде программы; и наоборот, при назначении переменной в вышеописанном цикле for уникального идентификатора, некоторые инструменты интегрированной среды разработки могут начать выдавать разработчику предупреждение о том, что он случайно “определил переменную без её использования”.
Универсальный заполнитель
Еще одно распространенное использование символа нижнего подчеркивания в качестве идентификатора временной переменной — это создание заполнителя; зачастую такой приём используется для извлечения значений из кортежа, как в примере ниже.
Как показано на примере, в качестве значения переменной x присваивается значение первого из элементов кортежа. А вот вторая переменная игнорируется, поскольку идентификатор-подчёркивание без лишних слов даёт понять, что она используется в качестве “заполнителя”.
Также следует упомянуть о малоизвестном трюке, который заключается в совместном использовании символа звездочки с идентификатором-подчеркиванием ради создания переменной-“заполнителя” с несколькими значениями. Предположим, что обозначен кортеж с несколькими элементами, задача — получить из него значения первого и последнего элементов:
Теперь не имеет значения, сколько элементов содержится в кортеже — переменные x и z всегда будут ссылаться на значения первого и последнего из них.
2. Улучшение читаемости кода
Сейчас речь пойдет о гораздо более известном, чем предыдущий, приёме использования символа нижнего подчеркивания; тем не менее мы всё равно рассмотрим его, несмотря на широкую славу, потому что этот маленький трюк в значительной степени улучшает читаемость чисел в программе.
Многие программисты разделяют каждые три цифры числа символом нижнего подчеркивания, чтобы прочитать большое число было легче. Эта странность вызвана тем, что синтаксис Python не позволяет писать большие числа через запятую, зато символ подчеркивания в таком случае разрешен.
Кроме того, разрешается буквально поставить знак подчеркивания в любом случайном месте посреди числа без какого-либо влияния на результат выполнения программы:
3. Разрешение конфликта имён
Символ нижнего подчеркивания также используется многими разработчиками для избегания появления конфликтов в пространствах имён, при том что на уровне интерпретатора для такого использования подчеркивания нет никакого официального функционала. Таким образом, это еще одно “эмпирическое правило” использования символа нижнего подчеркивания в коде.
Например, необходимо определить функцию получения “класса” (разновидности) некоторых продуктов. Если написать код следующим образом, то будет выброшено исключение SyntaxError :
Ошибка возникает из-за того, что идентификатор class является одним из зарезервированных ключевых слов в Python. При его использовании Python автоматически начинает считать, что мы хотим определить класс объектов, но синтаксис для такой операции, очевидно, неверен.
Чтобы избежать использования зарезервированного ключевого слова в качестве идентификатора, но сохранить при этом описательный характер имени переменной, как правило, после ключевого слова в идентификаторе ставится знак нижнего подчеркивания, как показано ниже.
Конечно, никто не обязан использовать именно слово “class” в качестве идентификатора для переменной, потому что это просто имя переменной; однако иногда именно такое название существенно улучшает читаемость кода, в таком случае не хочется — и не нужно, как мы узнали только что — избегать использования зарезервированных ключевых слов.
4. Изолированный атрибут объекта
Символ нижнего подчеркивания также используется для защиты некоторых атрибутов и методов в том случае, когда мы хотим оградить атрибут от использования вне объекта, которому он принадлежит.
Защита от импорта
Давайте создадим файл lib.py и внутри него определим следующие две функции:
Далее, в другом файле, выполним импорт всего содержимого из нашего модуля lib.py :
Однако, пожалуйста, воспринимайте вышеописанный приём как “удобное средство”, предотвращающее импорт ненужных функций. Данный трюк НЕ помешает другому программисту явно импортировать куда угодно всё, что он захочет.
Явный импорт продолжает работать:
5. Защищенные атрибуты класса
Символ нижнего подчеркивания помогает организовать защиту не только от лишнего импорта ненужных функций, но и от вызова извне сугубо внутренних атрибутов и методов класса.
Для защиты атрибутов класса от вызова извне нужно добавить двойное подчеркивание __ в самом начале идентификаторов тех атрибутов или методов, которые необходимо защитить от перезаписи.
Таким образом, для вывода на экран заранее заданной строки идеально подойдёт метод show() :
Тем не менее, если попытаться получить доступ к значению атрибута __name или вызвать метод __show(), которые “защищены” двойными подчеркиваниями в самом начале их идентификаторов, то произойдёт выброс исключения, и программа прекратит работу.
Опять же, эта “защита” не прописана на уровне интерпретатора, она удобна лишь тогда, когда хочется скрыть от вызова какой-то внутренний функционал класса, потому что всегда можно прибегнуть к явному вызову атрибута или метода: просто добавьте перед ними указание _ :
6. Специальные атрибуты и магические методы
В первом примере метод __repr__() не переопределён, в следствии чего функция print() просто сообщает нам имя класса и его адрес в памяти компьютера, что не очень полезно для отладки:
Теперь давайте переопределим функцию __repr__() и попробуем снова:
Вывод
В статье представлены несколько приёмов, связанных с использованием символа нижнего подчеркивания в языке программирования Python. Некоторые из них позволяют получить дополнительные возможности в программировании, другие — улучшают читабельность и надежность кода программы. Кроме того, в статье рассмотрены способ защиты от импорта объектов, необходимых только для организации локальной работы одного модуля и способ защиты от перезаписи атрибутов/методов классов.
К вышеописанным советам стоит прислушаться хотя бы потому, что они ускорят ваш процесс понимания кода других Python-программистов.
Жизнь коротка, используйте Python!