Press "Enter" to skip to content

Leaky abstractions — MPJ’s Musings — FunFunFunction #58


хорошее утро в понедельник, я mpj, и вы
смотря забавную забавную функцию,
заметив, что у меня немного сексуальность
голос идет, и это потому, что у меня есть
холодный, позвольте мне дать вам обзор
какое сегодняшнее видео будет о
сегодня мы поговорим об утечках
абстракция абстракции позволяет нам
лечить что-то сложное, как одно
простая вещь абстракции намного сложнее
чем мы думаем, и поэтому в основном это
негерметичная абстракция является
абстракция, которая не выполняется при инкапсуляции
и негерметичная абстракция может добавить больше
сложность, чем она удаляет, давайте начнем
будучи немного философским, что
это абстракция действительно не просто
но в целом
абстракция — воображаемое понятие, что
позволяет нам думать о чем-то большом
и сложный как один маленький простой
например, в реальном мире мы
может связывать чихуахуа и лабрадор и
придумать концепцию мнимой концепции
называемая собака, эта общая абстрактная собака
на самом деле не существует, если вас спросили
рисовать собаку, которую вы, вероятно, будете рисовать
что-то стилизованное с хвостом, а некоторые
уши, даже если реальная вещь
собака более тонкая и
сложно, почему мы это делаем
какова цель использования человеком
абстракции хорошо, мы используем абстракции для
думать и общаться более эффективно
если бы у нас не было абстракций, мы бы
не быть в состоянии сказать предложения, как если бы
ваша собака болен, вы должны
Собака к ветеринару , так что слова собака и
ветеринар — это абстрактные понятия
которые инкапсулируют большую сложность, поэтому
что мы можем думать о них без
отвлекаться на всю сложность
что находится позади
слово или препятствие в
программирование абстракций
по сути, та же самая цель мы
используйте его, чтобы связать часто много сложных
вещи в единый простой объект один
примером может быть аутентификация пользователя
есть много движущихся частей для
аутентификации пользователя и, допустим,
вы в настоящее время работаете над приложением, которое
имеет пользователей, но вы в настоящее время работаете
в потоке загрузки изображения профиля
хотите, чтобы аутентификация была абстрагирована
далеко от мира, который
вы в настоящее время находитесь в профиле
загружать мир, если аутентификация
должным образом отвлеченный , вы будете
умеет думать о том, что вы знаете пользователя как
очень простая концепция и не заботятся о
подробности об этом, например,
аутентифицированы или нет, и это хорошо
потому что это позволит вам сосредоточиться
полностью загружать изображение профиля
проблема , которую вы пытаетесь решить в
рука
большинство абстракций создаются вами в
ваше собственное приложение, но абстракции
их лучших, когда нам удалось создать
абстракции, с которыми мы можем делиться
других программистов в вашей компании или
возможно, даже в вашей отрасли для
пример хэширования, который вы не хотите хранить
паролей открытого текста в вашей базе данных.
математики изобрели хеширование
алгоритмы почти во всех приложениях
которые имеют определенную форму аутентификации
нуждается в хэшировании и, к счастью , там
много готовых абстракций
которые доступны для вас, вы просто переходите на MPM
восток или ша-1 и уха
у вас есть хеширование в вашем приложении
проблема настолько хорошо инкапсулирована, что
Мне никогда не приходилось реализовывать
алгоритм хэширования сам это просто
фантастический, который является розовым и пушистым
и приятная сторона монеты, но я хочу
говорить о более темной стороне приложений
действие, что хеширование утечки является хорошим
пример абстракции, которая протекает
очень мало, и я имею в виду, что это
что это очень редко, что вам нужно
знать что-нибудь об кишечнике, чтобы
говорить о хешировании
реализации для того, чтобы работать с ним
это очень простой черный ящик, который вы
вещь в, и вы получаете вещь
и он работает так каждый раз
и причина, почему хеширование действительно работает
а также абстракции или, по крайней мере,
Основная причина заключается в том, что он успешно
определил общий случай, что я имею в виду
тем, что требуется миллионы приложений
хеширование, и они в значительной степени нуждаются в
точно так же, как вы
string, и вы получите хешированную строку
хорошо, так что будет примером
напротив, что было бы примером
абстракция , которая не идентифицирует ее
как чистый, и поэтому
более явная абстракция для этого я думаю
мы должны связаться с HTTP- запросами
библиотеки на высоком уровне и для
этот конкретный пример , который я собираюсь
сосредоточьтесь на Axios, если вы не слышали о
Axios, это нормально, я буду
объяснять, чтобы делать HTTP-запросы
есть этот API в современных браузерах
называемый API-интерфейсом выборки, API- интерфейс Fetch
вид голых костей
поэтому такие библиотеки, как Axios,
немного более высокого уровня Axios предлагает
что API-интерфейсу Fetch не хватает
как аннулирование или пользовательский тайм-аут
настройки
Axios также делает пару вещей
автоматически для вас, что
Axios считает чрезвычайно распространенным
одним из примеров является то, что
Axios будет анализировать JSON для вас
автоматически
в то время как вы должны указать API-интерфейс Fetch
в основном это то, что
вы хотите сделать еще один пример этого
поведение в Аксиосе и тот, который я
хочу , чтобы провести некоторое время , говоря о том ,
тот факт, что
Axios будет принуждать ошибки HTTP в
javascript, поэтому, если запрос
код состояния — 404, тогда
Axios фактически бросит это или вернет
что в качестве ошибки javascript API-интерфейс fetch
встроенные в браузеры не делают этого
до тех пор, пока сетевой запрос
успешно, то выборка будет считать, что
быть успешным ответом, и это будет
дать вам объект ответа, а затем
вам нужно будет прочитать код состояния
и определите , считаете ли вы, что a4 или
404 — это ошибка в вашем приложении или
не думаю, что можно с уверенностью сказать, что большинство
разработчики на самом деле
доступ, но это абсолютно не
все дело не в том, что мы вообще
была библиотека, которая сделала именно это
проклял 404 ошибки в ошибках JavaScript
но API-интерфейс бэкэнд, который мы использовали
было 404 как своего рода действительный случай, когда
пользователь еще не был создан, поэтому мы
необходимо было справиться с тем, что было нормальным
поток в приложении, так что мы имели
для этой библиотеки высокого уровня
для создания оберточной библиотеки поверх нее
проклинать ошибку обратно в ответ
так что мы могли бы иметь общий уровень
которые работали так, как мы ожидали,
наше приложение теперь Axios намного лучше, чем
библиотека в моем рассказе доступна как способ
переопределения этого поведения, но оно
не меняет того факта, что вы должны
знать, как Axios работает внутри
для того , чтобы использовать AXIOS и то , что
мы имеем в виду нечеткую абстракцию, когда вы
поставьте что-то вроде Axios рядом с
что такое ярлык для негерметичности
абстракция воздухонепроницаемая, возможно, как
пакет sha-1 на NPM
которая является просто функция , которая принимает
и выдает весенний хэш
то вы видите, что есть огромный
контраст между тем, сколько вам нужно
знать об основополагающей реальности
абстракция в этих двух случаях и
некоторые из вас, вероятно, думают и
хорошо, это не похоже на справедливое
сравнение проблемы, которую пытается выполнить Axios
инкапсулировать гораздо шире, чем то, что
sha-1 пытается инкапсулировать, но это
что это причина, почему
sha-1 не пропускает способ доступа
Ша-1 работает очень хорошо, как
абстракция, потому что это так
Ограниченный, поэтому я говорю, что Axios
плохая библиотека, которую вы не должны использовать
Я не говорю этого, но я говорю, что
это нечеткая абстракция, и вам нужно
чтобы быть в курсе , что вы принося
определенная сложность в вашем
проекта, когда вы вызываете
абстракция
если вы втягиваете негерметичную абстракцию
как sha-1 в ваш проект никто на
вашей команде придется тратить время
ознакомление с ша-1
показать и просачиваться так мало, что вы очень
вряд ли придется вникать в
как это работает за кулисами, но вы
если вы используете абстракцию как
Axios, потому что он протекающий, и это
важно отметить здесь, что это может
быть в порядке, как просачивание, не означает, что
библиотека бесполезна и что вы должны
избегайте этого, это просто означает, что вам нужно
быть в курсе стоимости да, доступ добавит
немного сложности для вашего
проект, но он также может
сложности, например, если ваше приложение
использует пользовательские тайм-ауты или отмену
то случай, когда доступ становится много
сильнее, потому что, если вы можете выйти из
написав эту логику , это очень
более очевидно, хороший компромисс на
с другой стороны, если вы добавите доступ к своему приложению
может быть, потому что вы рассуждаете, что я тоже
нужны эти эти функции , которые имеют доступ
предложения в будущем, но вы никогда
на самом деле в конечном итоге их использование , то у вас есть
просто добавил чистый отрицательный результат в
сложность вашего приложения путем добавления осевых
и это отстой в этом случае.
было гораздо лучше, используя только
немедленно получить и создать свой собственный
маленькая обертка вокруг этого, вероятно, как
простая функция, которая могла бы
было намного проще для вашей команды в
причина в том, что они могли просто пойти
просмотрите функцию и посмотрите, что
ад происходил, позвольте мне подвести итог
мои мысли, о которых мы говорили,
абстракции абстракций позволяют нам
лечить что-то сложное, как одно
простая вещь, но абстракция сложнее
чем мы думаем, и поэтому большинство
что приводит к тому, что
нечеткая абстракция — это абстракция, которая
сбой при инкапсулировании и негерметичность
абстракция может увеличить сложность
чем это удаляет, это не означает, что
негерметичные абстракции бесполезны, но это
означает , что вы должны быть в состоянии определить
когда абстракция протекает и
осведомлены о стоимости приведения его в
ваш проект — это мои мысли о том, что
но что более важно, что вы
пожалуйста, не стесняйтесь оставлять положительные или
отрицательный комментарий ниже или даже
лучше ответить на комментарий одного из
ваши друзья- зрители еще одна вещь
перед тем, как уйти, вы только что посмотрели
эпизод веселой функции, которую я выпускаю
эти каждое утро в понедельник Oh 800 GMT if
вам понравился этот эпизод, который вы должны проверить
этот плейлист с большим количеством эпизодов
вроде этого я буду mpj до следующего понедельника
утро пожалуйста
оставаться любопытным
Please follow and like us:

Be First to Comment

Добавить комментарий