Не трогайте мышь и отойдите от клавиатуры





Скачать 360.39 Kb.
НазваниеНе трогайте мышь и отойдите от клавиатуры
страница4/8
Дата публикации21.08.2013
Размер360.39 Kb.
ТипДокументы
100-bal.ru > Философия > Документы
1   2   3   4   5   6   7   8

На пути к повышению эффективности программ лежат бомбы грязного кода


Кирк Пеппердин (Kirk Pepperdine)

Как правило, настройка производительности системы требует изменения исходного кода. Когда необходимо изменить код, каждый его фрагмент, слишком сложный или сильно связанный с другими, оказывается «грязной кодовой бомбой», готовой сорвать все ваши усилия. Первой жертвой грязного кода становится ваш график работ. Если движение вперед происходит равномерно, легко предсказать, когда закончится работа. Неожиданные столкновения с грязным кодом крайне осложняют разумные предсказания.

Допустим, вы обнаружили место, где теряется производительность. Обычно в этом случае пытаются поменять алгоритм, создающий недопустимую нагрузку. Вы сообщаете своему менеджеру, что исправление займет у вас, скажем, 3-4 часа. Вскоре после внесения исправлений вы обнаруживаете, что перестал работать зависимый участок кода. Близко родственные вещи часто по необходимости связаны друг с другом, и это нарушение работы, скорее всего, ожидалось и было учтено в оценке времени. Но что если исправление этой зависимости приведет к нарушению работы и других зависимых частей? Более того, чем дальше эти зависимости находятся от исходной точки, тем менее вероятно, что вы их обнаружите и учтете в своей оценке. Внезапно начальная оценка раздувается от 3-4 часов до 3-4 недель. Часто такое неожиданное разбухание графика случается 1-2 раза в день. Не столь уж редко «быстрый» рефакторинг затягивается на несколько месяцев. В таких ситуациях ущерб, нанесенный доверию к действующей команде и ее политическому капиталу, может быть оценен как тяжелый и даже смертельный. Если бы у нас был какой-нибудь инструмент, позволяющий обнаружить и оценить такой риск...

На самом деле, есть много способов измерить и проконтролировать степень и глубину связанности и сложности нашего кода. С помощью программных метрик можно посчитать встречаемость в коде определенных характеристик. Эти количественные показатели коррелируют с качеством кода. Отметим две метрики из тех, которые оценивают связанность кода: fan-in и fan-out. Для классов, например, fan-out определяется как количество классов, к которым прямо или косвенно обращается оцениваемый класс. Можно представить это себе как количество всех классов, которые нужно скомпилировать, прежде чем можно начать компилировать ваш класс. С другой стороны, fan-in – это количество классов, которые зависят от данного. Зная fan-out и fan-in, можно рассчитать коэффициент нестабильности по формуле I = fo / (fi + fo). Чем ближе I к 0, тем стабильнее пакет. Когда I близок 1, пакет становится нестабильным. Изменение кода стабильных пакетов сопряжено с меньшим риском, тогда как в нестабильных пакетах более вероятно наличие бомб грязного кода. Задача рефакторинга – приблизить I к 0.

При использовании метрик нужно помнить, что это всего лишь эмпирические правила. Чисто математически, можно видеть, что увеличение fi при неизменном fo приближает I к 0. Однако, слишком большая величина fan-in имеет недостаток: такие классы труднее изменить, не нарушая работу зависимых от них. Кроме того, не трогая fan-out, вы фактически не снижаете свои риски, поэтому нужно соблюдать некоторое равновесие.

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

Простота достигается сокращением


Пол У. Хомер (Paul W. Homer)

«Попробуй еще раз...», – сказал мне мой босс, твердо удерживая пальцем клавишу Delete.

Я с привычным тоскливым чувством смотрел на экран, пока мой код – строка за строкой – безвозвратно исчезал.

Мой босс Стефан не отличался особой красноречивостью, но определял плохой код с первого взгляда. И он хорошо знал, что с ним нужно делать.

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

