Разработка веб-сервисов осень 2013 лекция 7
Upcoming SlideShare
Loading in...5
×
 

Разработка веб-сервисов осень 2013 лекция 7

on

  • 279 views

 

Statistics

Views

Total Views
279
Views on SlideShare
257
Embed Views
22

Actions

Likes
0
Downloads
4
Comments
0

1 Embed 22

https://tech-mail.ru 22

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Разработка веб-сервисов осень 2013 лекция 7 Разработка веб-сервисов осень 2013 лекция 7 Presentation Transcript

  • Разработка веб-сервисов Беседа 7: Программирование или борьба со сложностью
  • План занятия  Выбор инструментария  Борьба со сложностью  Как делать нужно (паттерны)  Как делать не нужно (антипаттерны) 2
  • Выбор языка программирования Выбор языка. Плюсы Если язык хорошо знаком Выше производительность (до 30%) Если используется высокоуровневый язык Снова выше производительность 3
  • Выбор языка программирования Выбор языка. Плюсы Если используется распространенный язык Больше выбор, ниже затраты Если используется специализированный язык Более удобные инструменты, выше производительность 4
  • Выбор языка программирования Выбор языка  Знакомые языки  Высокоуровневые языки  Распространенные языки  Специализированные языки там, где нужно 5
  • Выбор языка программирования Выбор языка. Минусы  На фортране можно писать на любом языке  Нужно знать нюансы – возможности и ограничения 6
  • Выбор языка программирования Выбор языка. Примеры ограничений  Проверка целочисленности деления  Проверка на переполнение целого числа  Равенство двух чисел с плавающей точкой  Ошибки округления 7
  • Выбор языка программирования Выбор языка. Примеры борьбы с ограничениями Равенство двух чисел с плавающей точкой: Используйте допустимую точность Ошибки округления Используйте свои методы или просто целые числа 8
  • Сложность Программирование — это борьба со сложностью. Хороший программист — не только тот, кто много знает и умеет, но и тот, чей код прост для понимания и корректно решает проблему 9
  • Сложность Желательные характеристики системы  Минимальная сложность  Простота сопровождения  Слабая связность компонентов  Повторное использование кода  Минимализм и полнота  Стандартизация подходов 10
  • Сложность Борьба со сложностью  Архитектура  Кодирование  Сопровождение 11
  • Сложность Борьба со сложностью. Архитектура  Разделение системы на подсистемы  Избегайте глубокой иерархии классов  Делайте классы и методы короткими 12
  • Сложность Борьба со сложностью. Кодирование  По максимуму избегайте глобальных данных  Избегайте большого числа вложенных циклов  Определите стратегию отлова ошибок  Не используйте несколько парадигм одновременно 13
  • Сложность Борьба со сложностью. Сопровождение  Придерживайтесь стандарта наименований  Форматируйте код  Комментируйте код  Избегайте «религиозных войн» 14
  • Борьба со сложностью Зачем нужны стандарты?  Ускоряют изучение кода  Компенсируют недостатки языка  Уменьшают дублирование названий 15
  • Борьба со сложностью Когда нужны стандарты?  Несколько программистов  Большое количество кода  Длительное использование кода 16
  • Борьба со сложностью Примеры стандартов Описание назначения метода или переменной usrId = Reports.GetOwnerId( obj ); 17
  • Борьба со сложностью Примеры стандартов Не используйте названий, которые не отражают суть $tt = mainObj.make($data); 18
  • Борьба со сложностью Примеры стандартов Различия между названием переменной и метода usrId = Reports.GetOwnerId( obj ); 19
  • Борьба со сложностью Примеры стандартов Свои наименования для переменных, констант и типов set var_data = in_usrid; set t_user.min_age = const_min_age; 20
  • Борьба со сложностью Примеры стандартов Форматируйте имена для упрощения чтения NOONEKNOWSWHATITMEANS vs noone_knows_what_it_means 21
  • Борьба со сложностью Шаблоны проектирования Шаблон (паттерн) — конструкция (набор методов или практик), описывающая решение типовой проблемы 22
  • Шаблоны проектирования Плюсы шаблонов  Снижают сложность, предоставляя информацию о коде конечно, если другие программисты с ними знакомы  Снижают число ошибок за счет стандартов  Ускоряют проектирование 23
  • Шаблоны проектирования Минусы шаблонов  Иногда большие накладные ресурсы на адаптацию  Использование шаблонов ради шаблонов 24
  • Шаблоны проектирования Примеры шаблонов Основные  Адаптер — преобразование интерфейса в другой интерфейс  Декоратор — расширение функциональности класса без наследования  Одиночка (Singleton) — класс только с одним экземпляром 25
  • Шаблоны проектирования Примеры шаблонов Параллельное программирование  Обмен сообщениями — компоненты могут обмениваться информацией  Блокировка (Lock) — использование ресурса в эксклюзивном режиме  Read-write lock — раздельное чтение, эксклюзивная запись 26
  • Шаблоны проектирования Примеры шаблонов Другие примеры  MVC — Model + View + Controller  DAO — Data Access Object 27
  • Шаблоны проектирования Антипаттерны Антипаттерн — описание наиболее частых проблем в проектировании, разработке и управлении 28
  • Шаблоны проектирования Примеры антипаттернов  Раздувание ПО — разрешение использования последующими версиями программы большего числа ресурсов  Бензиновая фабрика — излишнее переусложнение архитектуры  Ненужная сложность — чрезмерная сложность в решении проблемы 29
  • Шаблоны проектирования Примеры антипаттернов  Гонка (Race Condition) — непредвидение наступления событий в порядке, отличном от ожидаемого  Божественный объект — чрезмерная концентрация функций в одном объекте  Лодочный якорь — сохранение более не используемого кода 30
  • Шаблоны проектирования Примеры антипаттернов  Таинственный код — неиспользование мнемонически понятного кода  Жесткое кодирование (Hard Code) — жесткие рамки использования кода  Мягкое кодирование — настраивается всё, что угодно. Программирование на конфигах  Волшебные числа — включение в алгоритмы чисел без объяснения смысла 31
  • Шаблоны проектирования Примеры антипаттернов  Программирование методом Copy-Paste  Изобретение колеса  Изобретение квадратного колеса  Коммит-убийца — внесение кода в репозиторий без тестирование влияния на другие части кода  Преждевременная оптимизация 32
  • Шаблоны проектирования Примеры антипаттернов Организационные  Единственный знающий человек  Рыцарь на белом коне — попытки починить без информирования что сделал и почему  Управление грибами — недостаточное информирование сотрудников о целях задачи и способе решения 33
  • Резюме  Выбирайте инструменты, а не язык  Боритесь со сложностью  Используйте стандартные решения проблем  Избегайте неправильных подходов 34
  • Вопросы? Максим Бабич tpark@maxbabich.ru +7 916 9415275