SlideShare a Scribd company logo
1 of 46
Спецкурс ОмГУ-2014
Абстракции, контракты,
соглашения
Занятие 3
Спецкурс ОмГУ-2014
There are only two hard things in
Computer science: cache
invalidation and naming things.
Phil Karlton
Зачем?
Спецкурс ОмГУ-2014
Абстракция данных – скрываем
детали структуры
Абстракция алгоритмов –
скрываем вспомогательные
функции
Принцип абстракции
Спецкурс ОмГУ-2014
Принцип абстракции
Основная цель – улучшить
понимание системы на
разных уровнях
Побочный эффект –
заменяемость
реализации
Спецкурс ОмГУ-2014
Абстрактный тип данных
(АТД) – описание данных и
алгоритмов (функций) для
манипулирования ими
Принцип абстракции
Спецкурс ОмГУ-2014
Примеры АТД:
Список (List)
Стек (Stack)
Очередь (Queue)
Дек (Deq)
Ассоциативный массив (Map)
Принцип абстракции
Спецкурс ОмГУ-2014
Движение программистской
мысли:
- Машинный код
- «Понятный» машинный код
(ассемблер)
- «Понятный» ассемблер (Си)
- Структурное программирование
Принцип абстракции
Спецкурс ОмГУ-2014
Движение программистской
мысли:
- Процедурное и функциональное
программирование
- Абстрактные типы данных
- Объектно-ориентированное
программирование
Принцип абстракции
Спецкурс ОмГУ-2014
Движение программистской
мысли:
- Функциональное
программирование (новый
уровень)
- Зарождающиеся подходы
(виртуализация)
Принцип абстракции
Спецкурс ОмГУ-2014
Контракт функции –
спецификация, предусловие,
постусловие и инвариант
Контракты
Спецкурс ОмГУ-2014
Спецификация функции –
наименование, входные и
выходные параметры,
выбрасываемые исключения
Контракты
Спецкурс ОмГУ-2014
Контракт –
один из способов реализации
абстракции
Контракты
Спецкурс ОмГУ-2014
Класс –
один из способов реализации
абстрактного типа данных
Метод класса –
функция, имеющая доступ ко
всем данным класса
ООП (Java)
Спецкурс ОмГУ-2014
Спецификация метода – то
же, что и спецификация
функции + уровень доступа
ООП (Java)
Спецкурс ОмГУ-2014
Контракт класса –
наименование, структура
наследования, набор
спецификаций публичных
методов
ООП (Java)
Спецкурс ОмГУ-2014
Интерфейс –
чистое описание контракта класса
В Java НЕТ множественного
наследования, есть реализация
нескольких интерфейсов
ООП (Java)
Спецкурс ОмГУ-2014
Пакет –
совокупность классов, либо
совместно решающих общую
задачу, либо дающих разные
реализации одного контракта
ООП (Java)
Спецкурс ОмГУ-2014
Принцип Единственной
обязанности (Single Responsibility)
– у контракта должно быть ровно
одно четкое предназначение
Признак нарушения –
невозможность подобрать
простое наименование
ООП (Java)
Спецкурс ОмГУ-2014
Сущности:
interface IFullName {
String getFirstName();
String getLastName();
}
interface IEmployee {
IFullName getFullName();
String getAddress();
String getWorkPhone();
String getHomePhone();
}
ООП (Java)
Спецкурс ОмГУ-2014
public class FullName implements IFullName {
private String firstName;
private String lastName;
public FullName(
final String firstName, final String lastName
) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public void setFirstName(
final String firstName
) {
this.firstName = firstName;
}
public void setLastName(
final String lastName
) {
this.lastName = lastName;
}
}
ООП (Java)
Спецкурс ОмГУ-2014
public class Employee implements IEmployee {
private FullName name;
private String address;
private String workPhone;
private String homePhone;
public Employee() {
}
public Employee (
final FullName name,
final String address,
final String workPhone,
final String homePhone,
) {
…
}
public IFullName getFullName() …
public String getAddress() …
public String getWorkPhone() …
public String getHomePhone() …
public void setFullName(final FullName name) …
public void setAddress(final String address) …
public void setWorkPhone(
final String workPhone
) …
public void setHomePhone(
final String homePhone
) …
}
ООП (Java)
Спецкурс ОмГУ-2014
Сервисы:
interface Program {
void InitializeCommandStack();
void PushCommand(Command command);
Command PopCommand();
void ShutdownCommandStack();
void InitializeReportFormatting();
void FormatReport(Report report);
void PrintReport(Report report);
void InitializeGlobalData();
void ShutdownGlobalData();
}
ООП (Java)
Спецкурс ОмГУ-2014
interface IEmployeeCensus {
void addEmployee(IEmployee employee);
void removeEmployee(IEmployee employee);
IEmployee nextltem();
IEmployee getFirstltem();
IEmployee getLastltem();
}
ООП (Java)
Спецкурс ОмГУ-2014
interface IEmployeeCensus {
void addEmployee(IEmployee employee);
void removeEmployee(IEmployee employee);
IEmployee getNextEmployee();
IEmployee getFirstEmployee();
IEmployee getLastEmployee();
}
public class EmployeeCensus implements IEmployeeCensus {
private IListContainer employeeList;
…
}
ООП (Java)
Спецкурс ОмГУ-2014
Соглашения (конвенции)
именования – правила
наименования всех элементов
разрабатываемой системы
Соглашения
Спецкурс ОмГУ-2014
Уровни соглашений (по
возрастанию важности):
язык
фреймворк (библиотека)
компания (команда)
проект
предметная область
Соглашения
Спецкурс ОмГУ-2014
Именование классов: –
не использовать слова-связки
порядок: объект, имя
существительное – суть
контракта, дополнения и
определения
Соглашения
Спецкурс ОмГУ-2014
«Идеальное» имя класса –
одно слово, отражающее суть
Соглашения
Спецкурс ОмГУ-2014
Для сущностей:
Employee, List, WebContext,
DataSource
Для сервисов:
ReportManager, ContextBuilder
Плохо:
AdderAndSubtracter, MyClass,
Program
Соглашения
Спецкурс ОмГУ-2014
Именование методов:
не использовать слова-связки,
порядок: глагол, объект
действия, дополнения и
определения
Соглашения
Спецкурс ОмГУ-2014
Именование переменных:
не использовать слова-связки,
объект, представляемый
переменной, возможно с
определением
Избегать: однобуквенных имен и
сильных сокращений слов
Соглашения
Спецкурс ОмГУ-2014
Разделение слов:
либо camelCased, либо символ
‘_’ – зависит от соглашений
языка
Соглашения
Спецкурс ОмГУ-2014
Классы в Java: CamelCased, с
большой буквы
Методы и переменные в Java:
camelCased, с маленькой буквы
Пакеты в Java: одно слово с
маленькой буквы, первые 2
уровня – развернутый домен
Соглашения
Спецкурс ОмГУ-2014
Форматирование кода –
правила записи операторов и
других конструкций языка,
расстановки пробельных
символов и скобок для
улучшения читабельности
Соглашения
Спецкурс ОмГУ-2014
Помните:
код пишется только 10%
времени, а 90% времени его
читают
Соглашения
Спецкурс ОмГУ-2014
Документирование кода –
написание комментариев к
классам, методам,
определениям и другим
конструкциям
Документирование
Спецкурс ОмГУ-2014
JavaDoc – утилита для сборки
документации к проекту в
формате HTML
Иногда так называют сами
комментарии к классам и методам
Документирование
Спецкурс ОмГУ-2014
Пример для класса:
/**
* Provides a company employee
* entity
*/
class Employee {
Документирование
Спецкурс ОмГУ-2014
Пример для метода:
/**
* Counts employees in a given container
* @param employeeContainer a container of employees
* @return a count of employees in a given container
*/
int countEmployees(
final EmployeeContainer employeeContainer
) {
Документирование
Спецкурс ОмГУ-2014
Самодокументирующийся код
– код, являющийся
документаций сам себе и не
требующий пояснений в виде
комментариев
Документирование
Спецкурс ОмГУ-2014
Хорошо документированный
код – контракты
документированы JavaDoc (или
аналогом), тела методов –
самодокументирующийся код
Документирование
Спецкурс ОмГУ-2014
Code review – практика оценки
качества кода другим
разработчиком или
техническим лидером
Анализ качества кода
Спецкурс ОмГУ-2014
Парное программирование –
один компьютер, клавиатура
передается от одного
разработчика к другому
Анализ качества кода
Спецкурс ОмГУ-2014
Статический анализ –
просмотр кода при помощи
автоматизированных средств,
может выполняться IDE «на
лету», по триггеру или по
запросу
Анализ качества кода
Спецкурс ОмГУ-2014
CheckStyle – средство
статического анализа кода для
Java
Анализ качества кода
Спецкурс ОмГУ-2014
Email: at@7bits.it
Skype: anna_tarasenko
Web: 7bits.ru
Вопросы?

More Related Content

What's hot

Шаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингШаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингSergey Nemchinsky
 
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyEvgeny Smirnov
 
Задачи по ООП в ruby
Задачи по ООП в rubyЗадачи по ООП в ruby
Задачи по ООП в rubyEvgeny Smirnov
 
Presentation Klochkova
Presentation KlochkovaPresentation Klochkova
Presentation Klochkovaklochkova
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASPdevel123
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на rubyEvgeny Smirnov
 
Алгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсияАлгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсияEvgeny Smirnov
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеSergey Nemchinsky
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООПEvgeny Smirnov
 

What's hot (11)

Ruby строки
Ruby строкиRuby строки
Ruby строки
 
Шаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингШаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. Рефакторинг
 
лек13 4
лек13 4лек13 4
лек13 4
 
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в ruby
 
Задачи по ООП в ruby
Задачи по ООП в rubyЗадачи по ООП в ruby
Задачи по ООП в ruby
 
Presentation Klochkova
Presentation KlochkovaPresentation Klochkova
Presentation Klochkova
 
SOLID & GRASP
SOLID & GRASPSOLID & GRASP
SOLID & GRASP
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
 
Алгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсияАлгоритмы на ruby: перебор и рекурсия
Алгоритмы на ruby: перебор и рекурсия
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 

Viewers also liked

Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайнСтажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн7bits
 
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БДСтажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД7bits
 
Стажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practicesСтажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practices7bits
 
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайнеСтажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне7bits
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 47bits
 
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложенийСтажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений7bits
 
Стажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginxСтажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginx7bits
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java7bits
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)7bits
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки7bits
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.7bits
 
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open sourceСпецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source7bits
 
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.7bits
 
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...7bits
 
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.7bits
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...7bits
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup7bits
 
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)7bits
 
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.7bits
 

