Skip to content

Commit

Permalink
Функционал -> Функциональность
Browse files Browse the repository at this point in the history
Слово функционал ни разу не было использовано по своему значению и везде
использовалось, как обиходное упрощение от слова «функциональность»

см.:
- https://livetyping.com/ru/blog/funkcional-ili-funkcionalnost-torzhestvennnoe-zakrytie-temy-chast-1
- https://livetyping.com/ru/blog/funkcional-ili-funkcionalnost-torzhestvennnoe-zakrytie-temy-chast-2
  • Loading branch information
indeyets committed Feb 18, 2020
1 parent f9446f7 commit c212b1d
Show file tree
Hide file tree
Showing 37 changed files with 56 additions and 55 deletions.
4 changes: 2 additions & 2 deletions 1-js/02-first-steps/05-types/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ let phrase = `Обратные кавычки позволяют встраив

Двойные или одинарные кавычки являются "простыми", между ними нет разницы в JavaScript.

Обратные кавычки же имеют "расширенный функционал". Они позволяют нам встраивать выражения в строку, заключая их в `${…}`. Например:
Обратные кавычки же имеют "расширенную функциональность". Они позволяют нам встраивать выражения в строку, заключая их в `${…}`. Например:

```js run
let name = "Иван";
Expand All @@ -113,7 +113,7 @@ alert( `результат: *!*${1 + 2}*/!*` ); // результат: 3

Выражение внутри `${…}` вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную `name` или выражение `1 + 2`, или что-то более сложное.

Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такого функционала встраивания!
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
```js run
alert( "результат: ${1 + 2}" ); // результат: ${1 + 2} (двойные кавычки ничего не делают)
```
Expand Down
2 changes: 1 addition & 1 deletion 1-js/02-first-steps/09-alert-prompt-confirm/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,4 @@ alert( isBoss ); // true, если нажата OK
1. Расположение окон определяется браузером. Обычно окна находятся в центре.
2. Визуальное отображение окон зависит от браузера, и мы не можем изменить их вид.

