Почему файлы с одинаковыми именами можно хранить в разных каталогах, но не в одном

Обновлено: 21.11.2024

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

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

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

5 ответов 5

Рассмотрите соотношение затрат и выгод ваших двух вариантов:

Может ли повторное использование одного и того же имени вызвать путаницу или конфликты имен? Скорее всего нет, так как они находятся в разных папках. Название «player_stats/generator.js» эквивалентно «player_stats_generator.js». Однако, если в будущем вы увидите причину для объединения ваших js-файлов в один каталог (развертывание? Не знаю), то это должно послужить хорошим индикатором для присвоения уникальных имен.

Не приведет ли использование более длинных имен к лишнему набору текста? Возможно нет. Мало того, что многие JS IDE автоматически заполняют имена файлов в проекте, это также фрагмент кода, который, вероятно, пишется — максимум — только один раз для каждого файла. Код, который часто печатается, — это классы и функции внутри js-файлов, и они (надеюсь) не конфликтуют.

Какую информацию об ошибке вы получаете при отладке? Если наиболее распространенным отчетом об ошибке является «Ошибка в строке 34 из «, то рассмотрите возможность присвоения им уникальных имен, поскольку получение ошибок только в генераторе.js, а затем попытка угадать по контексту, какой генератор это был, может быть проблемой.

@Bergi Это зависит от браузера (и версии), IDE (если есть), системы регистрации ошибок и так далее.

На практике, если ваша IDE показывает имена файлов на вкладках, если вы используете одно и то же имя для каждого файла, вы получите вкладки с одинаковыми именами. Это может очень раздражать. У одного проекта, который я взял на сопровождение, есть эта проблема, и очень тяжело иметь 15 открытых вкладок, половина из которых с одним и тем же именем файла.

Итак. используйте более описательные имена.

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

@kmiyashiro - вероятно, да, но если у вас открыто много файлов, вкладки могут быть уменьшены по размеру (ширине) до такой степени, что вы в основном видите только имена файлов. Затем вам нужно всегда наводить указатель мыши на каждую вкладку и ждать, пока «подсказка» не отобразит полный путь/файл. Если у вас открыто только несколько файлов и только редкий случай дублирования имени, это, вероятно, приемлемо. Но при большом количестве файлов это может сильно раздражать.

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

Однако использование более описательных имен может раздражать. когда вы получаете some_super_long_descriptor_that_needs_more_description.js, чтобы отличить его от some_super_long_descriptor_that_needs_more_cowbell.js

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

Если лучшим описанием файла Javascript в контексте client_scripts > app > player_stats действительно является генератор , его путь должен быть следующим: client_scripts/app/player_stats/generator.js .

Пути (или URL-адреса) удобны тем, что являются вложенными идентификаторами. Давайте использовать их таким образом :)

Всегда используйте описательные имена, а не короткие имена, если это не что-то вроде математической константы или переменной цикла, где соглашения рассматриваемого языка отдают предпочтение коротким именам. Например, если вы назовете переменную «пи» и зададите ей какое-то подходящее точное значение числа «пи», тогда имя будет хорошим и донесет суть. С другой стороны, если у вас есть генератор, который генерирует члены ряда Тейлора для числа Пи и складывает их вместе, чтобы получить приближенное число Пи, вы хотите назвать его как-то вроде "taylorPiGenerator или подобное".

Хорошие имена теперь экономят время на рефакторинг позже или, что еще хуже, на большие ошибки позже.

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

Похоже, этот ответ хорошо подходит к данному конкретному примеру, но не отвечает на общий вопрос.

Это зависит от технологии, с которой вы работаете. Имена должны идентифицировать элементы, а пути должны идентифицировать контекст. Я согласен, что хорошие имена важны, но эй, пути тоже имена.Но с практической точки зрения, если вы используете что-то вроде Javascript, вероятно, лучше оставить более точные имена для конечных элементов. Если вы работаете с инструментами, которые учитывают это, например Python, рекомендуется использовать одно и то же имя с другим путем (модулем, пространством имен). Если вы посмотрите на Java, вы также найдете классы с одинаковыми именами и разными пакетами. Можно пойти еще дальше и сказать, что методы называются действиями в контексте класса, и у нас есть методы с одинаковыми именами в разных классах, которые сами могут называться одинаково, но помещаться в разные пакеты. Дзен Python гласит:

Пространства имен — это отличная идея. Давайте сделаем больше таких!

Но у javascript есть свои особенности и преимущества, поэтому я бы рекомендовал использовать разные имена (даже если файлы находятся по разным путям). Также вы можете найти шаблон модуля в javascript, который может помочь вам написать более чистый код:

Учетная запись хранения может содержать ноль или более файловых ресурсов Azure. Общий ресурс содержит свойства, метаданные и ноль или более файлов или каталогов. Каталог содержит свойства и ноль или более файлов или каталогов. Файл – это любой объект, состоящий из двоичных данных, свойств и метаданных.

Имена ресурсов

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

Если вы попытаетесь создать общий ресурс, каталог или файл с именем, которое нарушает правила именования, запрос завершится ошибкой с кодом состояния 400 (неверный запрос).

