Преднамеренное программирование

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

• Всегда отдавайте для себя отчет в том, что вы делаете. Программер Фред равномерно Преднамеренное программирование терял контроль над происходящим, пока не сварился сам, подобно лягушке из раздела "Суп из камешков и сварившиеся лягушки".

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

• Действуйте исходя из плана, непринципиально, где он составлен – у вас в голове, на кухонной салфетке либо на большой «простыне», приобретенной при помощи CASE-средств.

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

• Документируйте ваши догадки. Раздел "Проектирование по договору" поможет прояснить ваши догадки в вашей же голове, также передать их другим людям.

• Тестируйте не только лишь вашу программку, да и ваши догадки. Не гадайте, попытайтесь выполнить это на самом деле. Напишите программку контроля для проверки ваших Преднамеренное программирование догадок (см. "Программирование утверждений"). Если ваше предположение правильно, то вы улучшили документирование вашей программки. Если вы нашли, что предположение неверно, тогда считайте, что вам подфартило.

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

• Не будьте рабами прошедшего. Не позволяйте имеющейся программке диктовать свою волю той программке, за которой будущее. Если программка устаревает, она может быть на сто процентов заменена. И даже в границах одной программки не позволяйте уже произведенному сдерживать то, что идет за Преднамеренное программирование ним, – будьте готовы к реорганизации (см. "Реорганизация"). Это решение может воздействовать на график выполнения проекта. Мы полагаем, что это воздействие будет меньше той цены, которую придется платить за отсутствие конфигураций [37].

Потому, если в последующий раз что-то начинает работать, но вы не понимаете, почему это происходит, удостоверьтесь, что это не Преднамеренное программирование является стечением событий

Другие разделы, относящиеся к этой теме:

• Суп из камешков и сварившиеся лягушки

• Отладка

• Проектирование по договору

• Программирование утверждений

• Временное связывание

• Реорганизация

• Все эти сочинения

Упражнения

31. Найдите совпадения в представленном куске программки на языке С. Представим, что этот кусок находится глубоко в недрах библиотечной подпрограммы. (Ответ см. в Приложении В.)

fprintf(stderr, "Error, continue?");

gets(buf);

32. Этот кусок Преднамеренное программирование программки на языке С мог работать в течение какого-то времени на неких машинах. Потом он переставал работать. В чем ошибка? (Ответ см. в Приложении В.)

/* Truncate string to its iast maxlen chars */

void string_tail(char *string, int maxlen) {

int len = strlen(string);

if (len > maxlen) {

strcpy(string Преднамеренное программирование, string+(len – maxlen));

}

}

33. Эта программка заходит в состав универсального пакета трассировки Java. Функция записывает строчки в файл журнальчика. Она проходит модульное тестирование, но дает сбой при попытке ее внедрения одним из разработчиков программ для сети Веб. На какое стечение событий полагается эта программка? (Ответ см. в Приложении В.)

public Преднамеренное программирование static void debug(String s) throws IOException {

FileWriter fw = new FileWriter("debug.log");

fw.write(s);

fw.flush();

fw.close();

}

Скорость метода

В разделе «Оценка» говорилось об оценке того, сколько времени будет нужно, чтоб пройти несколько городских кварталов, и сколько времени необходимо для окончания проекта. Но существует и Преднамеренное программирование другой вид оценок, который прагматики используют фактически раз в день: оценка ресурсов, применяемых методами, – времени, работы микропроцессора, объема памяти и т. д.

Часто этот вид оценки является решающим. Если вы сможете сделать что-либо 2-мя методами, то какой из их стоит избрать? Если вам понятно время выполнения программки при Преднамеренное программирование наличии 1000 записей, то как оно поменяется при наличии 1000000 записей? Какая часть программки нуждается в оптимизации?

Оказывается, что в почти всех случаях на подобные вопросы можно ответить, пользуясь здравым смыслом, неким анализом и методикой записи приближений, которая именуется "О-большое".


predpolagaemij-diagnoz-lechenie.html
predpolagaemij-vinovnik-krupnogo-dtp-v-saratove-priznalsya-chto-otvleksya-na-doroge-mvd-informacionnoe-agentstvo-ria-novosti-30102011.html
predpolagaemogo-soobsheniya-orgkomitet-ostavlyaet-za-soboj-pravo-vklyucheniya-vashego-soobsheniya-v-programmu-konferencii-v-vide-ustnogo-ili-stendovogo-doklada.html