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