Это плохая практика - давать два совершенно разных файла с одинаковым общим назначением и одинаковыми именами?


18

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

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

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

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

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
Более длинные имена! :)
Марко

2
statsgen.js,settingsgen.js
Kroltan

1
DRY! (т.е. более короткие имена)
Пол Дрейпер

1
Чистый код (т. Е. Более значимые имена)
Сонго

Ответы:


36

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

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

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

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


5
Отладка js обычно печатает весь путь к файлу.
Берги

1
@Bergi Это зависит от браузера (и версии), IDE (если есть), среды регистрации ошибок и так далее.
Авнер Шахар-Каштан

22

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

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


1
Большинство современных текстовых редакторов показывают путь на вкладке, если файлы имеют одинаковые имена.
Киясиро

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

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

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

1
Использование более описательных имен может быть довольно раздражающим, хотя ... когда вы some_super_long_descriptor_that_needs_more_description.jsустанавливаете его отдельно отsome_super_long_descriptor_that_needs_more_cowbell.js
corsiKa

12

Здесь есть четкий решающий фактор: СУХОЙ (не повторяйте себя).

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

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

Этот вопрос находится по адресу programmers.stackexchange.com/questions/ 250481 . Существует также serverfault.com/questions/ 250481 . 250481это одна вещь в контексте вопросов программистов, и другая вещь в контексте вопросов о сбое сервера.

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


7

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

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

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


Этот ответ, кажется, хорошо применим к этому конкретному примеру, но он не обращается к общему вопросу.
Пол Дрейпер

3

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

Пространства имен - одна из отличных идей - давайте сделаем больше!

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

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

Вы могли бы съесть свой торт и съесть его тоже.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.