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