awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

Абстракция: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — interface против implementation, encapsulation, границы module, namespacing и почему любая нетривиальная abstraction протекает.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый — решение, которое принимает работающий программист: не определение для заучивания, а граница между тем, что abstraction обещает, и тем, что она реально прячет.

Цель

Убедись, что связываешь четыре идеи, к которым вёл юнит — interface против implementation, encapsulation внутри связки, границу module и namespacing, а также компромисс протекающей abstraction — и применяешь их к коду, который ещё не видел.

Викторина

Команда переписывает тело add(a, b), чтобы считать сумму быстрее. Имя, два входа и возвращаемая сумма остаются те же. Сколько из сотен мест вызова надо изменить и почему?

Викторина

Объект-счётчик связывает поле данных count с методами increment() и value(). Что на самом деле даёт здесь encapsulation?

Викторина

Module определяет шесть имён и помечает два как exports. Внешний код пытается вызвать одно из четырёх неэкспортированных имён напрямую. Что происходит и почему границу стоило сделать принудительной?

Викторина

Большой программе нужны две функции, обе разумно названные format — одна для дат, другая для валюты. Почему помещение каждой в свой module не даёт им столкнуться?

Викторина

Abstraction вызова функции отлично работает тысячи обычных вызовов, затем безудержная рекурсия падает с ошибкой stack overflow, называющей кадры стека. Как прочитать это через юнит?

Викторина

Раз любая нетривиальная abstraction протекает, коллега заключает: можно перестать учить слои под теми, в которых работаешь. Что не так с этим выводом?

Итог

Сквозная нить юнита — одна цепочка: abstraction — это фиксированный interface над скрытой, заменяемой implementation; связка применяет это к данным плюс операциям над ними и зовёт сокрытие encapsulation; module применяет это к целой группе кода с принудительной границей и namespacing, так что приватная деталь остаётся недосягаемой, а короткие имена перестают сталкиваться; а укладка этих слоёв — то, как управляют сложностью. Цена — протечка: любая нетривиальная abstraction проступает нижним слоем, когда тот падает или тормозит, поэтому interface используют ради рассуждения, что он даёт, и всё равно учат машинерию под ним.

Продолжить восхождение ↑Абстракция: тест на припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.