Чи погана практика давати двом дуже різним файлам з однаковим загальним призначенням те саме ім’я?


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
Довші назви! :)
marko

2
statsgen.js,settingsgen.js
Кролтан

1
СУХАЙТЕ! (тобто коротші імена)
Пол Дрейпер

1
Чистий кодекс (тобто більш значущі імена)
Songo

Відповіді:


36

Розгляньте співвідношення вартості та вигоди ваших двох варіантів:

  1. Чи може повторне використання однойменного імені викликати плутанину чи називати конфлікти? Напевно, ні, оскільки вони знаходяться в різних папках. Ім'я "player_stats / generator.js" еквівалентно "player_stats_generator.js". Однак, якщо ви бачите, в майбутньому, причину об’єднання ваших js-файлів в єдиний каталог (розгортання? Не знаю), то це має бути хорошим показником для надання унікальних імен.

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

  3. Під час налагодження, яку інформацію ви отримуєте про помилку? Якщо найпоширеніший звіт про помилку - це "Помилка в рядку 34 <filename.js>", то подумайте про надання їм унікальних імен, оскільки помилки в просто generator.js, а потім намагаються розібратися в контексті, який саме генератор це може скласти.


5
Налагодження js зазвичай друкує весь шлях до файлу.
Бергі

1
@Bergi Це залежить від браузера (та версії), IDE (якщо такий є), рамки реєстрації помилок тощо.
Авнер Шахар-Каштан

22

Як практичне питання, якщо ваш IDE відображає імена файлів на вкладках, якщо ви використовуєте те саме ім'я для кожного файлу, ви отримаєте вкладки, які показують те саме ім’я. Це може дуже дратувати. Один із проектів, які я взяв на себе з обслуговування, має цю проблему, і головним болем є відкриття 15 вкладок, половина з тим же ім'ям файлу.

Отже ... використовуйте більш описові назви.


1
Більшість сучасних текстових редакторів покажуть шлях на вкладці, якщо файли мають одне ім’я.
kmiyashiro

Звичайно, іноді необхідно, щоб кілька файлів мали одне ім’я [наприклад, на багатьох серверах index.html]. Я роздратований програмами, які ускладнюють визначення шляху, пов'язаного з певним файлом.
supercat

1
@kmiyashiro - напевно, так, але якщо у вас відкрито багато файлів, вкладки можуть бути зменшені в розмірі (ширині) до точки, де ви в основному бачите лише назви файлів. Тоді вам доведеться завжди наводити курсор миші на кожну вкладку і чекати, коли "підказка" відобразить повний шлях / файл. Якщо у вас відкрито лише кілька файлів, і лише рідкісний випадок дублюється імені, це, ймовірно, прийнятно. Але з великою кількістю файлів це може бути дуже прикро.
Кевін Феган

1
Якщо у вас відкрито багато вкладок з тим самим іменем, я перейшов би до файлу за допомогою ключової команди, а не намагатися знайти його серед моря вкладок навіть з унікальними іменами.
kmiyashiro

1
Використання більш описових імен може бути дуже дратує, коли ... коли ви отримаєте some_super_long_descriptor_that_needs_more_description.jsйого some_super_long_descriptor_that_needs_more_cowbell.js
відрізнити

12

Тут є чіткий вирішальний фактор: DRY (не повторюй себе).

Ім'я кожного файлу не повинно бути різним; ось для чого потрібні шляхи . Ви можете уявити, скільки різних системних або програмних файлів на вашому комп’ютері? Що робити, якщо кожен з них мав мати унікальну назву? У якийсь момент ми просто робимо ім'я файлу копією шляху.

Якщо client_scripts > app > player_statsсправді найкращий опис файлу Javascript у контексті generator, це має бути шлях client_scripts/app/player_stats/generator.js.

Це питання знаходиться на веб-сайті programmers.stackexchange.com/questions/ 250481 . Є також serverfault.com/questions/ 250481 . 250481це одне в контексті питань програмістів, і щось інше в контексті запитань про помилки сервера.

Шляхи (або URL-адреси) приємні, оскільки вони є вкладеними ідентифікаторами. Давайте використовувати їх так :)


7

Завжди використовуйте описові імена над короткими іменами, якщо це не щось на зразок математичної константи або змінної циклу, де конвенції відповідної мови надають перевагу коротким іменам. Наприклад, якщо ви називаєте змінну "pi" і маєте це якесь відповідне точне значення pi, то ім'я добре і отримує крапку впоперек. З іншого боку, якщо у вас є генератор, який генерує терміни серії Тейлор для 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.