2008-10-21 7 views
42

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

 
1. somecoolclass.rb 
2. some_cool_class.rb 
3. some-cool-class.rb 
4. SomeCoolClass.rb 

или какой-либо другой вариант?

Я заметил, что в Ruby stdlib используются версии 1, 2 и 3.

ответ

37

Только с Ruby (т. Е. Не Rails), именование - это только соглашение. В Rails необходимо использовать (подчеркивание) значение подчеркивания convention.

Я думаю, что соглашение # 2 lowercase_and_underscore.rb является более распространенным и выглядит довольно хорошо, хотя статья Here говорит, что lowercasenounderscore.rb - это конвенция Руби.

Выберите либо, который когда-либо был обычным, или который когда-либо вам больше нравился. Самое главное - быть последовательным в рамках проекта.

+6

Слово из Ruby Gems является использование подчеркивания (ака коробчатого режущими или змей) для имен файлов и имена Gem: [Последовательное Naming] (http://guides.rubygems.org/patterns/ # самосогласованного именование). – stevenharman 2011-08-03 22:25:35

+9

Эта статья, которую вы указали для `lowercasenounderscore.rb`, является старой, и я не видел, чтобы кто-то еще утверждал, что это соглашение. Подчеркивания почти повсеместно являются стандартом. – SFEley 2012-05-16 21:18:47

7

Я бы рекомендовал символы нижнего регистра с символами подчеркивания (номер 2 в вашем вопросе). Это правда, что эта схема именования является конвенцией в Rails и не нужна в проектах без Rails. Тем не менее, я все равно придерживаюсь соглашения Rails, потому что большинство программистов Ruby, вероятно, используют Ruby исключительно для Rails.

+0

Не только это, но и подчеркивание - это соглашение для большинства инструментов тестирования, интерфейсов плагинов и т. Д. (Например, если у вас есть файл `foo.rb` и spec-файл в` spec/foo_spec.rb`, Autotest будет запускать последний, когда первый изменится, и у многих текстовых редакторов будут ярлыки для перехода между ними.) – SFEley 2012-05-16 21:22:25

4

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

Bad
# gem install my_cool_lib 
require 'my-cool-lib' 

# gem install MyCoolLib 
require 'my_cool_lib' 
Хорошо
# gem install my_cool_lib 
require 'my_cool_lib' 

# gem install my-cool-lib 
require 'my-cool-lib' 

К сожалению, небольшая горстка библиотек нарушают это простое правило юзабилити. Не будьте одной из этих библиотек. :)

3
my-proj 
├── README 
├── lib 
│   └── some_cool_class.rb 
└── test 
    └── some_cool_class_test.rb