Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Software Engineering2011.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.12 Mб
Скачать

Комментарии

Хорошие комментарии не повторяют код и не объясняют его. Они поясняют его цель.Комментарии должны объяснять намерения программиста на более высоком уровне абстракции, чем код.

Читаемость

Дать определение легко читаемого кода, скорее всего, просто невозможно. Мы можемговорить лишь о том, что облегчает или усложняет чтение. Частично этот аспект перекликается с первым из слагаемых – использованием соглашений. В самом деле, поддержание одинакового форматирования, принципов именования и т.п. сильно облегчает восприятие кода. Другой весьма важный аспект легкой читаемости кода – размер методов. Каким бы ни был код, как бы он ни соответствовал всяческим стандартам и соглашениям – метод в двести строк воспринять невозможно. В сто строк – очень тяжело. Любой код можно разбить на законченные логические блоки, каждый из которых представляет собой некое действие.

Обработка исключений

Исключения — это специальное средство, позволяющее передать в вызывающий кодвозникшие ошибки или исключительные ситуации. Если код в некотором методе встречает неожиданную ситуацию и не знает, как ее обработать, то он генерирует исключение, т. е. фактически умывает руки со словами: «Я не знаю, что с этим делать, надеюсь, кто-нибудь другой знает, как на это реагировать!» Код, не имеющий понятия о контексте ошибки, может вернуть управление другой части системы, которая, возможно, лучше знает, как интерпретировать ошибку и сделать с ней что-то осмысленное. Исключения, используемые разумно, могут уменьшить сложность, а используемые чрезмерно, могут сделать код абсолютно нечитаемым.

Документирование

Хорошая документация — свидетельство профессиональной гордости, выражаемой

программистом в программе. Документация имеет много вариантов. Документация программного проекта складывается из информации, содержащейся в листингах исходного кода, и внешней информации, которая обычно имеет форму отдельных документов или папок разработки блоков. В крупных проектах основная часть документации является внешней, описывающей решения, принятые при проектировании классов или методов, рассмотренные варианты и мотивы выбора окончательных подходов.

Часто назначение метода очевидно. Часто, но не всегда. Если метод возвращает значениеполя объекта – тут документировать особо нечего. Хотя, можно написать, что именно он возвращает, иногда это бывает полезно, особенно, когда объект использует кто-то, незнакомый с его внутренней структурой. Но даже если метод размером всего строк в пять-шесть – уже стоит описать его функции. Есть такое понятие – замыливание взгляда. Когда смотришь на код, и не видишь очевидных вещей. Тогда документация может оказать очень большую помощь. Можно потратить полчаса на копание в коде, а можно пару минут на чтение документации метода. В которой описано, как он себя ведет и почему.

Рефакторинг

Иногда код деградирует при сопровождении, а иногда он изначально имеет невысокоекачество. В обоих случаях на это — и на необходимость рефакторинга указывают некоторые предупреждающие знаки.

  • Код повторяется

  • Метод слишком велик

  • Цикл слишком велик или слишком глубоко вложен в другие циклы

  • Класс имеет плохую связность

  • Метод использует больше элементов другого класса, чем своего собственного

  • Класс имеет слишком ограниченную функциональность

  • По цепи методов передаются бродячие данные (данные, передаваемые в метод лишьзатем, чтобы он передал их другому методу)

  • Один класс слишком много знает о другом классе

  • Сложный код объясняется при помощи комментариев. В важности комментариев трудноусомниться, но их не следует использовать для объяснения плохого кода. Старая мудростьгласит: «Не документируйте плохой код — перепишите его».

Когда не следует выполнять рефакторинг:

  • Не рассматривайте рефакторинг как оправдание написания плохого кода с намерениемисправить его позднее

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

  • Иногда имеющийся код настолько запутан, что подвергнуть его рефакторингу, конечно,можно, но проще начать все с самого начала

  • Ещё один случай, когда следует воздержаться от рефакторинга, это близость даты

завершения.

Наиболее употребимые методы рефакторинга:

  • Изменениесигнатурыметода (Change Method Signature)

  • Инкапсуляция поля (EncapsulateField)

  • Выделение класса (ExtractClass)

  • Выделение интерфейса (ExtractInterface)

  • Выделение локальной переменной (ExtractLocalVariable)

  • Выделение метода (ExtractMethod)

  • Генерализация типа (GeneralizeType)

  • Встраивание (Inline)

  • Введениефабрики (Introduce Factory)

  • Введениепараметра (Introduce Parameter)

  • Подъём поля/метода (PullUp)

  • Спуск поля/метода (Push Down)

  • Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]