05.11.2011, 01:33
|
|
Профессор
|
|
Регистрация: 09.07.2007
Сообщений: 304
|
|
tenshi,
Презентация была про то чтоб верстать объектно (разбить на мелкие части и верстать маленькими кусками). Так сказать для популяризации. Ничего нового в этом нет.
БЭМ это способ создания уникальных имен классов, один из многих которые можно придумать. В своей практике выработались свои правила наименования, и они мне видятся более правильными.
приведу пример почему способ наименования принятый в БЭМ не самый удачный:
При верстке каждый объект описывается в своем шаблоне. Имя этому шаблону задаю такоеже как и имя объекта. И тут есть проблема у БЭМ, не все шаблонизаторы позволяют использовать дефис в имени шаблона.
Еше в редакторе (Notepad++) при двойном клике по имени объекта, это имя объекта будет выделено полностью если в нем использовано подчеркивание , а если будет дефис то выделено будет не полностью . Мелочь , но очень удобно в практике.
Еше так нельзя
var column-proxy = document.querySelector(".b-page-layout__column-proxy");
а так можно
var subj_firstline = document.querySelector(".b-mbox_row-subj_firstline");
это удобно если имя класса измениться, то могу в редакторе за рас менять и css и названия переменных.
я бы стал использовать правила принятые в БЭМ , потому как его многие стали применять, но он мне неудобен в этих мелочах.
Последний раз редактировалось vflash, 05.11.2011 в 04:08.
|
|
05.11.2011, 10:31
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
подчёркивание визуально длинее дефиса. и как следствие сильнее разделяет слова. проблема с дефисом в именах шаблонов остаётся и в твоём случае, только реже проявляется (когда для одного модуля нужно несколько шаблонов). по даблклику логичнее было бы выделять вообще всё имя целиком. с ctrl+backspace аналогично.
поэтому лучше так:
var subjFirstLine = document.querySelector(".mboxRow_subjFirstLine");
__________________
.ня
|
|
05.11.2011, 10:41
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от vflash
|
var subj_firstline
|
Так нельзя, в JavaScript принят другой стиль наименования переменных.
Сообщение от vflash
|
var column-proxy
|
А с этим как раз всё нормально. Есть стандарт преобразования этого в columnProxy.
|
|
05.11.2011, 13:05
|
|
Профессор
|
|
Регистрация: 09.07.2007
Сообщений: 304
|
|
Сообщение от Kolyaj
|
Так нельзя, в JavaScript принят другой стиль наименования переменных.
|
в js есть стандарт допустимых символов и правила их последовательности. а вот стиль это уже прихоть определенной группы или лица.
Сообщение от Kolyaj
|
А с этим как раз всё нормально. Есть стандарт преобразования этого в columnProxy.
|
в таком случии если css класс измениться, а такое бывает часто при разработке, то для синхронизации будет достаточно всего один рас сделать замену по документу(ам).
я ведь не про то как правильно назвать, а о том чтобы об этом вообще не думать. Есть имя у элемента , на него уже было потрачено время чтобы придумать так зачем еще тратить когда можно это сделать копипастом.
Сообщение от tenshi
|
var subjFirstLine = document.querySelector(".mboxRow_subjFirstLine");
|
в таком случаи двойной клик выделит весь класс. выделить весь класс тоже бывает нужно , но мне както чаше бывает нужно выделить часть. или имя объекта или имя элемента.
можно ведь назвать и так. так класс(css) даже привычней выглядит.
var subjFirstLine = document.querySelector(".b-mboxRow-subjFirstLine");
---
Еще в редакторах Ctrl-[вправо/влево] перемешает курсор по словам, а подчеркивание воспринимают как часть слова. Потому дифис как разделитель и тут оказывается более удобным.
_
Последний раз редактировалось vflash, 05.11.2011 в 13:15.
|
|
05.11.2011, 14:24
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
vflash,
Думаю в случае просмотра или совместной разработки, человеку смотрящему ваш код, придется поломать голову, привыкая к нижним подчеркиваниям.
Меня сейчас больше интересуют префиксы. Например целесообразно ли использовать префиксы:
f - форум,
p - персональный,
ph - фотосервис ну и т.д.
помимо b и i
?
На небольшом проекте мне это кажется очень удобным, возможно и на большом будет нормально.
По поводу повторного использования я в курсе.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
05.11.2011, 17:44
|
|
Профессор
|
|
Регистрация: 09.07.2007
Сообщений: 304
|
|
Сообщение от Gozar
|
Меня сейчас больше интересуют префиксы. Например целесообразно ли использовать префиксы:
f - форум,
p - персональный,
ph - фотосервис ну и т.д.
помимо b и i
?
|
пробовал так и отказался. лучше название проекта указывать в имени объекта. префикс это своего рода подсветка кода. например чтобы легко можно было удалить классы отвечающие за скины.
Сообщение от Gozar
|
На небольшом проекте ...
|
любой проект бьется на небольшие части. потому нет разницы что верстать большой что маленький. если нет нужды в скинах то верстать становиться совсем просто.
Сообщение от Gozar
|
Думаю в случае просмотра или совместной разработки, человеку смотрящему ваш код, придется поломать голову, привыкая к нижним подчеркиваниям.
|
среди программистов подчеркивание является обычным делом. это вообшето обще принятая практика. если верстальщик привык использовать дефис как замена пробела то программисту из-за этого приходиться работать с двумя разными стилями наименования.
|
|
05.11.2011, 23:46
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от vflash
|
в js есть стандарт допустимых символов и правила их последовательности. а вот стиль это уже прихоть определенной группы или лица.
|
Угу, и получится месиво как в PHP. Половина функций в одном стиле, половина в другом. В PHP от этого не избавиться, но зачем и в JavaScript такое творить своими руками?
Сообщение от vflash
|
Есть имя у элемента , на него уже было потрачено время чтобы придумать так зачем еще тратить когда можно это сделать копипастом.
|
Я поступил проще. У меня есть метод this.getEl(className), который принимает имя класса, возвращает первый элемент с этим классом (внутри виджета). При этом сама кэширует результаты. Поэтому ссылки на элементы я нигде не сохраняю, при необходимости делаю this.getEl() с нужным классом. В результате имя элемента только в CSS.
|
|
06.11.2011, 02:39
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
префиксы нужны для предотвращения конфликтов. поэтому все имена конкретного программиста должны иметь его префикс. или все имена программистов определённой группы, которые могут друг с другом договориться,чтобы не конфликтовать. при этом одни имена в разных местах должны иметь один префикс (например, класс в цсс и соответствующий скрипт в жс), но при этом имена относящиеся к разным сущностям должны иметь разный префикс (например, у меня есть функция $jam.$doc возвращающая ссылку на документ, а есть модуль wc:doc содержащий базовые стили и скрипты для документации). хотя по хорошему один из них лучше переименовать, чтобы самому же путаться и чтобы не было конфликтов, когда импортируются оба пространства имён типа такого:
with( $jam )
with( $wc )
{
// some code
}
__________________
.ня
|
|
06.11.2011, 09:00
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от tenshi
|
префиксы нужны для предотвращения конфликтов. поэтому все имена конкретного программиста должны иметь его префикс.
|
Как это спасёт от того, что ты не помнишь, какие имена со своим префиксом ты использовал год назад?
|
|
06.11.2011, 12:02
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
очень просто: открываешь директорию с модулями, пытаешься создать новый и тебе выдётся ошибка что такой модуль уже есть.
__________________
.ня
|
|
|
|