teclado subguion simbolo largo ingles guion escribe computadora como bajo arroba ruby naming-conventions

ruby - subguion - ¿Debería uno usar guiones o guiones bajos al nombrar una gema con más de una palabra?



guion largo (2)

Estoy confundido acerca de lo que es la convención de nombres de gemas cuando el nombre de la gema tiene más de una palabra.

  • thinking-sphinx es el nombre de la gema, pero el archivo base * .rb para esta gema es lib / thinking_sphinx.rb (guiones bajos)

  • acts-as-taggable-on es el nombre de la gema, y ​​el archivo base * .rb se llama lib / acts-as-taggable-on.rb (guiones)

  • factory_girl usa un guion bajo tanto en el nombre de la gema como en el nombre del archivo base * .rb

¿Importa si uno usa guiones bajos o guiones? ¿Hay algún consenso emergente aquí?


Eric Hodel tiene una publicación en el blog sobre esto: una recomendación de denominación de proyectos

Rails solidificó la convención de asignar nombres de clase CamelCase a nombres de archivo subrayados (la clase IMAPProcesor se define en imap_processor.rb). El uso de nombres de gemas subrayadas hace que sea fácil para las personas averiguar qué archivo requerir (igual que el nombre del proyecto) o qué nombre de clase buscar en ri.

Si tengo una joya de complemento o una extensión, voy a virar el nombre del subproyecto con un guion. Si quisiera agregar un nuevo controlador para imap_to_rss para el correo electrónico del banco Chase, la gema se llamaría imap_to_rss-chase.


Siguiendo los consejos here , aquí hay una tabla de cómo se romperían las cosas.

| Gem name | Require statement | Main class or module | |:--------------------|:-----------------------------|:----------------------| |fancy_require |require ''fancy_require'' | FancyRequire | |ruby_parser |require ''ruby_parser'' | RubyParser | |net-http-persistent |require ''net/http/persistent'' | Net::HTTP::Persistent | |rdoc-data |require ''rdoc/data'' | RDoc::Data | |autotest-growl |require ''autotest/growl'' | Autotest::Growl | |net-http-digest_auth |require ''net/http/digest_auth''| Net::HTTP::DigestAuth |