Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как бы скоро не пришлось писать на Dart, TypeScript ... (https://javascript.ru/forum/offtopic/42980-kak-skoro-ne-prishlos-pisat-na-dart-typescript.html)

kobezzza 17.11.2013 17:13

Цитата:

Сообщение от DjDiablo (Сообщение 281544)
Я шизею)))))))
Как ты разбираешься только.
Где же я объявил функцию render? Ах да, 11 уровнями ниже ))))

Соглашения, JSDoc, нормальная ИДЕ и здравый смысл)

DjDiablo 17.11.2013 17:48

Цитата:

Уверен что таких поделок на JS куда больше
угу дофига, но в DART никакой возни с компиляторами или утилитами. Нет такого гемора как с прикручиванием webkit к ноде. Реально собранный готовый к употреблению продукт прямо из коробки.

1) создать проект
2) выбираем Chrome package project
3) жмем "ok"
4) жме "run"
enjoy !!! готовое десктопное приложение на базе хрома уже работает !!!

В качестве CSS фреймворка предложен bootstrap, хош на JS пиши, хош на dart или и на том и на другом одновременно.

Ее нет даже в С/С++ зачем она в JS?
Ну думаю что неявное определение типа это тоже самое что отсутствие типа.
Подозреваю что такой код не проконает.

auto year=2020;
year="две тысячи двадцать";

monolithed 17.11.2013 18:13

Цитата:

Сообщение от DjDiablo
Ну думаю что неявное определение типа это тоже самое что отсутствие типа.

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

К примеру, в С/С++ можно сделать так:

int number = 1;
number = 'a';


А Erlang, где отсутствует статическая аннотация типов, так нельзя делать даже с переменной того же типа:

$ erl
0> Number = 0 .
1> Number = 1 .
** exception error: no match of right hand side value 1

DjDiablo 17.11.2013 18:18

Тип как был целым числом так и остался, в JS тип изменится (number перестанет быть числом).
Я это к тому что нет оснований утверждать что в C++ нет типов. Просто акцент сместился в сторону автоматического определения типов и шаблонов<>. Все это работает на этапе компиляции и к исполнению это никакого отношения не имеет.

Erlang вообще не обычный язык :)

nerv_ 17.11.2013 18:37

Цитата:

Сообщение от DjDiablo
Вот что я имел ввиду
rectangle ={x,y,z,render:function(){},remove:function(){} }
circle ={x,y,z,render:function(){},remove:function(){} }
text ={x,y,z,render:function(){},remove:function(){} }
... и еще 100500 классов.
Если где то забыл переопределить render, то пока в редакторе эту фигуру не нарисуешь то ошибку не увидишь.

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

если все одинаковое, можно так
var obj = {
    a: null,
    b: 1,
    c: NaN
};
      
console.assert( Object.keys( obj ).join() === 'a,b,c', "Doesn't equal" );

Или с методами прототипа сверять, если интересуют только методы.

Вообще, если все одинаковое, можно написать один тест и только необходимые объекты в него подставлять (тестируемые).

DjDiablo 17.11.2013 18:51

Цитата:

Сообщение от nerv_ (Сообщение 281552)
если все одинаковое, можно так
Вообще, если все одинаковое, можно написать один тест и только необходимые объекты в него подставлять (тестируемые).

Ну вот поэтому я и говорил про тесты, других вариантов то нима.
Количество параметров для функции можно еще проверять.

monolithed 17.11.2013 19:40

Цитата:

Сообщение от DjDiablo
Я это к тому что нет оснований утверждать что в C++ нет типов.

Я так тоже не утверждал.
Цитата:

Сообщение от DjDiablo
Просто акцент сместился в сторону автоматического определения типов и шаблонов<>

Точнее в сторону обобщенного программирования (generic) и автоматического вывода типов на этапе компиляции :)

Так что мешет использовать JSDoc-аннотацию и GCC?

nerv_ 17.11.2013 19:48

Цитата:

Сообщение от monolithed
Так что мешет использовать JSDoc-аннотацию и GCC?

а для тупых можно поподробней? :)

Цитата:

Сообщение от kobezzza
Соглашения, JSDoc, нормальная ИДЕ и здравый смысл)

аналогичный вопрос

Цитата:

Сообщение от Gozar
Что ты так на этом все время акцентируешь внимание?

надоели уже хаять его без повода )

kobezzza 17.11.2013 19:51

Цитата:

Сообщение от nerv_ (Сообщение 281559)
а для тупых можно поподробней? :)

https://developers.google.com/closur...s-for-compiler
GCC понимает эти анотации и использует их чтобы генерировать как можно более оптимальный и эффективный код.

Цитата:

Сообщение от nerv_ (Сообщение 281559)
аналогичный вопрос

Многие JS IDE понимают JSDoc, в частности WebStorm понимает стандарт GCC JSDoc и использует его для статического анализа кода и автокомплита.

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

Ну а здравый смысл - это думать, что делаешь:)

Gozar 17.11.2013 20:30

Цитата:

Сообщение от nerv_
надоели уже хаять его без повода

Никто, ничего не хает. Где ты это углядел не ясно. Не пора закончить этот затянувшийся разговор про ангуляр?

Цитата:

Сообщение от monolithed
А Erlang, где

В Erlang нельзя изменять значение переменной, не ясно какое отношение это имеет к типам? Ну разве, что производительность это повышает, как и в статической типизации.


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