Поделиться именами

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

  • Имя общего ресурса должно быть допустимым DNS-именем.
  • Имена общих ресурсов должны начинаться с буквы или цифры и могут содержать только буквы, цифры и дефис (-).
  • Каждому символу дефиса (-) должна непосредственно предшествовать и следовать буква или цифра; последовательные тире не допускаются в именах общих ресурсов.
  • Все буквы в имени общего ресурса должны быть строчными.
  • Названия общих ресурсов должны содержать от 3 до 63 символов.

В следующей таблице сравниваются ограничения на имена для файлов Azure и хранилища BLOB-объектов Azure:

Имена каталогов и файлов

Azure Files применяет следующие правила именования для каталогов и файлов:

В следующей таблице сравниваются ограничения на имена для файлов Azure и хранилища BLOB-объектов Azure:

Пути

Путь состоит из одного или нескольких компонентов пути (имя каталога или файла), разделенных косой чертой (/). Все компоненты имени пути, кроме последнего компонента имени пути, обозначают каталоги. Последний компонент имени пути обозначает каталог или файл. Применяются следующие правила именования:

  • Путь не может быть длиннее 2048 символов. Длина отдельных компонентов пути не может превышать 255 символов.
  • Путь состоит из одного или нескольких компонентов пути, разделенных косой чертой (/).
  • Глубина подкаталогов в пути не может превышать 250.
  • Одно и то же имя нельзя использовать для файла и каталога, которые совместно используют один и тот же родительский каталог. Например, файл и каталог, каждый из которых является именованным data, не могут существовать по одному и тому же родительскому пути.

Имена метаданных

Обратите внимание, что имена метаданных сохраняют регистр, в котором они были созданы, но не чувствительны к регистру при установке или чтении. Если для ресурса отправлены два или более заголовков метаданных с одинаковым именем, файловая служба Azure возвращает код состояния 400 (неверный запрос).

Синтаксис URI ресурса

Каждый ресурс имеет соответствующий базовый URI, который относится к самому ресурсу. Для учетной записи хранения базовый URI включает только имя учетной записи:

Для каталога базовый URI включает имя учетной записи, имя общего ресурса и путь к каталогу:

Для файла базовый URI включает имя учетной записи, имя общего ресурса и путь к файлу:

Mac Finder предлагает различные способы объединения содержимого двух папок в один каталог. Один из вариантов позволяет пользователям объединять разное содержимое каталогов, содержащее файлы с одинаковыми именами, с помощью функции «сохранить оба» в Mac OS X Finder.


На первый взгляд это может немного сбить с толку, но после небольшой практики вы немного лучше поймете, как работает эта функция и как вы можете использовать ее для объединения содержимого каталогов с файлами, имеющими одинаковый имена вместе в одну папку, полностью с помощью Mac OS X Finder.

Если вы собираетесь попробовать это самостоятельно, настоятельно рекомендуется сделать это с ненужными файлами или папками и желательно заранее сделать резервную копию. Причина довольно проста; вы не хотите случайно заменить важные файлы или папки, изучая, как работает и ведет себя вариант «сохранить оба».

Как объединить файлы с одинаковыми именами в одну папку в Mac Finder с помощью «Сохранить оба»

В этом примере предположим, что у вас есть две папки с содержимым, которые имеют одинаковое имя, но файлы разные, например 0.jpg, 1.jpg, 2.jpg и т. д. Таким образом, вы не хотите перезаписывать любые файлы, вы просто хотите, чтобы они все находились в одной папке, тем самым объединяя их вместе и объединяя каталоги в один:

    Выберите все файлы из исходной папки, затем, удерживая нажатой клавишу «Option/alt», перетащите их в папку назначения (помните, что в папке назначения есть файлы с одинаковыми именами)

Finder переместит исходные файлы в папку назначения и автоматически переименует их, чтобы они не перезаписывали друг друга.

Соглашение об именовании довольно простое, оно просто добавляет счетное число в конец файлов, поступающих из источника. Используя вышеупомянутый пример имени файла, это означает, что копирование 0.jpg, 1.jpg, 2.jpg и т. д. в другую папку с файлами с теми же именами автоматически переименует их в «0 2.jpg, 1 2.jpg. 2 2.jpg», и так далее.

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

Также стоит отметить, что вы можете включить параметр «Сохранить оба» после того, как диалоговое окно было запущено для копирования файлов. Если вместо этого вы видите в диалоговом окне вариант «Пропустить», удерживайте нажатой клавишу OPTION, чтобы переключиться на «Сохранить оба», например:

Примечание: вариант «Сохранить оба» отображается только для файлов с одинаковыми именами в папках, если имена файлов разные, кнопка не появится, а если вы удерживали клавишу Option, файлы просто скопировались в другую папку. .

Следует признать, что способ, которым Finder обрабатывает это, на первый взгляд немного сбивает с толку, но он работает так, как рекламируется. Для более продвинутых пользователей Mac еще одним отличным вариантом является обращение к командной строке и использование ditto для копирования файлов между каталогами или даже использование ditto для слияния каталогов в Mac OS X.

И да, в Finder есть скрытый параметр «объединить», но его поведение иногда даже более своеобразно, чем «Сохранить оба», поэтому мы сосредоточимся на объяснении этого в другой статье.

Что вы думаете? Если у вас есть какие-либо советы или рекомендации, поделитесь в комментариях!

Читайте также: