LINUX.ORG.RU

Как научиться писать хороший JS


0

1

Постепенно все чаще сталкиваюсь с необходимостью писать довольно сложную логику на джаваскрипте. Но зачастую выходит быдлокод. Больно уж язык непривычный. Посоветуйте хорошую продвинутую документацию, где рассказано о best practices.

И вообще, расскажите как вы достигли высочайших высот в мастерстве кодинга на джаваскрипте.

★★★★★

С чего ты взял что получается быдлокод? То есть, определить что код плохой ты сумел, а исправить причины, по которым он получился плохим - нет?

jessey
()

логику на джаваскрипте

логику или «UI»?

если первое то.. возможно дело не в JS..

если второе, то посмотрите backbone.js

ZuBB ★★★★★
()
Ответ на: комментарий от jessey

> С чего ты взял что получается быдлокод?

Он не соответсвует моим эстетическим идеалам. Не получается красиво структурировать, сделать все ортогональным, и т. д.

Хочется посмотреть на лучшее, что написано на JS, с комментариями почему так, а не иначе.

provaton ★★★★★
() автор топика
Ответ на: комментарий от jessey

Это займет больше времени чем чтение методически грамотно составленного обучающего материала.

provaton ★★★★★
() автор топика

когда-то я задавался таким же вопросом. пришёл к выводу, что философия питона хорошо подходит к JS.

$python -c 'import this'

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

Ну питон для меня основной язык, и JS все равно непривычен. Хотя бы отсутствием модулей и единым неймспейсом.

provaton ★★★★★
() автор топика
Ответ на: комментарий от provaton

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

AGUtilities ★★★
()
Ответ на: комментарий от provaton

может. но в UI коде обычно логика работы UIя. а она как правило не сложная и ее не много

если у вас среди логики UI есть и логика клиентского приложения то это очень плохо

ZuBB ★★★★★
()
Ответ на: комментарий от ZuBB

> если у вас среди логики UI есть и логика клиентского приложения то это очень плохо

Да, правильная мысль. Вот как раз разделять код в JS получается плохо. Скорей всего из-за того, что сильно привык к модулям и неймспейсам.

provaton ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

хороший JS

Это оксюморон.

Так и скажи, что неосилил JS.

Что-то Facebook, Yandex, Yahoo, Twitter, Vkontakte и еще 100500 компаний не жалуются используя его.

А некоторые, о ужас, даже используют JS на стороне сервера в виде node.js (некоторых с пруфами можно найти на главной http://nodejs.org/ )

anthill
()
Ответ на: комментарий от anthill

Web — самый неприятный стек технологий на текущий момент с кучей исторически обусловленных костылей. Даже хуже, чем шиндошс.

JS на сервере — вообще отличный способ выстрелить себе в ногу.

PolarFox ★★★★★
()
Ответ на: комментарий от anthill

> Что-то Facebook, Yandex, Yahoo, Twitter, Vkontakte и еще 100500 компаний не жалуются используя его.

Если бы были альтернативы, то это можно было бы считать аргументом.

provaton ★★★★★
() автор топика
Ответ на: комментарий от provaton

Это займет больше времени чем чтение методически грамотно составленного обучающего материала.

Да ты упоротый! Куда быстрее заюзать гугно типа jQuery, освоив 4 кб текста (а потом гуглить), чем погрузиться по самую макушку в этот ахтунг.

helios ★★★★★
()
Ответ на: комментарий от PolarFox

JS на сервере — вообще отличный способ выстрелить себе в ногу.

Выстрелить в ногу можно на абсолютно любом языке.

anthill
()
Ответ на: комментарий от anthill

OMG, только про nodejs не надо, ладно? Жутко неочевидная вещица... Куда проще раскурить v8. А автор сего поделия... Короче почитайте в интернетах, как он жрёт кактусы, пытаясь использовать Unix со своим извращённым воображением.

А популярность nodejs - это всего лишь популярность. Brainfuck тоже многим интересен.

helios ★★★★★
()
Ответ на: комментарий от anthill

Выстрелить в ногу можно на абсолютно любом языке.

Для императивщиков подобный выстрел не является очевидным (для остальных - тоже, но они с этим смирились) - от сюда и шум.

helios ★★★★★
()
Ответ на: комментарий от helios

гугно типа jQuery

Да ну, есть пруфы? :)

погрузиться по самую макушку в этот ахтунг.

