Промышленная разработка ПО. Лекция 4. Особенности...
DESCRIPTION
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть 2. Совершенный кодTRANSCRIPT
![Page 1: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/1.jpg)
Лекция 3. Особенности работы программиста.
Часть 2. Совершенный код
ПРОМЫШЛЕННАЯ РАЗРАБОТКА ПО
![Page 2: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/2.jpg)
О ЧЁМ БУДЕМ ГОВОРИТЬ СЕГОДНЯ?
Основные задачи программиста Специфика крупного проекта
Разработка «правильной» архитектуры
Написание «правильного» кода Рефакторинг
Наиболее ценные навыки программиста
Три ступени роста программиста
![Page 3: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/3.jpg)
Код, который пишет программист
• Может использоваться через десятки лет
• Может использоваться множеством других программистов
• Может быть изменён до неузнаваемости в новой версии
• Может быть выброшен уже в следующем релизе
ЭТО НУЖНО ЗАПОМНИТЬ!
![Page 4: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/4.jpg)
НАПИСАНИЕ «ПРАВИЛЬНОГО» КОДА
![Page 5: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/5.jpg)
«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете»
Стив Макконелл
СОВЕРШЕННЫЙ КОД
![Page 6: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/6.jpg)
• Лёгкость чтения и понимания
• Эффективная локализация ошибок
• Лёгкое и точечное добавление функций и исправление дефектов
• Чёткая структура кода сильно влияет на архитектуру
ЗАЧЕМ НУЖЕН ПРАВИЛЬНЫЙ КОД?
![Page 7: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/7.jpg)
• Единый стиль кодирования
• Читабельность кода
• Грамотные методы
• Правильные имена классов, переменных и методов
• Минимально возможный объём ветвлений и вложенности
ПРИНЦИПЫ И ПРИЗНАКИ ХОРОШЕГО КОДА
![Page 8: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/8.jpg)
• Договориться, как оформлять исходный код
• Брать за основу стандарты для соответствующей технологии
• Следить за отступами
• Договориться о наболевшем:
• Табуляция vs. Пробел
• Скобки на разных строчках
• Именование полей
ЕДИНЫЙ СТИЛЬ
![Page 9: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/9.jpg)
• Префикс для скрытых полей: “_”, “m_”,…
• Обязательные фигурные скобки в ветвлениях и циклах (даже если команда одна)
• Используйте соглашения даже при написании «временного» кода
• Помните, что у всех свои представления о стиле кодирования. Кому-то придётся смириться.
ЕДИНЫЙ СТИЛЬ: СОВЕТЫ
![Page 10: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/10.jpg)
• Код должен читаться как книга
• Логические блоки должны быть чётко выделенными и понятными
• Названия классов, методов и переменных должны быть информативными
• В каждой строке должна быть одна операция / вызов метода
ЧИТАБЕЛЬНОСТЬ КОДА
![Page 11: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/11.jpg)
• Не жалейте пустых строк, пробелов и табуляции
• Лучше, чтобы строчка влезала в экран (80-90 символов).
• Современные языки программирования игнорируют перенос строк. Пользуйтесь этим
• Используйте стандартные отступы (в ветвлениях, циклах, методах и т.д.)
• Если у метода много аргументов – расположите их на разных строчках
ЧИТАБЕЛЬНОСТЬ КОДА: СОВЕТЫ
![Page 12: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/12.jpg)
• Метод выполняет единственную задачу
• Идеальный метод занимает не больше 100 строк. Лучше 50
• Если метод принимает более 7 параметров – с ним что-то не так
• Метод не меняет значения входных переменных
• Метод грамотно назван (об этом – позже)
КАЧЕСТВЕННАЯ ДЕКОМПОЗИЦИЯ
![Page 13: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/13.jpg)
• Если для понимания кода нужен комментарий «этот код делает то-то», вынесите его в отдельный метод
• Если идеальное имя метода содержит союз «and», делите его на два
• Цепочки из 50 вложенных методов – тоже не слишком хорошо. Помните про принцип KISS
• Не нужно «искусственно» делить метод на части
КАЧЕСТВЕННАЯ ДЕКОМПОЗИЦИЯ: СОВЕТЫ
![Page 14: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/14.jpg)
• Название в точности отражает сущность
• Класс – существительное, метод – глагол
• Названия не содержат общих слов (PerformAction, ObjectManager, myArray)
• Название не содержит цифр (Action1, Action2, Action3)
• Называйте переменные массивов во множественном числе
ПРАВИЛЬНЫЕ ИМЕНА
![Page 15: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/15.jpg)
• Если сложно сформулировать имя для класса или метода, вероятнее всего, у него слабое зацепление (low cohesion). Его нужно делить
• Даже временные переменные надо называть правильно, чтобы выработалась привычка
• Называйте переменные терминами предметной области
• Адекватная длина имени переменной – 8-20 символов
ПРАВИЛЬНЫЕ ИМЕНА: СОВЕТЫ
![Page 16: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/16.jpg)
• Высокая вложенность затрудняет читабельность и понимание
• Высокая вложенность говорит о том, что логические структуры плохо разделены
• Высокая вложенность и частые ветвления превращают код в хаос
МИНИМАЛЬНАЯ ВЛОЖЕННОСТЬ
![Page 17: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/17.jpg)
• Используйте принципе Return ASAP
• Не ставьте else, если предыдущее условие заканчивается на return
• Не бойтесь прерывать цикл через break
• Часто имеет смысл вынести тело цикла в отдельный метод
• Заменяйте ветвления полиморфизмом
МИНИМАЛЬНАЯ ВЛОЖЕННОСТЬ: СОВЕТЫ
![Page 18: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/18.jpg)
А ИНАЧЕ…
![Page 19: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/19.jpg)
…
![Page 20: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/20.jpg)
• Думать прежде, чем сделать
• Писать не код, а систему
• Задавать вопросы, если не понятно
• Понимать не только технологию, но и бизнес-область задачи
• Делать продукт не для себя, а для пользователей
• Понимать различие между «идеально» и «качественно»
НАИБОЛЕЕ ЦЕННЫЕ НАВЫКИ ПРОГРАММИСТА
![Page 21: Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…](https://reader035.vdocuments.mx/reader035/viewer/2022062707/557fd120d8b42aab088b4df4/html5/thumbnails/21.jpg)
ВРЕМЯ ЗАДАВАТЬ ВОПРОСЫ