SlideShare a Scribd company logo
1 of 39
Стажировка-2014.
Абстракции, контракты,
соглашения
Занятие 2 (часть 1)
Стажировка-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 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 extends IListContainer {
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 m_EmployeeList;
…
}
ООП (Java)
Стажировка-2014.
Соглашения (конвенции)
именования – правила
наименования всех элементов
разрабатываемой системы
Соглашения
Стажировка-2014.
Уровни соглашений (по
возрастанию важности):
язык
фреймворк (библиотека)
компания (команда)
проект
предметная область
Соглашения
Стажировка-2014.
Именование классов:
не использовать слова-связки
порядок: объект, имя
существительное – суть контракта,
дополнения и определения
Идеальный вариант – одно слово
Соглашения
Стажировка-2014.
Для сущностей:
Employee, List, WebContext
Для сервисов:
ReportManager, ContextBuilder
Плохо:
AdderAndSubtracter, MyClass,
Program
Соглашения
Стажировка-2014.
Именование методов:
не использовать слова-связки,
порядок: глагол, объект
действия, дополнения и
определения
Соглашения
Стажировка-2014.
Именование переменных:
не использовать слова-связки,
объект, представляемый
переменной, возможно с
определением
Избегать: однобуквенных имен и
сильных сокращений слов
Соглашения
Стажировка-2014.
Разделение слов:
либо camelCase, либо символ
‘_’ - зависит от соглашений
языка
Соглашения
Стажировка-2014.
Классы в Java: CamelCase, с
большой буквы
Методы и переменные в Java:
camelCase, с маленькой буквы
Пакеты в 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 (или
аналогом), тела методов –
самодокументирующийся код
Документирование

More Related Content

What's hot

основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклыSergey Nemchinsky
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++Olga Maksimenkova
 
Диаграмма классов
Диаграмма классовДиаграмма классов
Диаграмма классовDEVTYPE
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Dima Dzuba
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2Technopark
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Dima Dzuba
 
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.SmartTools
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in actionYuri Trukhin
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif Itkin
 

What's hot (16)

основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
Диаграмма классов
Диаграмма классовДиаграмма классов
Диаграмма классов
 
лек3 4
лек3 4лек3 4
лек3 4
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
 
course js day 2
course js day 2course js day 2
course js day 2
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Ruby строки
Ruby строкиRuby строки
Ruby строки
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in action
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
 
стандартные функции
стандартные функциистандартные функции
стандартные функции
 

Viewers also liked

Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)7bits
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 087bits
 
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.7bits
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)7bits
 
Стажировка-2014, занятие 4. Планирование процесса тестирования.
Стажировка-2014, занятие 4. Планирование процесса тестирования.Стажировка-2014, занятие 4. Планирование процесса тестирования.
Стажировка-2014, занятие 4. Планирование процесса тестирования.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
 
Стажировка-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
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 37bits
 
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи
Спецкурс 2014, занятие 5 (часть 1). Исключения и логиСпецкурс 2014, занятие 5 (часть 1). Исключения и логи
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи7bits
 
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practicesСпецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices7bits
 
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter FlightСтажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter Flight7bits
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.7bits
 
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworksСтажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks7bits
 
Стажировка 2014, занятие 4. Git, Github и Open source.
Стажировка 2014, занятие 4. Git, Github и Open source.Стажировка 2014, занятие 4. Git, Github и Open source.
Стажировка 2014, занятие 4. Git, Github и Open source.7bits
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)7bits
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java7bits
 
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-20137bits
 
Стажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспективаСтажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспектива7bits
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 47bits
 

Viewers also liked (20)

Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 08
 
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
 
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
 
Стажировка-2014, занятие 4. Планирование процесса тестирования.
Стажировка-2014, занятие 4. Планирование процесса тестирования.Стажировка-2014, занятие 4. Планирование процесса тестирования.
Стажировка-2014, занятие 4. Планирование процесса тестирования.
 
Спецкурс 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
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 3
 
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи
Спецкурс 2014, занятие 5 (часть 1). Исключения и логиСпецкурс 2014, занятие 5 (часть 1). Исключения и логи
Спецкурс 2014, занятие 5 (часть 1). Исключения и логи
 
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practicesСпецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
 
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter FlightСтажировка-2015. Разработка. Занятие 14. Twitter Flight
Стажировка-2015. Разработка. Занятие 14. Twitter Flight
 
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
 
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworksСтажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
 
Стажировка 2014, занятие 4. Git, Github и Open source.
Стажировка 2014, занятие 4. Git, Github и Open source.Стажировка 2014, занятие 4. Git, Github и Open source.
Стажировка 2014, занятие 4. Git, Github и Open source.
 
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
Стажировка-2013, разработчики, 15 занятие. Web-фреймворки (2 часть)
 
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и JavaКурс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 05. Тестирование и Java
 
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013
Стажировка-2013, дизайнеры, занятие 1. История веб-дизайна. Тренды-2013
 
Стажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспективаСтажировка-2013, разработчики, ретроспектива
Стажировка-2013, разработчики, ретроспектива
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
 

Similar to Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.

Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программированияConstantin Kichinsky
 
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
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмыЕлена Ключева
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.7bits
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
Parallelism в .net 4 и vs2010
Parallelism в .net 4 и vs2010Parallelism в .net 4 и vs2010
Parallelism в .net 4 и vs2010Roman Kalita
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpGoSharp
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноCUSTIS
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПОMarat Akhin
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf Conference
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterAleksandr Tarasov
 

Similar to Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование. (20)

Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программирования
 
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
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
 
Net 3.0 & Linq
Net 3.0 & LinqNet 3.0 & Linq
Net 3.0 & Linq
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
Parallelism в .net 4 и vs2010
Parallelism в .net 4 и vs2010Parallelism в .net 4 и vs2010
Parallelism в .net 4 и vs2010
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдно
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПО
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
ZFConf 2011: Разделение труда: Организация многозадачной, распределенной сист...
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 

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. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
Курс 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
 

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. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
Курс 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. Системы контроля версий
 

Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.