advertisement

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

50 %
50 %
advertisement
Information about Разработка веб-сервисов осень 2013 лекция 7
Education

Published on February 21, 2014

Author: Technopark

Source: slideshare.net

advertisement

Разработка веб-сервисов Беседа 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

Add a comment

Related presentations

Related pages

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

Java осень 2013 лекция 8 1. Углубленное программирование на Java Лекция 8 «Базы данных ...
Read more

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

Разработка веб-сервисов осень 2013 лекция 8 ...
Read more

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

1. Разработка веб-сервисовБеседа 6: Компоненты веб-систем. 2. План занятия Сетевое ...
Read more

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

1. Разработка веб-сервисовБеседа 10: Веб-сервис как изменяющийся продукт. 2. План ...
Read more

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

1. Разработка веб-сервисовБеседа 11: Устойчивость архитектурного решения. 2. План ...
Read more

IT.Mail.Ru

... (осень 2013). Лекция №5. ... лекция №7 (HD, 2013) 17.10.2013 г. Java, лекция №8 (HD, 2013) 18.10.2013 г. Java ...
Read more