Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Именование конструкторов (https://javascript.ru/forum/misc/19173-imenovanie-konstruktorov.html)

Octane 28.07.2011 00:12

Именование конструкторов
 
Есть много пользовательских конструкторов или просто объектов: Range, Selection, Node, Element, Event и т.д. И вообще они не глобальные конечно же
(function (ns) {
    function $Range() {…}
    …
    ns.Range = $Range;
}(…));

Чтобы в коде не путать со стандартными/встроенными объектами, я обычно именовал их так: $Range, $Selection, $Node. Ну и соответственно экземпляры: $range, $node, $sel… но просто уже за%#@ло отвечать на идиотские вопросы про $ в JavaScript. Как бы вы именовали конструкторы?

monolithed 28.07.2011 01:15

Цитата:

Сообщение от Octane
$Range, $Selection, $Node.

А почему не выбрать альтернативные названия или использовать подчеркивание в конце/начале именования?
$ это уже как стандарт фе-факто, для обозначения ссылки на объекты типа jQuery.

По-моему вполне прилично смотрится:
function Range_() {

}

Octane 28.07.2011 01:34

Подчеркивание в начале приватных свойств использую обычно. В коде может получится что-то вроде:
Range_._prevRange = …

Kolyaj 28.07.2011 13:56

А что это за конструкторы? Они дублируют нативные?

vflash 28.07.2011 14:20

my_range итд )))

а $ нелюблю потому как потом руки ломит от Shift+3

Octane 28.07.2011 18:18

Цитата:

Сообщение от vflash
my_range итд )))

В JavaScript для конструкторов принято использовать UpperCamelCase.

Цитата:

Сообщение от Kolyaj
А что это за конструкторы? Они дублируют нативные?

Ну не копируют, но имеют непосредственное отношение к ним, например:
$Range = {
	
	standardsCompliant: $Selection.standardsCompliant,
	
	TEXT_NODE: 3,
	
	stringify: function (range) {
		if (this.standardsCompliant) {
			return range.toString();
		}
		return range.text;
	},
	
	getRootContainer: function (range) {
		if (this.standardsCompliant) {
			var root = range.commonAncestorContainer;
			return root.nodeType == this.TEXT_NODE ? root.parentNode : root;
		}
		return range.parentElement();
	},
	
	isCollapsed: function (range) {
		return this.standardsCompliant ? range.collapsed : !range.htmlText.length;
	},
	
	clone: function (range) {
		return range[this.standardsCompliant ? "cloneRange" : "duplicate"]();
	},
	
	create: function () {
		return (this.standardsCompliant ? document : document.selection).createRange();
	}
};


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