Желание произвести минимум изменений – даже если они ужасны – в блоке кода вполне естественно, особенно при недостатке времени. Большинство программистов сохраняет плохой код, опасаясь, что если начать все заново, потребуется гораздо больше усилий, чем если просто вернуться к началу. Это может быть верным для кода, близкого к рабочему состоянию, но бывает такой код, которому уже ничто не поможет.

Слишком много времени впустую тратится на попытки спасти плохую работу. Если что-то начинает высасывать ресурсы, от него нужно избавляться. И побыстрее. Хотя нелегко признать выброшенными на ветер все свои труды по вводу, выбору имен, форматированию.

Мой босс действовал экстремальным образом, но он принуждал меня к тому, чтобы заново продумать свой код во второй (а иногда и третий) раз. Тем не менее, лучший способ исправить плохой код – это приготовиться его безжалостно перерабатывать, перемещать или удалять.

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

Конечно, если это не удается, удалите все вообще вообще все и начните сначала. Напрочь забыв обо всем, часто можно избавиться от ненужного хлама.
1   2   3   4   5   6   7   8

Похожие:

Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Разработать обучающую программу, выдающую структурированную и наглядную информацию о работе клавиатуры, буфера клавиатуры, обработчиков...
Не трогайте мышь и отойдите от клавиатуры iconЛитература: Детские народные подвижные игры: Кн для воспитателей...
Игру начинает первая пара: кот ловит мышь, а та бегает вокруг играющих. В опасный момент мышь может спрятаться в коридоре, образованном...
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
СанПиН 4 178-02). В 2009-2010 учебном году кабинет был оснащен 10 новыми ученическими компьютерами (монитор, системный блок, мышь,...
Не трогайте мышь и отойдите от клавиатуры iconКурсовой проект по дисциплине «Системы программирования и операционные системы»
Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика
Не трогайте мышь и отойдите от клавиатуры iconИстория
Системные требования: Pentium 90,Win 95/NT, 16 Мб озу, монитор с разрешением 640х480, HiColor (не менее 32 тыс цветов), 4х cd-rom,...
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель урока: освоение клавиатуры — важнейшего устройства ввода информации в память компьютера
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
С помощью чего проще набрать текст? Двухкнопочной мыши или 102 клавишной клавиатуры?
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: познакомить учащихся с различными устройствами ввода информации в компьютер. Изучить назначения клавиш клавиатуры
Не трогайте мышь и отойдите от клавиатуры iconКомпьютер (арм учителя: монитор+системный блок+клавиатура+мышь)
Начальный курс географии 7 кл. География. Наш дом Земля. Материки, океаны, народы и страны
Не трогайте мышь и отойдите от клавиатуры iconМузыка
Подробная информация о более чем 100 музыкальных инструментов. История возникновения инструментов, возможность прослушать каждый...
Не трогайте мышь и отойдите от клавиатуры iconЛандер Кени «О чем думает Стив»»
Гений цифровой эры, придумавший компьютерную мышь, айфон и многое другое, без чего наша жизнь была бы совсем другой
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
«Свидетель» уже знала о том, что владеет великим сценарием и хотела присвоить ему звание Лучшего Оригинального Сценария еще до того...
Не трогайте мышь и отойдите от клавиатуры iconВ е д е н и е
Кроме того, к компьютеру могут подключаться принтер для вывода на печать текстовой и графической информации; мышь —устройство, облегчающее...
Не трогайте мышь и отойдите от клавиатуры iconКонспект занятия кружка «Компьютерный мир» 1 кл по теме «Манипулятор «мышь»
Построение парами. Переход на площадку. Построение в шеренгу. В центре площадки ребята образуют круг и делятся на две команды
Не трогайте мышь и отойдите от клавиатуры iconПрограмма по формированию навыков безопасного поведения на дорогах...
Продолжение темы Norton Utilities Программа Speed Disk. Программа WipeInfo и другие утилиты. Создание системной дискеты. Драйверы...
Не трогайте мышь и отойдите от клавиатуры iconТема урока: «Компьютер и его основные устройства». Тип урока
Опорные понятия: Периферийные устройства: системный блок, монитор, принтер, сканер, клавиатура, мышь, аудио система


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск