Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   имена классов в html верстке (https://javascript.ru/forum/xhtml-html-css/21840-imena-klassov-v-html-verstke.html)

vflash 05.11.2011 01:33

tenshi,
Презентация была про то чтоб верстать объектно (разбить на мелкие части и верстать маленькими кусками). Так сказать для популяризации. Ничего нового в этом нет.

БЭМ это способ создания уникальных имен классов, один из многих которые можно придумать. В своей практике выработались свои правила наименования, и они мне видятся более правильными.

приведу пример почему способ наименования принятый в БЭМ не самый удачный:

При верстке каждый объект описывается в своем шаблоне. Имя этому шаблону задаю такоеже как и имя объекта. И тут есть проблема у БЭМ, не все шаблонизаторы позволяют использовать дефис в имени шаблона.

Еше в редакторе (Notepad++) при двойном клике по имени объекта, это имя объекта будет выделено полностью если в нем использовано подчеркивание , а если будет дефис то выделено будет не полностью . Мелочь , но очень удобно в практике.



Еше так нельзя
var column-proxy = document.querySelector(".b-page-layout__column-proxy");

а так можно
var subj_firstline = document.querySelector(".b-mbox_row-subj_firstline");

это удобно если имя класса измениться, то могу в редакторе за рас менять и css и названия переменных.

я бы стал использовать правила принятые в БЭМ , потому как его многие стали применять, но он мне неудобен в этих мелочах.

tenshi 05.11.2011 10:31

подчёркивание визуально длинее дефиса. и как следствие сильнее разделяет слова. проблема с дефисом в именах шаблонов остаётся и в твоём случае, только реже проявляется (когда для одного модуля нужно несколько шаблонов). по даблклику логичнее было бы выделять вообще всё имя целиком. с ctrl+backspace аналогично.

поэтому лучше так:
var subjFirstLine = document.querySelector(".mboxRow_subjFirstLine");

Kolyaj 05.11.2011 10:41

Цитата:

Сообщение от vflash
var subj_firstline

Так нельзя, в JavaScript принят другой стиль наименования переменных.

Цитата:

Сообщение от vflash
var column-proxy

А с этим как раз всё нормально. Есть стандарт преобразования этого в columnProxy.

vflash 05.11.2011 13:05

Цитата:

Сообщение от Kolyaj
Так нельзя, в JavaScript принят другой стиль наименования переменных.

в js есть стандарт допустимых символов и правила их последовательности. а вот стиль это уже прихоть определенной группы или лица.

Цитата:

Сообщение от Kolyaj
А с этим как раз всё нормально. Есть стандарт преобразования этого в columnProxy.

в таком случии если css класс измениться, а такое бывает часто при разработке, то для синхронизации будет достаточно всего один рас сделать замену по документу(ам).
я ведь не про то как правильно назвать, а о том чтобы об этом вообще не думать. Есть имя у элемента , на него уже было потрачено время чтобы придумать так зачем еще тратить когда можно это сделать копипастом.


Цитата:

Сообщение от tenshi
var subjFirstLine = document.querySelector(".mboxRow_subjFirstLine");

в таком случаи двойной клик выделит весь класс. выделить весь класс тоже бывает нужно , но мне както чаше бывает нужно выделить часть. или имя объекта или имя элемента.

можно ведь назвать и так. так класс(css) даже привычней выглядит.
var subjFirstLine = document.querySelector(".b-mboxRow-subjFirstLine");



---
Еще в редакторах Ctrl-[вправо/влево] перемешает курсор по словам, а подчеркивание воспринимают как часть слова. Потому дифис как разделитель и тут оказывается более удобным.


_

Gozar 05.11.2011 14:24

vflash,
Думаю в случае просмотра или совместной разработки, человеку смотрящему ваш код, придется поломать голову, привыкая к нижним подчеркиваниям.

Меня сейчас больше интересуют префиксы. Например целесообразно ли использовать префиксы:
f - форум,
p - персональный,
ph - фотосервис ну и т.д.
помимо b и i
?

На небольшом проекте мне это кажется очень удобным, возможно и на большом будет нормально.

По поводу повторного использования я в курсе.

vflash 05.11.2011 17:44

Цитата:

Сообщение от Gozar
Меня сейчас больше интересуют префиксы. Например целесообразно ли использовать префиксы:
f - форум,
p - персональный,
ph - фотосервис ну и т.д.
помимо b и i
?

пробовал так и отказался. лучше название проекта указывать в имени объекта. префикс это своего рода подсветка кода. например чтобы легко можно было удалить классы отвечающие за скины.

Цитата:

Сообщение от Gozar
На небольшом проекте ...

любой проект бьется на небольшие части. потому нет разницы что верстать большой что маленький. если нет нужды в скинах то верстать становиться совсем просто.

Цитата:

Сообщение от Gozar
Думаю в случае просмотра или совместной разработки, человеку смотрящему ваш код, придется поломать голову, привыкая к нижним подчеркиваниям.

среди программистов подчеркивание является обычным делом. это вообшето обще принятая практика. если верстальщик привык использовать дефис как замена пробела то программисту из-за этого приходиться работать с двумя разными стилями наименования.

Kolyaj 05.11.2011 23:46

Цитата:

Сообщение от vflash
в js есть стандарт допустимых символов и правила их последовательности. а вот стиль это уже прихоть определенной группы или лица.

Угу, и получится месиво как в PHP. Половина функций в одном стиле, половина в другом. В PHP от этого не избавиться, но зачем и в JavaScript такое творить своими руками?


Цитата:

Сообщение от vflash
Есть имя у элемента , на него уже было потрачено время чтобы придумать так зачем еще тратить когда можно это сделать копипастом.

Я поступил проще. У меня есть метод this.getEl(className), который принимает имя класса, возвращает первый элемент с этим классом (внутри виджета). При этом сама кэширует результаты. Поэтому ссылки на элементы я нигде не сохраняю, при необходимости делаю this.getEl() с нужным классом. В результате имя элемента только в CSS.

tenshi 06.11.2011 02:39

префиксы нужны для предотвращения конфликтов. поэтому все имена конкретного программиста должны иметь его префикс. или все имена программистов определённой группы, которые могут друг с другом договориться,чтобы не конфликтовать. при этом одни имена в разных местах должны иметь один префикс (например, класс в цсс и соответствующий скрипт в жс), но при этом имена относящиеся к разным сущностям должны иметь разный префикс (например, у меня есть функция $jam.$doc возвращающая ссылку на документ, а есть модуль wc:doc содержащий базовые стили и скрипты для документации). хотя по хорошему один из них лучше переименовать, чтобы самому же путаться и чтобы не было конфликтов, когда импортируются оба пространства имён типа такого:

with( $jam )
with( $wc )
{
// some code
}

Kolyaj 06.11.2011 09:00

Цитата:

Сообщение от tenshi
префиксы нужны для предотвращения конфликтов. поэтому все имена конкретного программиста должны иметь его префикс.

Как это спасёт от того, что ты не помнишь, какие имена со своим префиксом ты использовал год назад?

tenshi 06.11.2011 12:02

очень просто: открываешь директорию с модулями, пытаешься создать новый и тебе выдётся ошибка что такой модуль уже есть.


Часовой пояс GMT +3, время: 19:40.