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

Post on 16-Jun-2015

113 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЕДИНЫЙ СТИЛЬ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А ИНАЧЕ…

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

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

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

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

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

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

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

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

top related