2. Ментальная модель
Ментальной моделью в психологии называют трудно
формализуемую совокупность эмпирических знаний,
которая формируется в сознании человека при
взаимодействии с объектом. Проще говоря, это то, как
мы представляем себе некий предмет.
4. Философия языка python
● Красивое лучше, чем уродливое.
● Явное лучше, чем неявное.
● Простое лучше, чем сложное.
● Сложное лучше, чем запутанное.
● Плоское лучше, чем вложенное.
● Разреженное лучше, чем плотное.
● Читаемость имеет значение.
● Особые случаи не настолько особые, чтобы нарушать
правила.
● При этом практичность важнее безупречности.
● Должен существовать один — и, желательно, только один —
очевидный способ сделать это.
● Если реализацию сложно объяснить — идея плоха.
● Если реализацию легко объяснить — идея, возможно,
хороша
9. Длинное условие ...
# комментарий без которого сложно понять
_зачем_
if user.company? && user.company.active? &&
user.money > 50
10. Простая задача
# комментарий без которого сложно понять
_зачем_
if user.company? && user.company.active? &&
user.money > 50
vs
if user.can_edit_company?
18. domain driven design
● Моделирование предметной области
● Единый язык
Понятия:
● Entity
● Value Object
● Service
● Repository
● Aggregate
19. DSL
state_machine initial: :new do
state :new
state :done
state :rejected
after_transition :new => :done,
do: :update_related_telecast
event :perform do
transition :new => :done
end
event :reject do
transition :new => :rejected
end
end
20. Метод по агрегату
if user.company? && user.company.active? &&
user.money > 50
if user.can_edit_company?
23. Нарушение контракта
# до
u = User.first
u.destroy # стандартное поведение,
удаляет из базы
# после
u = User.first
u.destroy # переопределенное
поведение, помечает как удаленное
27. Command-query separation
Принцип сформулирован Бертраном Мейером, как одно
из основных правил разрабатываемого им языка
программирования Eiffel. Самая короткая
формулировка:
Задавая вопрос, не изменяй ответ.