2011-03-24 17 views
7

Me han dicho que es una práctica estándar para prefijar nombres de clase en elementos HTML con "jq" o "js" para que el diseñador no entre en conflicto con el desarrollador.¿Las clases de elementos HTML tienen prefijos según su uso?

He estado aquí un poco y nunca he visto esto hecho y personalmente siento que esto crea una división artificial e inútil entre el diseño y el código.

La pregunta es si esto es de hecho la práctica estándar, y además, me gustaría referencias a los artículos que explican por qué esto se hace (qué problema resuelve).

+0

Las empresas pueden tener políticas bastante extrañas sobre estas cosas. Una vez trabajé en una empresa donde existía una política sobre el uso de ID para diseñar páginas por el mismo motivo. Me parece bastante irrazonable. –

+0

@Jakub - ¡eso suena ridículo! :-P – Chris

Respuesta

1

No es una práctica estándar general, pero puede ser una práctica estándar dentro de una organización específica.

El uso de prefijos para especificar el uso de un identificador se denomina notación húngara. Se usa principalmente para especificar tipos de datos en lenguajes de script sin tipeo estricto, pero la intención original era simplemente especificar cualquier aspecto que fuera crucial para el uso del identificador.

El uso de prefijos como este puede ser útil para garantizar que las clases destinadas al diseño no entren en conflicto con las clases destinadas al control del programa. Sin embargo, no depende de quién está creando la clase, sino de cómo se usa la clase. Si un desarrollador crea una secuencia de comandos que agrega una clase a los elementos para cambiar su aspecto, la clase se utiliza para el diseño, por lo que no debe tener el prefijo como nombre de clase de control de programa. Un nombre de clase utilizado para el control del programa solo se usaría para eso y no se le aplicaría ningún estilo visual.

Al igual que con la mayoría de las prácticas de programación, es más importante que elija un estándar y se adhiera a él, que elegir el estándar que sea absolutamente mejor.

-1

No estoy muy seguro de ser sincero, pero ¿puedo sugerir que tal vez busque en otros sitios web fuente HTML y vea si puede encontrar algo en esa línea? Los sitios web populares o creados por una agencia conocida que usted esperaría podrían usar dicha práctica si fuera estándar.

+0

Hacer algo solo porque otros lo están haciendo, sin saber por qué lo están haciendo?!? Eso es solo ... tonto. – Martijn

0

No he oído hablar de esto como una práctica 'estándar'. Leyendo lineamientos y artículos, nunca he visto un prefijo delante de una clase.

Sin embargo, podría ser útil prefijar un nombre de clase si fuera a usar esa clase con jQuery. Será más fácil de identificar y también permitirá que otros sepan que es utilizado por una función.

1

No solo no es una práctica estándar (excepto, presumiblemente, en su organización), sino el W3C advises against it. Los nombres de clase se deben usar para describir mejor el contenido de las etiquetas HTML semánticas, en lugar de como puntos de referencia para el diseño o desarrollo.

Esperaría que las páginas HTML de buena estructura tuvieran clases consistentes para tipos de contenido similares que serían perfectamente adecuados para el uso de JavaScript.

Un diseñador que no puede escribir HTML correctamente, recordando que el código HTML se supone que describe el contenido no lo estilo, no debería estar escribiendo HTML IMO.

+3

Creo que el artículo W3C está hablando puramente de nombres de clase desde un punto de vista presentacional, mientras que las clases ahora se usan comúnmente como ganchos jQuery sin uso visual. No leo ese artículo y creo que el W3C desaconseja los prefijos para las clases no presenciales. – ajcw

+0

@ John Catterfeld: No estoy de acuerdo. El artículo se titula "Usar clase con semántica en mente" después de todo. También FTA: "... nombre sus clases [...] con el rol que tiene un determinado elemento HTML de esa clase". – Kalessin

13

Soy el desarrollador front-end de mi organización y, como tal, soy responsable del CSS. Creo todas las clases necesarias para el diseño y la interfaz de usuario, así como para actualizar periódicamente los estilos no utilizados y el marcado.

Nuestros desarrolladores no necesitan agregar clases para la presentación, pero ocasionalmente agregan clases para Javascript. En estos casos, les pedí que precedieran sus clases con js-.

Esto simplemente me ayuda a identificar las clases que no se utilizan para la presentación, pero que todavía son necesarias para la funcionalidad. Mis otros nombres de clase son todos descriptivos del contenido.

Antes de presentar esto, era mucho más difícil mantener ordenado el margen de ganancia (quitando las clases no utilizadas) ya que las clases podían parecer redundantes (sin referencias en las hojas de estilo), pero todavía se usaban.

No he encontrado ninguna documentación que indique que esta es una mala idea. Funciona para nosotros, por lo que es simplemente una cuestión de preferencia personal.

2

Esto suena como una convención pasada de moda para mí especialmente en contexto con html/javscript/css.

Las clases solo se deben utilizar por motivos de diseño. Si hay clases de todos modos, definidas por un diseñador, entonces pueden y deben ser utilizadas por los desarrolladores. Los valores para los controles de programa puros deben definirse utilizando atributos personalizados (http://www.javascriptkit.com/dhtmltutors/customattributes.shtml). Esta práctica junto con convenciones de nombres detallados y bien pensados ​​en su mayoría evitan problemas.

También parece que las clases tendrían que asignarse a elementos dos veces a menudo con esta práctica de prefijo. Una razón más para preguntar cómo una práctica como esa puede ser buena o incluso estándar.


Editar: Prefijos puede ser útil dentro de plugins para, por ejemplo, ¡bibliotecas de Javascript por supuesto para evitar conflictos de clase!

+0

El problema con este enfoque, tanto como me gusta (de ahí el voto de +1), es que la selección de elementos por atributo de datos es significativamente más lenta que la selección de clase. Ver http://jsperf.com/attribute-vs-class-selection para la comparación. –

Cuestiones relacionadas