Советы для создания грамотного кода. |
| Рано или поздно ты
захочешь показать свою прогу не только любимому хомячку, а крутым програмистам
и просто пользователям, ну и, конечно, ты хочешь, чтобы все закончилось
отлично, а не криками must die в адрес твоей программы. Ну так вот если
хочешь чтобы все закончилось криками must die и дракой, то можешь дальше
не читать, но если в твой голове промелькнула мысль, заслужить уважение
своими прогами, читай не обленись.
1. Всегда внимательно просматривай листинг своей программы, и если можно где-то уменьшить программу на оператор или строку, делай это. Потому что размер скомпилированной программы зависит напрямую от колличества строк и их длинны, а от этого зависит быстрота выполнения программы. У опытных кодеров существует даже такая поговорка:"Нет такой программы, которую нельзя было бы уменьшить хотя бы на один оператор". Но это не касается комментариев, компилятор их игнорирует, а тебе они пригодятся. С их помощью легче разобраться в уже написанной программе, а их присутствие при продаже кодов проги увеличивает их ценность. 2. Хорошенько изучи среду в, которой ты кодишь, так как в ней полно различных опций. По умолчанию они стоят в не оптимальной позиции, проги компилятся быстро, но размеры их большие, а есть такие настройки, которые позволяют компилить прогу чуть дольше, но размеры получаются маленькими. По страйся подобрать именно такие. 3. Программный интефейс должен быть простым и понятным для простого пользователя, использование не стандартных компанент интерфейса при водит к тому, что программа занимает много места в памяти и как следствие медленно выполняется. Профи этим необычным видом программы не удивишь, их интересуют лишь её функции, а обычный юзер либо не разберется с управлением, либо тут же удалит, не поняв, что это был всего-лишь калькулятор. 4. Всегда и везде, гдеможешь и хочешь, делай вставки на ассемблере, это позволяет существенно увеличить скорость и точность работы программы и ктому же это уменьшает потребности программы в системных ресурсах. Конечно, можно было бы писать проги полностью на асме(кстати, всемирно известный специалист по компьютерной безопастности Стив Гибсон до сих пор пишет свои программы только на асме), но разработка таких програм занимает слишком много времени, а вставки делать удобнее и это позволяют почти все языки высокого уровня.5. Не старайся не использовать для вычислений там, где это не надо "большие" типы переменных, они грузят комп, а пользы от них нет. 6. Если твоя прога долго грузится, то используй (Ctrl+Alt+Del : )) заставку, которая скрасит секунды, минуты, часы ... ожидания для тябя и пользователя. Нет, конечно это не увелтчит быстродействие, но отвлечет от ожидания. В использование БОЛЬШИХ рисунков для заставки нет смысла, она должна грузиться быстро, а не в два раза дольше программы. Такую можно подобрать в программах MS Office. Для той же цели можно использовать индикатор загрузки, но если он заполняется рывками, то забудь о нем, это не только не отвлечет, но и еще привлечет дополнительное внимание к торможению.7. В формах используй изображения в форматах jpg,wmf,gif,pcx, а не BMP, которое занимае МНОГО места. Большие изображения делай в gif, а маленькие в jpg. Помни чем меньше цветов тем меньше размер, например, 16 - цветный рисунок занимает половину требуемой памяти для 256 - го рисунка, а монохромный - одну четверть памяти, требуемой для 16 - ти цветного рисунка. Так что если у тебя черно-белый рисунок, то следует сохранять его, как монохромный.8. Следи за тем чтобы в циклах не выполнялись операции, которые можно выполнить вне цикла. Например: for y=1 to 1000 x=x*7 i=i+1 next y операция х=х*7 будет выполняться 1000 раз, хотя она свободно может быть выпонена всего один раз вне цикла, как показано в следуещем примере: x=x*7 for y=1 to 1000 i=i+1 next y Случаи подобные первому сильно тормозят программу. 9. Операции с элементами массива всегда выполняются медленнее, чем с обычными переменными. Поэтому операция a*b будет выполняться быстрее, чем a[x]*b[y], при одинаковых значениях. Значит для повышения производительности в том случае, когда один и тот же элемент массива надо использовать неоднократно, следует присвоить значение переменной один раз, а затем использовать её столько, сколько влезет. При этом производительность в циклах возрастает примерно на 80 процентов.10. Чаще всего структуры выбора if лучше разделить на несколько блоков, например: if x>1 and y<5 then i=0 можно разделить на два блока: if x>1 then if y<5 then i=0 end if В последнем случае второй if не вы полняется, если первый оказался ложным. Это способствует повышению скорости программы, т.к. исключаются лишние проверки. По тем же соображениям в структуре операторов if/else после оператора else всегда пиши то условие, которое менее всего вероятно может возникнуть в реальной ситуации. В выражениях с операцией && (логическое И в С/С++), если отдельные условия независимы, например: if(x==0 && y>1) на первое место записывай то условие, которое вероятнее всего окажется ложным, т.к. в этом случае анализ выражения будет сразу прекращен и передан следующией строке, что сокращает время выпонения программы. А в выражениях с операцией || (логическое ИЛИ), например: if (x>=1 || y>=1) на первое место пиши то условие, которое вероятнее всего окажется истинным. 11. Обращение к элементам одномерного массива всегда быстрее, чем к элементам многомерного массива. Поэтому всегда старайся использовать исключительно одномерные массивы, например, вместо матрицы 5 на 5 сделай одномерный массив на 25 элементов.12. Изюегай повторные вычисления одних и тех же выражений, достаточно сделать это один раз и в дальнейшем использовать полученное значение. Например: if (a>x*3) b=x*3+(1+x*3)/(100+x*3); for (int i = 1; i<= x * 3; i++) c = i + b * x * 3; правильнее написать так: y = x * 3; b = y + (1 + y)/(100 + y) for (int i=1;i<=y;i++) c= i+b*y; Это увеличивает скорость выполнения программы. 13. Помни, что глобальные переменные (extern), а так же статические переменные (static) работают в несколько раз медленнее и требуют больше памяти, чем локальные и автоматические переменные (автоматические переменные сохраняют свое значение, пока выпоняется процедура, и теряют его при выходе из нее). Локальные и автоматические переменные, как правило, объявляются по умолчанию. Поэтому вместо объявления глобальных истатических переменнных лучше использовать, например, переменные уровня модуля.14. Старайся использовать простые арифметическме операции типа сложения или вычетания, т.к. процессор выполняет их гораздо бастрее, чем, например, умножение или деление. Вообще, все арифметические операции можно разделить по скорости выполнения их процессором. Вот некоторые из них, начиная с самого быстрого: 1)присваивание; 2)сложение/вычитание; 3)умножение; 4)деление; 5)воведение в степень и др. Для того чтобы перейти от сложных операци к более простым, сокращай выражения, например, вместо x= a*c+b*c+d*a+d*b правильнее написать (a+b)*(c+d). Деление заменяй умножением, нарпример, вместо x=(a+b)/2 пиши x=(a+b)*0.5. Если тебе нужно возвести число в степень, лучше использовать проиведение этого числа на само себя. Это будет гораздо быстрее, чем операция pow(x, y). Например, выражение y=x*x*x будет выполненно в 7 раз быстрее чем pow (x,3). Если степень высокого порядка, то её лучше разбить с помощью временных переменных, например: tmp = x * x * x y = tmp * tmp * x Это будет выполненно в 3 раза быстрее, чем pow(x,7). 15. Используй сокращенные операции. Например, такие как инкримент ++ (увеличение на 1), декремент - (уменьшение на 1), а также операции рписваивания, типа += (выражение х+=3 то же, что х=ч+3 ) и т.п. Сокращенные операции выполняются быстрее, кроме того, они позволяют быстрее набивать программу, и компилятор быстрее ее компилирует. 16. Ты должен знать что в программировании считается ламерством использовать оператор Goto. Давно доказано, что без него можно обойтись в любой ситуации. Использование этого оператора ухудшает читаемость программы и увеличивает код, правда в некоторых ситуациях может повысить эффективность. Но даже если ты используешь его для повышения эффективности своей проги, все равно никому не показывай ее текст , т.к. любой опытный кодер, увидев этот оператор, сразу примет тебя за ламера.17. Если в твоем коде есть консьанты, которые не меняются на протяжении всей программы, - не делай лишние присваивания. Наример: int x=5,y=7; if(a<x && b<y) c=x; лучше написать так: if (a<5 && b<7) c=5; Таким образом, ты сократишь код, а также уменьшишь размер скомпилированной программы, сократишь время её выполнения и освободишь память. 18. Всегда конкретизируй по типу все обьявляемые переменные, так как в некоторых языках под неопределенные переменные выделяется максимальное колличество памяти, хотя чаще надо в несколько раз меньше.Конечно, это не все советы, а лишь малая часть основных, их намного больше и ты должен узнать еще много всяких подобных фитчей для того, чтобы стать гуру в программировании, надо прочитать еще и три тома "Искуство програмирования" от Дональда Кнута.Эта книга просто мировой бестселлер, которую, считаетется, должен прочитать каждый уважающий себя кодер.Кстати, сам Билли (естественно не Клинтон : ) сказал, что кто прочитает все эти три тома от корки до корки, может присылать ему свое резюме. Если умудришься присоединиться к МелкоСофтникам, то попытайся изменить Windows к лучшему. Удачи во всем! |