Надпись:У книги есть свой золотой дом, и у книги есть свой Ян Рую.какone piece, ждет нас, чтобы обнаружить, найти. не вездеone piece(каждая страница каждой главы книги), возможно, где-то есть интригующий отрывок, ожидающий своего открытия. Некоторые люди, возможно, пропустили это, некоторые люди, возможно, нашли это, возможно, в этом и есть прелесть чтения.
напиши первым
Прочитайте много технических книг, эта«Энциклопедия кода»К ней стоит написать аннотацию.Это также первая книга, которую я написала в Наггетс.Я настоятельно рекомендую читать больше книг.
Потому что я лично считаю, что каждый человек, который издает книгу, вложил много времени и сил в процесс написания книги.То, как вы понимаете, выражено в книге.Это инстинктивное поведение.Это как достижение достижения в игре и публикации хорошей книги.Можно сказать, что первоначальное намерение каждого издателя книги.
Так что я ставлю большие пальцы тем, кто опубликовал книгу.Может быть, в книге есть много мест, которые мы считаем скопированными, а не питательными. Но по моему опыту, пока это признанная хорошая книга, в основном в определенной главе или даже в определенном абзаце, она определенно вызовет у вас чувство удивления. Это как играть в «Короля бойцов», неописуемое удивление и счастье, когда трясешь ручку и дико нажимаешь, и вдруг отпускаешь последний ход. . . Хмм~~(никогда не нажимал)&¥&¥#. . . . .
начать мое шоу
Достаточно, я не буду больше говорить о других похвалах (800 слов похвалы хорошим книгам опущены), и я готов встать на правильный путь. Код Дацюань, купила давно, еще до того, как вступила в круг😂, прочитала часть, сделала пометки и записала в маленькую тетрадочку.Не читала с тех пор, как вошла в круг.В прошлом несколько дней Как фронтенд-инженер, я прошел его полностью заново, открыл новый континент и нашел несколько цельных кусков. Я больше не могу согласиться с идеей пересмотра старого и изучения нового.Я поделюсь некоторыми своими выводами и наработками здесь, как комплимент этой книге:
Каждый программист перечитывает эту замечательную книгу.
Давайте начнем. . .
"Энциклопедия кода" содержит в общей сложности 944 страницы содержания. Это очень реалистично. Здесь задействовано много знаний. Основной код - это в основном Java и C++. На самом деле форма кода не важна, важна идея, которую нужно выразить. Для фронтенд-инженеров я обобщил следующие аспекты знаний, приступим.
Правилен ли переключатель условного оператора?
Много раз мы используемswitch
заявление о том, как использоватьdefault
, и нет четкого принципа, иногдаdefault
вниз, ничего не делать, иногдаdefault
Далее будет реализована последняя возможность. И иногдаcase
Случаев много, и нас не волнует проблема сортировки. И так далее, на самом деле это плохое поведение в программировании. Так давай, как правильно писатьswitch
Как насчет позы предложения? Смотри ниже:
tip1 - пусть по умолчанию делает то, что должен делать
В общем,default
Далее не пишите последнюю возможность, т.к.default
Цель дизайна на самом деле состоит в том, чтобы отлавливать ошибки. Поэтому все ситуации в бизнесе должны фиксироваться по кейсам, что также отражает использованиеcase
Назадlabel
чтобы объяснить, в какой ситуации это работает. а такжеdefault
нельзя добавить позжеlabel
описание, а также теряет описание возможной ситуации. Например, во внешнем интерфейсе, если оценивается код состояния, возвращаемый запросом, его можно записать в следующем виде:
switch(code) {
case: '1':
console.log('成功')
break
case: '0':
console.log('失败')
break
default:
dealError()
}
Как видно из приведенного выше кода,default
не делай ничего нормальногоcase
операции, он используется исключительно для обнаружения и обработки ошибок, конечно, если бизнес ставит некоторыеcase
Если это расценивается как ошибка, это также может быть записано как унифицированнаяdefault
середина.
Совет 2. Сделайте кейс кратким, упорядоченным и эффективным
1: еслиcase
Существует много случаев, поэтому его следует расположить сверху вниз в соответствии с частотой появления, чтобы повысить общую эффективность кода оператора switch.
2: еслиcase
В одном случае слишком много операторов, затем решительно инкапсулируйте их в вызываемую подпрограмму. Избегайте написания многих утверждений под одним падежом, пустьcase
стать непонятным.
Как оценить сложность кода
Каждый может инстинктивно думатьOМетод или что-то в этом роде, большойOЭта модель не работает, большойOявляется мерой сложности алгоритма. Цюаньцюань упомянул очень интересный метод оценки сложности, называемыйTom McCabeметод, метод очень прост, путем вычисления функции вточка принятия решениячисло для измерения сложности. Вот один из способов подсчета точек принятия решений (в сочетании с внешним интерфейсом):
- от
1
Начните, пройдите весь путь вниз по функции - однажды столкнулись
if while for else
Или функции более высокого порядка с циклами, напримерforEach map
подожди и добавь1
- Добавить к каждому случаю в операторе случая
1
Например следующий код:
function fun(arr, n) {
let len = arr.length
for (let i = 0; i < len; i++) {
if (arr[i] == n) {
// todo...
} else {
// todo...
}
}
}
согласно сTom McCabeметод расчета сложности, то этотfun
Количество точек решения для функции равно3
. Зная количество точек принятия решения, как узнать результат измерения? Вот числовая оценка интервала:
Интервал количества | Результаты измерений |
---|---|
0-5 | Эта функция может подойти |
6-10 | Надо найти способ упростить эту функцию. |
10+ | Разделите часть этой функции на другую функцию и вызовите ее |
Как видно из приведенного выше суждения, в коде, который я написал выше, количество равно3
, которую можно назвать функцией неплохой. Я лично считаю этот метод оценки очень научным и простым. Его можно использовать в качестве соображения при оценке необходимости рефакторинга функции при написании кода. Хороший расчет.
Что такое абстракция, инкапсуляция и модули в вашем понимании?
Как бы это сказать, на самом деле, иногда мы не знаем, это не значит, что мы не знаем, это часто бывает: я действительно видел это знание или действительно исследовал его, но я действительно забыл 😂. Итак, в этот момент, когда вы видите это, просто ставьте лайк и собирайте (хи-хи).
Я думаю, что это своего рода концептуальная вещь, каждый может ответить по-разному, но пока вы действительно понимаете суть или ответ, этого на самом деле достаточно. Здесь я рассказываю о своих взглядах на абстракцию, инкапсуляцию и модули.
В моих глазах абстракция фактически превращает хаос в порядок, а фрагментацию в целостность. Мы часто говорим, что бизнес-код следует абстрагировать на компоненты и превращать в компоненты. По сути, это процесс превращения разрозненного в целое и хаоса в упорядоченный процесс. Возьми личи:
Например, в нашем проекте мы не делали компонентизацию, функция всплывающего окна до сих пор прописана на разных страницах. Теперь нам нужно реорганизовать и абстрагировать это разрозненное и хаотичное всплывающее окно в цельный и упорядоченный компонент всплывающего окна. Итак, давайте взглянем на исходный код всплывающего окна и обнаружим следующие проблемы:
- Код дублируется и разбросан по страницам.
- Код запутан, нет единой записи и единой логики отображения.
Как это решить?В настоящее время необходимо абстрагировать всплывающее окно.Как абстрагироваться, один из способов состоит в том, чтобы решить повторение и путаницу.Если решено, это может указывать на то, что абстракция достигла первоначальных результатов.
упомянуть здесьADT
, который является основой классов в шаблоне объектно-ориентированного программирования, называемыхAbstract Data Type
, который является абстрактным типом данных, но я не хочу его использовать, здесь я учусьDOM
,BOM
Форма, я называю этоADM
. Полное имя:Abstract Data Model
То есть абстрактная модель данных. Не знаю, смогу ли я так играть, но не думаю, что это большая проблема, хи-хи. Без замечаний, дальше буду работать.
Нам нужно собрать все данные, которые может использовать всплывающее окно, а затем отнести эти данные к объектной модели, для аналогии я называю ее человеком всплывающего окна, у которого есть жизнь. Сущность этого всплывающего лица складывается из этих данных, ОК, так что все разрозненные данные до этого собираются в одну сущность, то есть разрозненные данные превращаются в единое целое. Рассмотрим следующее предложение:
Абстракция имеет тенденцию легко ломаться без инкапсуляции.
Если я просто абстрагирую и превращу разрозненное в целое, но не превращу хаос в порядок, то абстракция будет нарушена, как и данные, принадлежащие всплывающему окну.Здесь я проведу красивую аналогию. Например, всплывающее окно имеет 1 миллион человек, а ключ 1 миллион все еще является публичным, и результат трагичен.
Многие люди хотят занять у него деньги, если во всплывающем окне человек заранее не указывает способ занять деньги. Дальше будет очень волнительно.Друг А просит его одолжить денег в WeChat, друг Б собирает деньги с Alipay, а социальный придурок звонит ему напрямую и угрожает одолжить денег.Еще более наглый, он прямо насильно похитил его, а потом меч и меч затмили его, подожди. Люди во всплывающем окне чувствуют себя горько и неловко.
Наконец всплывающее окно пришло к реализации.Способ заимствования денег был указан заранее, и это можно было сделать только через текстовые сообщения.Все другие способы заимствования были отклонены, и они должны были получить его согласие.При этом время, он был полон решимости не раскрывать свою собственность. С тех пор никто не знает, сколько денег у всплывающего человека, и думают, что он бедный (поп-ап человек - программист).Даже если они хотят занять денег, они могут только сказать всплывающему человеку сколько я хочу одолжить через текстовые сообщения, а потом договориться. , просто одолжить вам. С тех пор всплывающие люди жили счастливой жизнью.
Сверху импровизированный каштан. Внезапно я обнаружил, что обладаю богатым воображением. для себя0110 0110 0110
, На самом деле вы, наверное, знаете, что я хочу высказать после прочтения. Это цель инкапсуляции, не только цель инкапсуляции интерфейсной области, но и цель инкапсуляции всей объектно-ориентированной области. Если есть исключения, прикройте рот, нет. .
Из вышесказанного видно, что абстракция и инкапсуляция неразрывно связаны. Если вы внимательно изучите приведенную выше историю, то обнаружите, что, превращая хаос в порядок, мы на самом деле максимально снижаем доступность, что и является принципом самой инкапсуляции:
Принцип инкапсуляции заключается в том, чтобы максимально снизить доступность.
Многие люди знают, что инкапсуляция предназначена для уменьшения доступности, но они не знают, почему, может быть, они знают, почему? Сделайте перерыв здесь и пропустите шоу.
В дорогом (программистском) кругу есть очень интересное явление, то есть я знаю назначение определенных знаний, но не могу объяснить принцип, или я тоже проверял и пытался понять принцип, но есть всегда его окружает какое-то смутное чувство непонимания. тогда в моем сердцеob: Это пока, а потом я расскажу об этом позже. Тогда это не может быть полностью понято. Откуда мне это знать, потому что я иногда чувствую то же самое, это неизбежно. Что можно сделать, так это не забыть разрешить туманную путаницу в то время в будущем.
Перерыв закончился, а ерунда продолжается 🙂, вы не можете знать, сколько у меня денег, а если бы знали, мои деньги были бы в опасности. Вы можете получить доступ ко мне только по фиксированному каналу, и вы не можете напрямую получить доступ к данным, вам необходимо мое согласие на выполнение соответствующих операций. На самом деле, доступность была объяснена очень подробно. Ну без объяснений.
Так что же такое сознание модуляризации интерфейса?
На самом деле это можно полностью понимать как компонентизацию. Модульность, как следует из названия, выражает сознание желания целого.Поскольку целое необходимо инкапсулировать.Перед инкапсуляцией его необходимо абстрагировать, а затем вернуть к сути. Итак, как в настоящее время модульный интерфейс?
JavaScriptЭто объектно-ориентированный язык программирования, по крайней мере одно предложение: inJavaScript
В , все является объектом, так сказать, ноJavaScript
Очень смущает то, что класса нет, хотя классы сейчас есть, но это просто синтаксический сахар. здесь не рассматриваетсяTypeScript
. Так как же достигается модульность?
Реализовать абстрактную модель класса на языке программирования, о чем я говорил вышеADM
. На мой взгляд, без использованияclass
В случае синтаксического сахараПринцип реализации интерфейсной модульности заключается в использованииJavaScript
Функция частной переменной и функция закрытия для достижения модульности.ES5
когда,JS
Нет области видимости на уровне блоков, только глобальные переменные и приватные переменные.Если приватных переменных нет, тоJavaScrript
То естьGG
поэтому меня интересует оригинальный дизайнJS
При использовании классаC
Стиль дизайна языка , почему не реализована область на уровне блоков?JS
Вам не нужно так много функций. Раз есть приватные переменные, то будут приватные свойства и приватные методы, ведь все они по сути являются переменными. Я не буду публиковать конкретный код, просто напишу псевдокод:
function fun() {
v1 是私有属性
f1 是私有方法
// 返回一个对象
return {
v2 是共有属性
f2 是共有方法 {
共有方法里面可以访问和修改 私有属性和私有方法
处理 v1
处理 f1
}
}
}
Как писать качественные функции
Quanquan (ссылаясь на Code Encyclopedia, то же самое ниже) описывает, как писать высококачественные подпрограммы.JS
Функции — это подпрограммы (верно на 99%). Некоторые высококачественные резюме, упомянутые в Quanquan, не применимы.JS
. Здесь я объединяю часть собственного опыта и резюме. Пожалуйста, смотрите ниже:
Вы когда-нибудь задумывались, для чего была изобретена эта функция?
Как фронтенд-инженер, для этой проблемы, или10
важный. наклон головы45
градусное направление, подумайте об этом в своей голове10
Секунды, а может и несколько миганий, не спрашивайте меня, почему я знаю ваш статус, потому чтоXX
. На самом деле каждый может сказать какое-то свое мнение, и никакие ответы не нужны, но я все же хочу дать человеку, который выглядит очень высоко.answer
. То есть:
Функции, безусловно, являются самым важным средством экономии места и повышения производительности из когда-либо изобретенных.Заметьте, никого нет. Итак, в чем мы можем быть уверены сейчас:Он используется для экономии места и повышения производительности.В таком случае, если мы не оптимизируем функции и не напишем качественные функции, не потеряем ли мы смысл ее существования. Самый важный вопрос, который сейчас стоит перед нами: как оптимизировать функции и писать качественные функции?
if (str === 'hello world') {
console.log('hello world')
} else {
console.log('666')
}
Вышеприведенный фрагмент кода.Если вы хотите использовать его в других местах, вы должны повторить приведенный выше код в том месте, где он используется, но если у вас есть функция, вы можете поместить его в функцию, а затем передать функция.print(str)
Для звонка нужно только написать эту строчку в других местах, и преимущества очевидны.
Как писать качественные функции. На самом деле, я могу написать статью на эту тему, я не буду подробно объяснять это здесь, просто упомяну несколько моментов, конкретная реализация высокого качества будет рассмотрена позже.
Начиная с куклы, важно иметь хорошее имя
Стартовая линия не может быть выведена, и необходимо учитывать следующие моменты:
- Название должно четко описывать назначение функции
- Единый стиль письма. Например, унифицированное использование подчеркивания, верблюжьего регистра и других форм именования.
- Унифицируйте форму слов, существительное + глагол или глагол + существительное
Элегантно передавать и обрабатывать параметры
- Есть много параметров, вы можете использовать режим объекта параметра
- Параметры не фиксированы, такие как динамические параметры, вы можете использовать
ES6
расширение - использовать
ES6
Значение параметра по умолчанию для решения проблемы значения параметра по умолчанию
Некоторые соображения при проектировании функций
- Избегайте дублирования функционального кода
- Уменьшить размер функционального кода
- повысить надежность функции
- Стиль комментариев должен быть единым
- сохранить как можно больше
pure
Особенности, то есть идемпотентность, которая может предотвратить различные необъяснимые впоследствииbug
О размахе и времени выживания
У переменных есть собственное свойство, называемое временем выживания.В языках программирования время выживания переменных должно быть максимально сокращено. Таким образом, если мы посмотрим на глобальные переменные с точки зрения интервалов и времени жизни, мы увидим, почему нам следует избегать использования глобальных переменных, потому что глобальные переменные имеют большие интервалы и время жизни.
Пасхальные яйца:
JS
Одна из основных причин, по которой вам следует избегать глобальных переменных, заключается в том,JS
Выполнение кода происходит изнутри наружу, если это глобальная переменная, то время поиска относительно велико, поэтому вJQuery
и т.д. в исходном коде, напрямуюwindow
Его имеет смысл передать в качестве параметра функции, и это может повысить производительность кода.
Малоизвестный момент о логических выражениях
См. следующий код
let i = true
if (i = true) {
// todo...
}
Как вы можете видеть, если вы случайно пишете меньше в бизнес-коде=
номер, становится приведенным выше кодом, то он не сообщит об ошибке, но если он будет записан в таком виде:
let i = true
if (true = i) {
// todo...
}
сообщит об ошибке, потому что интерпретатор сообщит об ошибке, если левая часть выражения не является переменной. так вJS
В программировании вы можете размещать константы слева от знака равенства. Это очень маленькийtip
, а на передней панели добавьтеeslint
Вы можете полностью избежать этой ошибки, если не будете писатьeslint
, учти этоtip
, и если вы использовали инструмент проверки кода, давайте начнем.
Узнать о буддизме
Как исправить ошибки, дефекты кода
это. . . Красочное лицо? Нет такого предложения, как сохранение исходного кода во времени, в конце концовgit
Для стабильного сравнения упомянем другие куриные супы:
- Успокойся: хм. . . . . .
- Убедитесь, что у вас есть веская причина для изменения кода. Причины должны быть достаточными и уважительными.
- Вносите изменения по одному
Примечание
- Шаблоны проектирования не будут здесь обобщаться, есть много вещей, которые нужно вынести и обсудить отдельно.
- Некоторые сводки на системном уровне не упоминаются и имеют мало общего с внешним интерфейсом.
- Не говоря уже о мерах предосторожности для рекурсии, существует не так много случаев, когда рекурсия используется во внешнем интерфейсе.
- Для программирования псевдокода это будет упомянуто отдельно позже.
- Для написания качественных функций резюме простое, потому что здесь задействовано много вещей, здесь я хочу упомянуть некоторые из самых важных знаний, таких как цель создания, иногда вы пишете много функций, но вы никогда не думали Теперь, когда я вижу этот вопрос, я чувствую облегчение на сердце.
Милое высказывание в конце статьи:Если вы делаете репост или цитируете, пожалуйста, вставьте оригинальную ссылку. Эта статья как книга, могут быть некоторые места, которые не питательны для вас, но пока есть такой абзац или предложение, которое вас удивляет, я очень рад. В статье могут быть ошибки, комментарии приветствуются, обсуждения также приветствуются. Статья может быть написана недостаточно хорошо, пожалуйста, потерпите меня. Внесите немного больше, будьте немного счастливее~