Viewers also liked (20)

Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайнСтажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
Стажировка 2015. Дизайн. Занятие 5. Адаптивный web-дизайн
 
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БДСтажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
 
Стажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practicesСтажировка-2014, занятие 9. Code conventions and best practices
Стажировка-2014, занятие 9. Code conventions and best practices
 
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайнеСтажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
 
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложенийСтажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
Стажировка-2015. Разработка. Занятие 11. Безопасность web-приложений
 
Стажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginxСтажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginx
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
 
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open sourceСпецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
 
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
 
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
 
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
Стажировка-2015. Разработка. Занятие 10 (часть 2). Исключения и логи.
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
 
Спецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startupСпецкурс 2014, занятие 10. Lean startup
Спецкурс 2014, занятие 10. Lean startup
 
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
 
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
 

Similar to Спецкурс 2014, занятие 3. Абстракции, именование, документирование

Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПОMarat Akhin
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Rupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev RubyRupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev Rubyemarkine
 
Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2Andrii Gakhov
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)Andrey Gordienkov
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAndrey Gordienkov
 
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesYuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesbeloslab
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptTimur Shemsedinov
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpgeekfamilyrussia
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.Infinity
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 27bits
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java BasicsNoveo
 
лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)djbelyakk
 
