Чи існує угода про іменування для git сховищ?


328

Наприклад, у мене є RESTful сервіс під назвою "Purchase Service". Чи потрібно назвати своє сховище:

  1. purchaserestservice
  2. purchase-rest-service
  3. purchase_rest_service
  4. чи щось інше?

Що таке умовність? Як щодо Github? Чи повинні публічні сховища дотримуватися певного стандарту?


4
Ця публікація в блозі може бути корисною gravitydept.com/blog/…
PHeiberg

Відповіді:


379

Я б пішов на purchase-rest-service. Причини:

  1. Що таке "гонитви за погонами"? Довгі зв'язані слова важко зрозуміти. Я знаю, я німець. "Donaudampfschifffahrtskapitänspatentausfüllungsassistentenausschreibungsstellenbewerbung."

  2. "_" важче набрати, ніж "-"


151
Я (насправді) не розумію, але ви не пропустили S в ... auschreibung ...?
Vili

6
@adimauro: Це додаток щодо відкритої посади помічника для заповнення форм капітальних патентів дунайських пароплавів.
Аарон Дігулла

6
З якоїсь конкретної причини ви не віддаєте перевагу camelCase? Це моя конвенція про іменування загальних елементів, оскільки вона не використовує спеціальних символів.
10гіст

31
@ 10gistic назва репо часто зустрічається в URL-адресах (наприклад, на github), які можуть бути нечутливими до регістру або навіть перетворюватися на малі регістри, і тому camelCase є поганою ідеєю. Я не думаю, що це робить Github, але все ж здається, що краще заощадити.
jdg

19
Хлопці в GitHub використовують дефіси. habrastorage.org/getpro/habr/post_images/d34/331/a8d/…
airato

72

Проблема випадку з верблюдами полягає в тому, що часто трапляються різні тлумачення слів - наприклад, checkinService vs checkInService. Ідучи разом з відповіддю Аарона, складно з автоматичним завершенням, якщо у вас є багато подібних репостів, які доведеться постійно перевіряти, чи користувач, який створив репо, про який ви дбаєте, використовував певну подію верхніх і нижніх справ. уникайте верхнього регістру.

Його думка щодо тире також добре вказується.

  1. використовувати малі регістри.
  2. використовувати тире.
  3. бути специфічним. Ви можете виявити, що вам доведеться пізніше розрізняти подібні ідеї - тобто використовувати послугу покупка-відпочинок замість послуги або послуги відпочинку.
  4. бути послідовним. розглянути можливість використання від різних постачальників GIT - як ви хочете, щоб ваші сховища були відсортовані / згруповані?

3
Ваша відповідь стосується двох важливих питань, які не відповідає.
Буде Беасон

4
Як забути, чи це чек-сервіс чи реєстрація в сервісі краще, ніж забуття, чи це checkinService чи checkInService?
MarredCheese

Випадок з верблюдом також складніше для носіїв мови.
Бен Авелінг

48

lowercase-with-hyphens це стиль, який я найчастіше бачу в GitHub. *

lowercase_with_underscores це, мабуть, другий за популярністю стиль, який я бачу.

Перший є моїм уподобанням, оскільки це економить натискання клавіш.

* Анекдотичний; Я не збирав жодних даних.


8
У дефісів також є переваги SEO. Це може бути не головним питанням, але оскільки ми якось говоримо про URL-адреси, це актуально.
Майкл Шепер

12
У дефісів також є ще одна перевага: їх легше помітити в підкреслених гіперпосиланнях (де підкреслення може бути легко прийнято пробілами).
Єроен

1
Важко збирати дані, як ви згадували, але я зайшов на github.com/trending/developers і побачив лише колишній стиль, про який згадувалося:lowercase-with-hyphens
SaTa,

21

Не віддаючи перевагу жодному вибору імен, пам’ятайте, що git repo може бути клонований у будь-яку кореневу директорію на ваш вибір:

git clone https://github.com/user/repo.git myDir

Тут repo.gitбуло б клоновано до myDirкаталогу.

Тож навіть якщо ваш договір про іменування для публічного репо в кінцевому підсумку виявився дещо невірним, його все одно можна буде виправити на стороні клієнта.

Ось чому в розподіленому середовищі, де будь-який клієнт може робити все, що завгодно, насправді не існує конвенції про іменування для Git repo.
(за винятком резервування " xxx.git" для голої форми репо " xxx")
Можливо, буде встановлено умову іменування для REST-служби (подібно до " Чи є вказівки щодо встановлення імен для API REST API "), але це окрема проблема.


4
Гарна думка. Однак фіксація імені репо на стороні клієнта дещо доводить, що встановлення конвенції про іменування було б корисним. Ти не думаєш? Навіщо це фіксувати, якщо воно в першу чергу дотримується конвенції? Можливо, мавен сильно вплинув на мене.
Адріан М

1
@AdrianM, я можу сказати: так, конвенція про іменування є корисною, але вона не має нічого спільного з Git або GitHub, і все з тим, що ви хочете зробити з цією конкретною репо. Отже, відповідь на ваше запитання - «ні, не існує правила іменування для git-сховищ».
VonC

8

Можливо, це лише мій показ Java та C, але я віддаю перевагу CamelCase (CapCase) над розділовими знаками. Моя робоча група використовує такі імена, ймовірно, щоб відповідати іменам програми чи послуги, що містить сховище.


6
Цей пост є рідкісним, і це не є моїми особистими уподобаннями, але він все ще згадує перевагу, що назви проектів на Яві - це верблюд і є певний комфорт у конгруентності. Ми впевнені, що низовини тут - це не просто повзучість імен?
eremzeit

1
Домовились. В інших відповідях обговорюються недоліки camelCase, але в світі Java цілком розумно буде вирішити, що camelCase краще все-таки ... особливо для проектів, що не знають світу Windows.
Майкл Шепер

11
Пестичне оголошення про публічну службу: PascalCase - це не camelCase.
MarredCheese

0

Якщо ви плануєте створити пакет PHP, ви, швидше за все, хочете поставити програму Packagist, щоб зробити його доступним для інших з композитором. Композитор має в якості імен-конвенції до використання vendorname/package-name-is-lowercase-with-hyphens.

Якщо ви плануєте створити пакет JS, ви, ймовірно, хочете використовувати npm. Одне з умов їх іменування - забороняти великі літери посеред імені вашого пакета.

Тому я рекомендую для пакетів PHP та JS використовувати lowercase-with-hyphensта називати ваші пакунки в композиторі чи npm ідентично вашому пакету на GitHub.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.