пятница, 27 декабря 2013 г.

Важность описания интерфейсов функций

Сегодня, прочитав статью http://habrahabr.ru/post/207390/, удивился тому факту, что автор не сказал ни слова об описании интерфейсов функций. Я просто не мог оставить этот факт без внимания, поскольку лично мне уже набила оскомину проблема отсутствия описания интерфейсов функций в коде.
Если вы пишете на строготипизированном языке, то у вас нет проблем с тем какого типа параметры функция принимает и возвращает. Это все есть прямо в описании функции. 

int addition (int a, int b) {
    return a + b;
}

воскресенье, 15 декабря 2013 г.

javascript best practices

Используйте jQuery

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


Не засоряйте глобальное пространство имен

Без оператора var, независимо от того, в каком месте была определена переменная, она станет глобальной. Использование глобальных переменных - очень плохая практика, чреватая трудноуловимыми ошибками. Для того, чтобы переменная получила локальную область видимости, она должна быть объявлена с var:

var $a = "Hello world";

И помните: в javascript переменные имеют функциональную область видимости.

пятница, 6 декабря 2013 г.

jQuery draggable с относительным позиционированием

Задача: необходимо иметь диалоговое окно, которое можно перетаскивать и которое при изменении размера окна будет сохранять свое положение относительно центра экрана.
Решение:
Для перетаскивания объектов на javascript уже существует такой замечательный инструмент как jquery.ui.draggable, он очень богат и именно его мне и хотелось бы использовать, но у него перетаскиваемые элементы позиционируются абсолютно. Значит, необходимо выполнить небольшую подмену.
Суть идеи такова: диалоговое окно по умолчанию находится в относительном позиционировании (left: 50%, margin-left: -width/2). Перед началом перетаскивания мы просто переводим относительные координаты в абсолютные и срабатывает стандартный jQuery.ui.draggable со всеми его особенностями. По окончании перетаскивания мы просто возвращаем объекту относительные координаты.