Слайд 1Проектирование и дизайн ПО
Дмитриев Андрей Владиславович
andrei-dmitriev@yandex.ru
http://in4mix2006.narod.ru
2007
Слайд 2Как написать программу, которую невозможно поддерживать?
Зачем писать сложные программы?
Методика работы инженера.
Как
написать сложную программу?
Сопроводительная документация.
Слайд 3Зачем писать сложные программы?
Никто не сможет поддерживать ваш код.
Вас не смогут
уволить.
В глазах других разработчиков вы будете выглядеть как чрезвычайно опытный программист.
Слайд 4Методика работы инженера
Порядок внесения изменений в программу:
Понять задачу.
Найти место в программе,
которое нужно изменить.
Понять, как изменить программу.
Оценить последствия в соответствии с документацией.
Внести изменения.
Провести тестирование.
Слайд 5Выбор имен переменных
Овладение искусством выбора имен переменных – залог успеха в
запутывании программы.
Односимвольные переменные: f, t, h,…
Креативные опечатки: setDoubleValue(), setDuobleValue().
Внесение абстракции: doStuff(), handleThatNow(), doAgain(), …
А.К.Р.О.Н.И.М.Ы.: clrMgmSmmf().
Используйте символы «_».
Слайд 6Широкий выбор имен для одинаковых методов
Одна и та же функциональность может
быть представлена различными именами:
show(),
display(),
printOnScreen(),
paint(),
…
Слайд 7Используйте термины из фильмов и иностранные слова
Тот, кто не видел этого
фильма, недостоин писать программы:
klingons,
hobbitese,
pluraloj,
…
Слайд 8Переиспользуйте переменные
int price = getPrice();
printReport(price);
…
price = getOranges();
Особенно полезно это делать в
длинных методах.
Слайд 9«Почти стандартные» имена
Используйте имена, похожие на известные:
public void prit(String s){
System.out.println(String s);
}
Слайд 10Инновационные комментарии
while(true) {
arr[i++] = calculateValue(i); /* этот цикл
d = i--; * должен выполняться до
if (d==0){ * тех пор,
System.exit(0); * пока d не
} * равно нулю */
revalidate(arr[i]);
}
Сколько операторов внутри цикла?
Слайд 11«Подробная» документация
Скажите неправду в комментариях к программе.
Указывайте «как», а не «почему».
Избегайте
описывать «очевидное» и наоборот:
int tmp; //новая временная переменная.
//содержит целые числа.
//при завершении метода она пропадает!
char c = s.substring(i, s.length()-3); //тут все просто.
Слайд 12Используйте придуманные термины
Слово кажется вам забавным? Используйте его в комментариях как
термин: snafucated.
Слайд 13Полное доверие к данным
Никогда не проверяйте получаемые данные. Этим вы продемонстрируете
что полностью доверяете своим клиентам.
Слайд 14Используйте статические массивы
Почаще создавайте статический массив (размером 512х512) в классе.
Даже если
он никогда не используется, память будет расходоваться.
Слайд 15«Подписывайте» свои классы
Реализуйте пустой интерфейс “MadeByMe” и помечайте им все свои
классы.
Настаивайте на том, чтобы каждый член команды делал также: MadeByIvan, MadeByGrisha, MadeByKatya…
Слайд 16Глобальные переменные
Использование глобальных переменных продемонстрирует что вы кристально ясно понимаете этот
код.
Это также потребует кристального понимания от других инженеров….
Слайд 17Наращивайте размер классов
Старайтесь создавать как можно меньше различных классов – это
экономит память.
Например, класс Vehicle должен содержать данные о текущей погоде и данные о состоянии ближайших заправок.
Слайд 18Используйте литералы
Вместо именованных констант всегда используйте значения:
for (int i = 0;
i < 100; i++) {
…
}
Это заставит программиста разбираться в программе глубже и находить все места использования, если вдруг данное значение нужно будет поменять.
Слайд 19Сокращайте объем исходного кода
public class SimpleSummer { public long sum(intstart,
int stop){ long acc = 0; for(int i=start;i<=stop;i++){ acc += i; return acc; } }
Слайд 20Исключения
Используйте исключения (например, ArrayIndexOutOfBoundsException) для выхода из цикла или безусловного перехода.
Слайд 21{}
Не используйте скобки там где это можно не делать:
if (value ==
0)
value = 100;
При добавлении второй строчки в тело блока нужно будет быть внимательным.
Слайд 22Тестирование
Никогда не пишите тестов.
Не оценивайте производительность и не тестируйте.
Слайд 23Выводы
Чтобы стать незаменимым человеком, достаточно немного изменить программу.
Слайд 25Дмитриев Андрей Владиславович
andrei-dmitriev@yandex.ru
http://in4mix2006.narod.ru
2007
Спасибо!