The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз серверной JavaScript-платформы Node.js 0.8, opennews (??), 26-Июн-12, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


54. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от хзкто (ok), 27-Июн-12, 09:02 
Кто вас заставляет писать такой код? Выносите всё в отдельные методы, не допуская большой вложенности, и не будет никаких проблем. Это всё равно что написать, например, на питоне код с кучей вложеных конструкций и, показывая на него, говорить что питон - говно.
Ответить | Правка | К родителю #21 | Наверх | Cообщить модератору

55. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от Аноним (-), 27-Июн-12, 09:21 
Меня никто не заставляет.
Это эталонный код с сайта разработчиков
http://nodejs.org/api/domain.html
>Выносите всё в отдельные методы,

Так не получится, так как теряется основное преимущество js - замыкания.


Ответить | Правка | Наверх | Cообщить модератору

57. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от хзкто (ok), 27-Июн-12, 09:31 
> Так не получится, так как теряется основное преимущество js - замыкания.

вы сами писать пробовали? Методы отлично соседствуют с замыканиями и не приходится создавать многократную вложенность, всё в пределах разумного.
Кроме методов, для упрощения можно создавать замыкания не в момент передачи ( `foo(function() {})` ), а вынося их в переменную ( `var bar = function() {}; foo(bar);` ), иногда это делает код более понятным.

Ответить | Правка | Наверх | Cообщить модератору

59. "Релиз серверной JavaScript-платформы Node.js 0.8"  –1 +/
Сообщение от Аноним (-), 27-Июн-12, 10:00 
бла бла бла. Плавали знаем.
Если не использовать замыкания - какой смысл в javascript?
>Кроме методов, для упрощения

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


a = 10
setTimeout ->
  console.log a
,1
a = 100

Результат 100

a = 10
func_maker = (x)->
  ->console.log x
setTimeout func_maker(a),1
a = 100

Результат 10 - Приятной отладки сцукu.
Ответить | Правка | Наверх | Cообщить модератору

60. "Релиз серверной JavaScript-платформы Node.js 0.8"  –1 +/
Сообщение от Аноним (-), 27-Июн-12, 10:13 
Причем для полного счастья для ссылочных типов поведение кардинально отличается

obj = {}
obj.a = 10
setTimeout ->
  console.log obj
,1
jbj.a = 100

Результат {a:100}

obj = {}
obj.a = 10
func_maker = (x)->
  ->console.log x
setTimeout func_maker(obj),1
obj.a = 100

результат (!)тоже {a:100}
И нафига такой гемор? Только контекстно зависимых языков мне нехватало.
Ответить | Правка | Наверх | Cообщить модератору

64. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от хзкто (ok), 27-Июн-12, 10:41 
> Причем для полного счастья для ссылочных типов поведение кардинально отличается

очевидно, чтобы использовать ссылки, нужно понимать, что такое ссылки. Разве нет?

Ответить | Правка | Наверх | Cообщить модератору

68. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от Аноним (-), 27-Июн-12, 10:55 
Что бы что то советовать нужно быть знакомым с предметом. Вы не знакомы.


Ответить | Правка | Наверх | Cообщить модератору

62. "Релиз серверной JavaScript-платформы Node.js 0.8"  –1 +/
Сообщение от хзкто (ok), 27-Июн-12, 10:36 
> a = 10
> setTimeout ->
>   console.log a
> ,1
> a = 100

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

> Результат 10 - Приятной отладки сцукu.

казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая

Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

67. "Релиз серверной JavaScript-платформы Node.js 0.8"  –1 +/
Сообщение от Аноним (-), 27-Июн-12, 10:53 
Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание программ.
>казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая

Приехали. Эта вообще не ошибка. Это коренная отличительная особенность js вообще и node.js в частности.
Поэтому сначала ознакомьтесь с нодой, а уже потом давайте советы как "улучшить" чужой код.
Кстати, я говорил, что преждевременная оптимизация корень всех бед?

Рекомендованным способом уйти от "спагетти" callback-ов является использование EventEmitter -ов. См видеогайд от одного из разработчиков node Tom Hughes-Croucher
"Рow to stop writing spaghetti code"
www.youtube.com/watch?v=YRJGEc2kkDY
а не то что вы там выдумали.

Ответить | Правка | Наверх | Cообщить модератору

84. "Релиз серверной JavaScript-платформы Node.js 0.8"  +/
Сообщение от anon9 (?), 27-Июн-12, 13:14 
> Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание
> программ.

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

> Приехали. Эта вообще не ошибка. Это коренная отличительная особенность js вообще и
> node.js в частности.

безусловно, это грабли жаваскрипта, о чём я и написал

> Рекомендованным способом уйти от "спагетти" callback-ов является использование EventEmitter -ов. См видеогайд от одного из разработчиков node Tom Hughes-Croucher
> "Рow to stop writing spaghetti code"
> www.youtube.com/watch?v=YRJGEc2kkDY

а не то что вы там выдумали. EventEmitter
EventEmitter - отличная вещь и его нужно юзать везде где это возможно, только он решает другую проблему. EventEmitter - это всего лишь удобный инструмент для инкапсуляции, не более того. Сам по себе он никак не мешает писать трёхэтажные конструкции в обработчиках.

Ответить | Правка | Наверх | Cообщить модератору

58. "Релиз серверной JavaScript-платформы Node.js 0.8"  +1 +/
Сообщение от хзкто (ok), 27-Июн-12, 09:37 
> Меня никто не заставляет.
> Это эталонный код с сайта разработчиков
> http://nodejs.org/api/domain.html

Это всего лишь пример, в который намеренно вставили много асинхронных операций. Код внутри не надо читать и поддерживать, он там только для демонстрации некоторой сложной асинхронной логики.

Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру