«Настоящие» примеси на классах JavaScript

Примеси и JavaScript: Хорошие, плохие и уродливые

Примеси и JavaScript как классическое кино с Клинтом Иствудом.

Они хороши тем, что позволяют создать объект из настолько маленьких кусков, насколько это позволяет гибкая природа JavaScript, поэтому примеси довольно популярны в определенных кругах.

Список плохих качеств немного больше:

  • нет общей идеи за концептом примесей;
  • они требуют для использования дополнительные библиотеки;
  • более усложненное создание (например, координацию между примесями и прототипами) и не вписывается в природу шаблонов проектирования;
  • сложнее проводить статический анализ;
  • и наконец, большая часть библиотек мутирует объекты или их прототипы, что приводит к проблемам с оптимизацией, поэтому некоторые программисты их избегают.

Функциональный TypeScript

functional typescript

При обсуждении функционального программирования, мы часто говорим о механизме и не говорим об основных принципах. Функциональное программирование это не монады, моноиды и производные от типов, даже если их полезно знать. В основном это написание программ в стиле обобщенных и повторно используемых функций. В этой статье мы рассмотрим применение функционального мышления при рефакторинге кода на языке TypeScript.

И сделаем мы это, следуя следующим трем пунктам:

  • Используем простые функции вместо простых значений
  • Моделируем изменение данных как конвейер
  • Извлечем обобщенные функции

Итак, начнем-с!…

Оценка ПО: полная чушь

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

На деле - нет. Правильно оценить, сколько займет что-то запрограммировать вряд ли возможно. Я никогда не мог, и каждый раз, когда я вижу кого-то, кто пробует - всегда ошибается.…

Области видимости переменных в JavaScript и их подводные камни

В этом посте мы разберемся с областями видимости в JavaScript. Обратим внимание на две вещи, которые могут приводить к проблемам, если вы о них не позаботитесь: область видимости переменных в JavaScript - функции, и они могут быть захвачены в замыкания.

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

Асинхронное программирование и стиль продолжений в JavaScript

В этой статье мы рассмотрим асинхронные функции обратного вызова в JavaScript как продолжения (continuation-passing style aka CPS). Разберемся, как они работают и дадим несколько рекомендаций о их использовании.

Асинхронное программирование и функции обратного вызова

Если вы когда-нибудь программировали на JavaScript, то, вероятно, заметили, что все работает по-другому: вместо возвращения значения, оно передается в функцию обратного вызова. Синхронная программа выглядит следующим образом:

function loadAvatarImage(id) {
    var profile = loadProfile(id);
    return loadImage(profile.avatarUrl);
}

Однако, задачи типа загрузки профиля пользователя могут занимать длительное время, поэтому лучше загрузить их асинхронно.…

Миф о повторном использовании

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

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

Директор клюет на это, так как каждый проталкивает эту идею как ответ на цену и проблему с производительностью.…

Жизненные уроки от бывалого программиста

За три десятилетия программистской деятельности, я усвоил пару-тройку уроков. Ниже несколько самых лакомых.

  • Клиенты знают, чего хотят, только после того, как это увидят это. Я усвоил это на моей первой работе. Клиенты не осознают, что, собственно, необходимо, пока вы им это не покажете. Функциональное прототипирование всегда выигрывает у набора слов.

  • При достаточном количестве времени, вся защита может быть взломана. В сегодняшнем мире невероятно сложно правильно построить защиту.

Почему я не работаю за неоплачиваемые сверхурочные и вы не должны

Как программист в США на протяжении 30 лет, я потратил некоторое время, работая больше 40 часов в неделю, что довольно распространено в этой индустрии. И редко, если вообще, получал большую оплату.

Хватит, теперь я нахожу эту идею тошнотворной.

Я не говорю о работе на свой собственный бизнес или работе на стартап или другие бизнес-активности, где дополнительные часы могут быть хорошо оплачеваемые.…

Руководство по именованию переменных

Польза от именования

Программное обеспечение должно быть написано для понимая людьми, поэтому имена переменных должны быть соответствующие. Люди которые разбирают/читают ваш код, для расширения или исправления, должны понять его. Очень часто, имена переменных используют много места и усложняют понимание. Даже инженеры действующие с хороших побуждений, очень часто выбирают имена которые в лучшем случае только очень поверхностно полезны.

Назначение этого документа, помочь инженерам выбрать хорошие имена переменных.…

Железнодорожно-ориентированное программирование

В предыдущем посте мы рассмотрели, как вариант использования можно разбить на шаги, а все ошибки вынести в отдельный путь.

Recipe Function ErrorTrack

В этом посте, мы рассмотрим разные пути соединения шагов-функций в один блок. Внутреннее строение этих функций будет рассмотрено в будущих постах.

Проектирование функций представляющих собой шаг

Давайте более детально рассмотрим эти шаги. Например, функцию валидации. Как она должна работать? Некоторые данные поступают в нее, но что должно быть на выходе?…