CodeFest 2014. Гайдаренко О. — Промисы и jQuery Промисы
CodeFest 2014. Гайдаренко О. — Промисы и jQuery ПромисыCodeFest 2014. Гайдаренко О. — Промисы и jQuery Промисы
CodeFest 2014. Гайдаренко О. — Промисы и jQuery ПромисыCodeFest
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 

Similar to Спецкурс 2014, занятие 3. Абстракции, именование, документирование (20)

Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПО
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Rupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev RubyRupyru2007 Rastyagaev Ruby
Rupyru2007 Rastyagaev Ruby
 
Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2Семинар ФКН: современные подходы к разработке ПО - часть 2
Семинар ФКН: современные подходы к разработке ПО - часть 2
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
 
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesYuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practices
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScript
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Net 3.0 & Linq
Net 3.0 & LinqNet 3.0 & Linq
Net 3.0 & Linq
 
Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java Basics
 
лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)
 
CodeFest 2014. Гайдаренко О. — Промисы и jQuery Промисы
CodeFest 2014. Гайдаренко О. — Промисы и jQuery ПромисыCodeFest 2014. Гайдаренко О. — Промисы и jQuery Промисы
CodeFest 2014. Гайдаренко О. — Промисы и jQuery Промисы
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 

More from 7bits

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? 7bits
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта7bits
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать7bits
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи 7bits
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE 7bits
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT7bits
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring7bits
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC7bits
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP7bits
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock7bits
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web7bits
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность7bits
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции7bits
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub7bits
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics7bits
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию7bits
 
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версийСпецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версий7bits
 
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...7bits
 

More from 7bits (20)

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
 
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофтаГудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
 
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакатьГудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
 
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
 
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
 
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в ITGoodbye, IT-loft! Тараканов Алексей: Идеология в IT
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
 
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. SpringКурс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 13. Spring
 
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBCКурс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 12. DBMS, JDBC
 
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSPКурс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 11. Servlets, JSP
 
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mockКурс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 10. Reflection, mock
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточностьКурс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 08. Итераторы, многопоточность
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHubКурс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
 
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про GenericsКурс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версийСпецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 05. Системы контроля версий
 
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
 

Спецкурс 2014, занятие 3. Абстракции, именование, документирование