Чтение онлайн

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

Строгое соблюдение критериев завершения контрольных точек в той части, которая касается поддержания высокой производительности приложения, играет чрезвычайно важную роль по той простой причине, что добиться существенного улучшения производительности впоследствии без кардинального пересмотра проекта обычно оказывается невозможным. Типичные оправдания, подобные такому: "Главное сейчас — это завершить разработку готового варианта работоспособного кода к намеченному сроку, а проблемами производительности можно будет заняться и позже, при прохождении последующих контрольных точек", не выдерживают никакой критики. Справляться с проблемами производительности на более поздних стадиях производственного цикла всегда сложнее, поскольку с увеличением объема написанного кода зависимости между его отдельными частями только усиливаются, и это делает внесение необходимых изменений в проект все более затруднительным. Если кто-то говорит: "Проблемами производительности и их устранением мы займемся позже", то истинный смысл этого таков: "Мы не понимаем сути проблем производительности, с которыми столкнулись, и пока не можем сказать, каким образом собираемся устранять их в будущем. To, что мы создаем сейчас, — это прототип, который, как бы то ни было, может быть подготовлен к поставке; чтобы создать действительно завершенную версию приложения, нам, вероятно, придется переписать значительную часть кода".

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

Интерактивное взаимодействие конечных пользователей с приложением

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

■ Можно ли исключить или сократить периоды задержек путем технической доработки проекта?

■ Можно ли обрабатывать задержки, вызывая заставки или отображая курсоры ожидания, уведомляющие пользователя о том, что выполнение приложения продолжается?

■ Можно ли передать выполнение задачи фоновому потоку, чтобы обеспечить сохранение пользовательским интерфейсом постоянной способности к отклику?

Абсолютная производительность критических алгоритмов

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

К числу вопросов, на которые необходимо дать ответ, пересматривая критические алгоритмы, относятся следующие:

■ Можно ли ускорить выполнение этих алгоритмов путем их настройки или изменения?

■ Можно ли прогнозировать потребность алгоритмов в тех или данных и заблаговременно загружать нужные данные, прежде чем в них возникнет необходимость, чтобы пользователь мог быстрее получить результат?

■ Можно ли выполнять наиболее трудоемкую часть вычислений вне устройства, на сервере?

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

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

Время от времени критически пересматривайте написанный код

Замечательным способом улучшения качества создаваемого вами кода является его периодический критический анализ, направленный на обеспечение высокой производительности приложения. Хотя проектирование по соглашениям — не самая приятная стратегия построения алгоритмов, взаимный анализ кода, написанного разными участниками рабочей группы, является проверенным способом улучшения его качества. Критический анализ кода предоставляет преимущества двоякого рода

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

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

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

Поделиться:
Популярные книги

Товарищ "Чума"

lanpirot
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Товарищ Чума

Матабар. II

Клеванский Кирилл Сергеевич
2. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар. II

Вернувшийся: Первые шаги. Том II

Vector
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II

Печать Пожирателя 3

Соломенный Илья
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Черный Маг Императора 7 (CИ)

Герда Александр
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)

Мальвиль

Мерль Робер
Фантастика:
социально-философская фантастика
научная фантастика
альтернативная история
8.29
рейтинг книги
Мальвиль

Эволюционер из трущоб. Том 10

Панарин Антон
10. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 10

Бастард Императора. Том 13

Орлов Андрей Юрьевич
13. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 13

Александр Агренев. Трилогия

Кулаков Алексей Иванович
Александр Агренев
Фантастика:
альтернативная история
9.17
рейтинг книги
Александр Агренев. Трилогия

Вернувшийся: Корпорация. Том III

Vector
3. Вернувшийся
Фантастика:
космическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Корпорация. Том III

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8

Изгой Проклятого Клана. Том 6

Пламенев Владимир
6. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 6

Сильнейший ученик. Том 2

Ткачев Андрей Юрьевич
2. Пробуждение крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сильнейший ученик. Том 2