■ Можно ли передать выполнение задачи фоновому потоку, чтобы обеспечить сохранение пользовательским интерфейсом постоянной способности к отклику?
Абсолютная производительность критических алгоритмов
Среди алгоритмов, используемых в вашем приложении, всегда можно выделить ключевые алгоритмы, влияние которых на восприятие пользователем условий работы с приложением является определяющим. Таковыми являются алгоритмы, ответственные за выполнение наиболее важных функций приложения. К числу подобных алгоритмов относятся загрузка данных из баз данных, синтаксический анализ содержимого файлов, расчеты графиков для отображения их на устройстве или генерация отчетов для представления данных пользователю. Так, если для рисования графика на основании собранных пользователем данных требуется три минуты, то этот промежуток времени является слишком большим даже при условии сохранения интерактивной связи пользователем с пользовательским интерфейсом на протяжении всего периода ожидания. О том, чтобы в процессе выполнения таких ключевых алгоритмов пользователь не испытывал никакого дискомфорта, вы должны позаботиться отдельно, призвав на помощь всю свою творческую смекалку.
К числу вопросов, на которые необходимо дать ответ, пересматривая критические алгоритмы, относятся следующие:
■ Можно ли ускорить выполнение этих алгоритмов путем их настройки или изменения?
■ Можно ли прогнозировать потребность алгоритмов в тех или данных и заблаговременно загружать нужные данные, прежде чем в них возникнет необходимость, чтобы пользователь мог быстрее получить результат?
■ Можно ли выполнять наиболее трудоемкую часть вычислений вне устройства, на сервере?
■ Можно ли произвести некоторые вычисления или подготовить некоторые изображения еще на стадии проектирования, чтобы исключить или уменьшить потребность в проведении соответствующих вычислений на стадии выполнения?
Все сказанное выше о ключевых этапах и производительности можно резюмировать следующим образом: установив для намеченных контрольных точек критерии завершения, учитывающие аспекты производительности, и сделав их соблюдение обязательным требованием процесса разработки, вы сможете гарантировать успешную разработку вашего программного проекта.
Время от времени критически пересматривайте написанный код
Замечательным способом улучшения качества создаваемого вами кода является его периодический критический анализ, направленный на обеспечение высокой производительности приложения. Хотя проектирование по соглашениям — не самая приятная стратегия построения алгоритмов, взаимный анализ кода, написанного разными участниками рабочей группы, является проверенным способом улучшения его качества. Критический анализ кода предоставляет преимущества двоякого рода
1. Выявление возможных путей улучшения алгоритмов. Как сам процесс подготовки к критическому анализу кода, так и непосредственный его анализ содействуют нахождению способов написания более эффективного кода и проектированию пользовательских интерфейсов, обладающих высокой интерактивностью.
2. Обмен опытом, извлечение уроков и лучшее знание кода, написанного партнерами. Примеры новых подходов к решению трудных проблем производительности, содержащиеся в анализируемом коде, становятся общим достоянием всех, кто принимает участие в его критическом разборе. Кроме того, каждый разработчик только выигрывает от того, что остальные члены группы будут глубже понимать принципы функционирования разработанных им компонентов приложения.
Чтобы взаимная критическая проверка кода приносила наибольшую пользу, целесообразно подготовить единые стандарты написания программ, которых должны придерживаться все члены группы. Использование общих механизмов реализации кода машин состояний кэширования ресурсов и пользовательского интерфейса будет в значительной степени способствовать достижению взаимопонимания между участниками проекта и коллективному использованию наиболее оптимальных подходов, а также позволит быстро обнаруживать и устранять ошибки.
Рекомендуется разработать список стандартных рекомендаций, определяющих в общих чертах стиль программирования для ваших проектов. Это может быть выполнено либо в виде простейших аннотаций к файлу с примерами кода, демонстрирующими принимаемые при написании программ соглашения, либо в форме исчерпывающего сборника рекомендаций для проектировщиков. Степень детализации подобных рекомендаций зависит от возможностей и потребностей вашей организации. Если такие стандарты или рекомендации у вас отсутствуют, целесообразно затратить некоторые усилия на их составление. Начните с самого простого и позаимствуйте подходящие стандарты написания программ из существующих опубликованных руководств, предварительно убедившись в том, что они для вас подходят, и их будут применять все члены рабочей группы. Вашей наградой будет единый стиль программирования в рамках всего проекта.
Читать дальше