Да тут прямо секта хейтеров JS какая то.

anthill
()
Ответ на: комментарий от provaton

Если бы были альтернативы, то это можно было бы считать аргументом.

таки есть в виде tcl, того же python, java и ещё некоторых, которые можно засовывать в <script>. но проблема в рандомном распространении.

AGUtilities ★★★
()
Ответ на: комментарий от anthill

гугно типа jQuery

Да ну, есть пруфы? :)

с 1.6 стало проще, конечно, но когда в том же 1.3 для $('#attention').fadeIn(500).delay(5000).fadeOut(500), нужно было делать setTimeout... Ну ё-моё...

Уныло это всё.

Ещё негатива добавляют различные реализации в браузерах.

helios ★★★★★
()

Лорчую Backbone. Алсо, советую переходить на CoffeeScript. Если и на нём будет получаться быдлокод, значит, проблема-таки в кривизне рук :)

Apple-ch ★★
()
Ответ на: комментарий от helios

Ещё негатива добавляют различные реализации в браузерах.

Невозможно отрицать очевидные вещи.

Правда jQuery как раз и разрабатывался с целью всем браузерам дать равные права.

anthill
()
Ответ на: комментарий от AGUtilities

> таки есть в виде tcl, того же python, java и ещё некоторых, которые можно засовывать в <script>.

А совместимость?

provaton ★★★★★
() автор топика
Ответ на: комментарий от anthill

Правда jQuery как раз и разрабатывался с целью всем браузерам дать равные права.

Юг с ним, jQuery - вроде на новых версиях пока косяков не встретил. Но вот плагины для него зачастую заставляют мозг кипеть. Последний пример - jCrop. Пока не пытаешься что-то кастомное изобразить - всё работает. Как только - вылазят проблемы браузерных движков (моя позиция здесь - Gecko рулит, WebKit - фигня).

helios ★★★★★
()
Ответ на: комментарий от anthill

Хотя тут на днях всплывала проблема - на древних хромоногих keydown и keyup не работали под jQuery на Ctrl+v. Заказчик много мозга выел нашему проджекту.

helios ★★★★★
()
Ответ на: комментарий от helios

извините, что хабр

Ничего страшного.

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

anthill
()
Ответ на: комментарий от anthill

По ссылке какая то гора мата и жгучее желание вычилить фибоначи в nodejs, даже не вчитывался. Cложно принимать серьезно статью где в каждой строчке автор генерирует сотни ненависти.

Быстрофикс.

anthill
()
Ответ на: комментарий от anthill

Ну, моё настроение было близко к его. Да и бредовость товарища главного разработчика nodejs вполне описывается его потугами. Возможно, путь nodejs и верен. Но я бы не хотел быть в команде на этом корабле.

// ps я нынче лублу Mojo - он тоже с элементами хитрожопщины, но костылей приходится ставить меньше.

helios ★★★★★
()
Ответ на: комментарий от provaton

нету ещё никакой совместимости. часто нет совместимости между JSами разных броузеров, так что про питон или что-либо ещё и говорить рано. тем не менее, мозилка вот движется к питону: https://developer.mozilla.org/en/Python#Python_in_Mozilla-based_applications

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

В современном вебе хорошо бы смотрелось что-то вроде llvm.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

То, что большинство не понимает, что нода - асинхронная, и долгие вычисления будут её тормозить, не значит, что нода - уг.

Эта богоподобная асинхронность уже умеет на нескольких ядрах работать? Есть какие-то плюсы сей асинхронности, когда мы из базы гребём тонных навоза под нагрузкой?

helios ★★★★★
()

тред не читал, сразу отвечаю: backbone, coffeescript, дальше сам разберешься

trashymichael ★★★
()
Ответ на: комментарий от anthill

DEVELOPERS WANTED! Write to: vahvarh@gmail.com

- она пока в разработке, думаю, vahvarh будет рад новому тестеру :)

helios ★★★★★
()

Считал JS говноязыком до тех пор пока не почитал JavaScript: The Good Parts. Вполне приемлемо, а проблемы кроссбраузерности на приемлемом уровне решаются библиотеками типа jquery. Однако на server side я бы не стал использовать. И синтаксис ruby значительно больше нравится.

psp13
()

расскажите как вы достигли высочайших высот в мастерстве кодинга на джаваскрипте.

Не достиг =(

VirRaa ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.