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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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. Особенности работы программиста.  Ча…

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