Такова цена простоты. Есть другие способы показать более приятные глазу окна с богатым функционалом для взаимодействия с пользователем, но если "навороты" не имеют значения, то данные методы работают отлично.
Такова цена простоты. Есть другие способы показать более приятные глазу окна с богатой функциональностью для взаимодействия с пользователем, но если "навороты" не имеют значения, то данные методы работают отлично.
6 changes: 3 additions & 3 deletions 1-js/03-code-quality/05-testing-mocha/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ describe("pow", function() {
Спецификация состоит из трёх основных блоков:

`describe("заголовок", function() { ... })`
: Какой функционал мы описываем. В нашем случае мы описываем функцию `pow`. Используется для группировки рабочих лошадок -- блоков `it`.
: Какую функциональность мы описываем. В нашем случае мы описываем функцию `pow`. Используется для группировки рабочих лошадок -- блоков `it`.

`it("описание", function() { ... })`
: В первом аргументе блока `it` мы *человеческим языком* описываем конкретный способ использования функции, а во втором -- пишем функцию, которая тестирует данный случай.
Expand All @@ -73,7 +73,7 @@ describe("pow", function() {
4. Теперь у нас есть правильно работающая начальная реализация и тесты.
5. Мы добавляем новые способы использования в спецификацию, возможно, ещё не реализованные в тестируемом коде. Тесты начинают "падать" (выдавать ошибки).
6. Возвращаемся на шаг 3, дописываем реализацию до тех пор, пока тесты не начнут завершаться без ошибок.
7. Повторяем шаги 3-6, пока требуемый функционал не будет готов.
7. Повторяем шаги 3-6, пока требуемая функциональность не будет готова.

Таким образом, разработка проходит *итеративно*. Мы пишем спецификацию, реализуем её, проверяем, что тесты выполняются без ошибок, пишем ещё тесты, снова проверяем, что они проходят и т.д.

Expand Down Expand Up @@ -302,7 +302,7 @@ describe("тест", function() {
## Расширение спецификации
Основной функционал `pow` реализован. Первая итерация разработки завершена. Когда мы закончим отмечать и пить шампанское, давайте продолжим работу и улучшим `pow`.
Основная функциональность `pow` реализована. Первая итерация разработки завершена. Когда мы закончим отмечать и пить шампанское, давайте продолжим работу и улучшим `pow`.
Как было сказано, функция `pow(x, n)` предназначена для работы с целыми положительными значениями `n`.
Expand Down
2 changes: 1 addition & 1 deletion 1-js/05-data-types/01-primitives-methods/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ roma.sayHi(); // Привет, дружище!

1. Примитивы остаются примитивами. Одно значение, как и хотелось.
2. Язык позволяет осуществлять доступ к методам и свойствам строк, чисел, булевых значений и символов.
3. Чтобы это работало, при таком доступе создаётся специальный "объект-обёртка", который предоставляет нужный функционал, а после удаляется.
3. Чтобы это работало, при таком доступе создаётся специальный "объект-обёртка", который предоставляет нужную функциональность, а после удаляется.

Каждый примитив имеет свой собственный "объект-обёртку", которые называются: `String`, `Number`, `Boolean` и `Symbol`. Таким образом, они имеют разный набор методов.

Expand Down
2 changes: 1 addition & 1 deletion 1-js/06-advanced-functions/06-function-object/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,4 +348,4 @@ welcome(); // Hello, Guest (вложенный вызов работает)

Они создают "основную" функцию и добавляют множество "вспомогательных" функций внутрь первой. Например, библиотека [jQuery](https://jquery.com) создаёт функцию с именем `$`. Библиотека [lodash](https://lodash.com) создаёт функцию `_`, а потом добавляет в неё `_.clone`, `_.keyBy` и другие свойства (чтобы узнать о ней побольше см. [документацию](https://lodash.com/docs)). Они делают это, чтобы уменьшить засорение глобального пространства имён посредством того, что одна библиотека предоставляет только одну глобальную переменную, уменьшая вероятность конфликта имён.

Таким образом, функция может не только делать что-то сама по себе, но также и предоставлять полезный функционал через свои свойства.
Таким образом, функция может не только делать что-то сама по себе, но также и предоставлять полезную функциональность через свои свойства.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ alert( "Again: " + slow(2) ); // возвращаем из кеша

В коде выше `cachingDecorator` -- это *декоратор*, специальная функция, которая принимает другую функцию и изменяет её поведение.

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

Отделяя кеширующий код от основного кода, мы также сохраняем чистоту и простоту последнего.

Expand Down
2 changes: 1 addition & 1 deletion 1-js/08-prototypes/03-native-prototypes/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Свойство `"prototype"` широко используется внутри самого языка JavaScript. Все встроенные функции-конструкторы используют его.

Сначала мы рассмотрим детали, а затем используем `"prototype"` для добавления встроенным объектам нового функционала.
Сначала мы рассмотрим детали, а затем используем `"prototype"` для добавления встроенным объектам новой функциональности.

## Object.prototype

Expand Down
2 changes: 1 addition & 1 deletion 1-js/09-classes/01-class/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ user.sayHi();
3. Классы всегда используют `use strict`.
Весь код внутри класса автоматически находится в строгом режиме.

Также в дополнение к основному, описанному выше, функционалу, синтаксис `class` даёт ряд других интересных возможностей, с которыми мы познакомимся чуть позже.
Также в дополнение к основной, описанной выше, функциональности, синтаксис `class` даёт ряд других интересных возможностей, с которыми мы познакомимся чуть позже.

## Class Expression

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ machine.waterAmount = 100;
alert(machine.#waterAmount); // Error
```

В отличие от защищённых, функционал приватных полей обеспечивается самим языком. Это хорошо.
В отличие от защищённых, функциональность приватных полей обеспечивается самим языком. Это хорошо.

Но если мы унаследуем от `CoffeeMachine`, то мы не получим прямого доступа к `#waterAmount`. Мы будем вынуждены полагаться на геттер/сеттер `waterAmount`:

Expand Down
8 changes: 4 additions & 4 deletions 1-js/09-classes/07-mixins/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

Иногда это может ограничивать нас. Например, у нас есть класс `StreetSweeper` и класс `Bicycle`, а мы хотим создать их смесь: `StreetSweepingBicycle`.

Или у нас есть класс `User`, который реализует пользователей, и класс `EventEmitter`, реализующий события. Мы хотели бы добавить функционал класса `EventEmitter` к `User`, чтобы пользователи могли легко генерировать события.
Или у нас есть класс `User`, который реализует пользователей, и класс `EventEmitter`, реализующий события. Мы хотели бы добавить функциональность класса `EventEmitter` к `User`, чтобы пользователи могли легко генерировать события.

Для таких случаев существуют "примеси".

По определению из Википедии, [примесь](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%81%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)) - это класс, методы которого предназначены для использования в других классах, причём без наследования от примеси.

Другими словами, *примесь* определяет методы, которые реализуют определённое поведение. Мы не используем примесь саму по себе, а используем её, чтобы добавить функционал другим классам.
Другими словами, *примесь* определяет методы, которые реализуют определённое поведение. Мы не используем примесь саму по себе, а используем её, чтобы добавить функциональность другим классам.

## Пример примеси

Expand Down Expand Up @@ -107,7 +107,7 @@ new User("Вася").sayHi(); // Привет, Вася!

## EventMixin

Многие объекты в браузерной разработке (и не только) обладают важной способностью - они могут генерировать события. События - отличный способ передачи информации всем, кто в ней заинтересован. Давайте создадим примесь, которая позволит легко добавлять функционал по работе с событиями любым классам/объектам.
Многие объекты в браузерной разработке (и не только) обладают важной способностью - они могут генерировать события. События - отличный способ передачи информации всем, кто в ней заинтересован. Давайте создадим примесь, которая позволит легко добавлять функциональность по работе с событиями любым классам/объектам.

- Примесь добавит метод `.trigger(name, [data])` для генерации события. Аргумент `name` - это имя события, за которым могут следовать другие аргументы с данными для события.
- Также будет добавлен метод `.on(name, handler)`, который назначает обработчик для события с заданным именем. Обработчик будет вызван, когда произойдёт событие с указанным именем `name`, и получит данные из `.trigger`.
Expand Down Expand Up @@ -203,6 +203,6 @@ menu.choose("123"); // Выбранное значение: 123

Некоторые другие языки допускают множественное наследование. JavaScript не поддерживает множественное наследование, но с помощью примесей мы можем реализовать нечто похожее, скопировав методы в прототип.

Мы можем использовать примеси для расширения функционала классов, например, для обработки событий, как мы сделали это выше.
Мы можем использовать примеси для расширения функциональности классов, например, для обработки событий, как мы сделали это выше.

С примесями могут возникнуть конфликты, если они перезаписывают существующие методы класса. Стоит помнить об этом и быть внимательнее при выборе имён для методов примеси, чтобы их избежать.
4 changes: 2 additions & 2 deletions 1-js/13-modules/01-modules-intro/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ sayHi('John'); // Hello, John!

[codetabs src="scopes" height="140" current="index.html"]

Модули должны экспортировать функционал, предназначенный для использования извне. А другие модули могут его импортировать.
Модули должны экспортировать функциональность, предназначенную для использования извне. А другие модули могут её импортировать.

Так что нам надо импортировать `user.js` в `hello.js` и взять из него нужный функционал, вместо того чтобы полагаться на глобальные переменные.
Так что нам надо импортировать `user.js` в `hello.js` и взять из него нужную функциональность, вместо того чтобы полагаться на глобальные переменные.

Правильный вариант:

Expand Down
Loading

0 comments on commit c212b1d

Please sign in to comment.