Промышленная разработка ПО. Лекция 4. Особенности...

21
Лекция 3. Особенности работы программиста. Часть 2. Совершенный код ПРОМЫШЛЕННАЯ РАЗРАБОТКА ПО

Upload: mikhail-payson

Post on 16-Jun-2015

113 views

Category:

Education


4 download

DESCRIPTION

Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть 2. Совершенный код

TRANSCRIPT

Page 1: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

Лекция 3. Особенности работы программиста.

Часть 2. Совершенный код

ПРОМЫШЛЕННАЯ РАЗРАБОТКА ПО

Page 2: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

О ЧЁМ БУДЕМ ГОВОРИТЬ СЕГОДНЯ?

Основные задачи программиста Специфика крупного проекта

Разработка «правильной» архитектуры

Написание «правильного» кода Рефакторинг

Наиболее ценные навыки программиста

Три ступени роста программиста

Page 3: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

Код, который пишет программист

• Может использоваться через десятки лет

• Может использоваться множеством других программистов

• Может быть изменён до неузнаваемости в новой версии

• Может быть выброшен уже в следующем релизе

ЭТО НУЖНО ЗАПОМНИТЬ!

Page 4: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

НАПИСАНИЕ «ПРАВИЛЬНОГО» КОДА

Page 5: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете»

Стив Макконелл

СОВЕРШЕННЫЙ КОД

Page 6: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Лёгкость чтения и понимания

• Эффективная локализация ошибок

• Лёгкое и точечное добавление функций и исправление дефектов

• Чёткая структура кода сильно влияет на архитектуру

ЗАЧЕМ НУЖЕН ПРАВИЛЬНЫЙ КОД?

Page 7: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Единый стиль кодирования

• Читабельность кода

• Грамотные методы

• Правильные имена классов, переменных и методов

• Минимально возможный объём ветвлений и вложенности

ПРИНЦИПЫ И ПРИЗНАКИ ХОРОШЕГО КОДА

Page 8: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Договориться, как оформлять исходный код

• Брать за основу стандарты для соответствующей технологии

• Следить за отступами

• Договориться о наболевшем:

• Табуляция vs. Пробел

• Скобки на разных строчках

• Именование полей

ЕДИНЫЙ СТИЛЬ

Page 9: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Префикс для скрытых полей: “_”, “m_”,…

• Обязательные фигурные скобки в ветвлениях и циклах (даже если команда одна)

• Используйте соглашения даже при написании «временного» кода

• Помните, что у всех свои представления о стиле кодирования. Кому-то придётся смириться.

ЕДИНЫЙ СТИЛЬ: СОВЕТЫ

Page 10: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Код должен читаться как книга

• Логические блоки должны быть чётко выделенными и понятными

• Названия классов, методов и переменных должны быть информативными

• В каждой строке должна быть одна операция / вызов метода

ЧИТАБЕЛЬНОСТЬ КОДА

Page 11: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Не жалейте пустых строк, пробелов и табуляции

• Лучше, чтобы строчка влезала в экран (80-90 символов).

• Современные языки программирования игнорируют перенос строк. Пользуйтесь этим

• Используйте стандартные отступы (в ветвлениях, циклах, методах и т.д.)

• Если у метода много аргументов – расположите их на разных строчках

ЧИТАБЕЛЬНОСТЬ КОДА: СОВЕТЫ

Page 12: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Метод выполняет единственную задачу

• Идеальный метод занимает не больше 100 строк. Лучше 50

• Если метод принимает более 7 параметров – с ним что-то не так

• Метод не меняет значения входных переменных

• Метод грамотно назван (об этом – позже)

КАЧЕСТВЕННАЯ ДЕКОМПОЗИЦИЯ

Page 13: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Если для понимания кода нужен комментарий «этот код делает то-то», вынесите его в отдельный метод

• Если идеальное имя метода содержит союз «and», делите его на два

• Цепочки из 50 вложенных методов – тоже не слишком хорошо. Помните про принцип KISS

• Не нужно «искусственно» делить метод на части

КАЧЕСТВЕННАЯ ДЕКОМПОЗИЦИЯ: СОВЕТЫ

Page 14: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Название в точности отражает сущность

• Класс – существительное, метод – глагол

• Названия не содержат общих слов (PerformAction, ObjectManager, myArray)

• Название не содержит цифр (Action1, Action2, Action3)

• Называйте переменные массивов во множественном числе

ПРАВИЛЬНЫЕ ИМЕНА

Page 15: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Если сложно сформулировать имя для класса или метода, вероятнее всего, у него слабое зацепление (low cohesion). Его нужно делить

• Даже временные переменные надо называть правильно, чтобы выработалась привычка

• Называйте переменные терминами предметной области

• Адекватная длина имени переменной – 8-20 символов

ПРАВИЛЬНЫЕ ИМЕНА: СОВЕТЫ

Page 16: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Высокая вложенность затрудняет читабельность и понимание

• Высокая вложенность говорит о том, что логические структуры плохо разделены

• Высокая вложенность и частые ветвления превращают код в хаос

МИНИМАЛЬНАЯ ВЛОЖЕННОСТЬ

Page 17: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Используйте принципе Return ASAP

• Не ставьте else, если предыдущее условие заканчивается на return

• Не бойтесь прерывать цикл через break

• Часто имеет смысл вынести тело цикла в отдельный метод

• Заменяйте ветвления полиморфизмом

МИНИМАЛЬНАЯ ВЛОЖЕННОСТЬ: СОВЕТЫ

Page 18: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

А ИНАЧЕ…

Page 19: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

Page 20: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

• Думать прежде, чем сделать

• Писать не код, а систему

• Задавать вопросы, если не понятно

• Понимать не только технологию, но и бизнес-область задачи

• Делать продукт не для себя, а для пользователей

• Понимать различие между «идеально» и «качественно»

НАИБОЛЕЕ ЦЕННЫЕ НАВЫКИ ПРОГРАММИСТА

Page 21: Промышленная разработка ПО. Лекция 4. Особенности работы программиста.  Ча…

ВРЕМЯ ЗАДАВАТЬ ВОПРОСЫ