Проектирование и дизайн ПО Дмитриев Андрей Владиславович andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru 2007.

Презентация:



Advertisements
Похожие презентации
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Advertisements

Программная инженерия Дмитриев Андрей Владиславович
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Программная иженерия Андрей Дмитриев ©
Операторы языка Си Лекция 5.
b5_java_s4
В алгоритмической структуре «цикл» серия команд (тело цикла) выполняется многократно. Циклы бывают 2 типов: 1.Цикл со счетчиком. Используется когда заранее.
Программная инженерия Андрей Дмитриев ©
1 Программирование на языке Паскаль 1. Циклы с параметром.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Сортировка методом пузырька, выбором (Pascal) Кокарева Светлана Ивановна.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Переменные и основные типы переменных на JAVA Выполнил учитель информатики и ИКТ МБОУ СОШ р.п. Евлашево Горелочкин Н.К.
Информационные технологии Классы памяти auto static extern register Автоматические переменные создаются при входе в функцию и уничтожаются при.
Программная инженерия Дмитриев Андрей Владиславович
Транксрипт:

Проектирование и дизайн ПО Дмитриев Андрей Владиславович

Как написать программу, которую невозможно поддерживать? Зачем писать сложные программы? Методика работы инженера. Как написать сложную программу? Сопроводительная документация.

Зачем писать сложные программы? Никто не сможет поддерживать ваш код. Вас не смогут уволить. В глазах других разработчиков вы будете выглядеть как чрезвычайно опытный программист.

Методика работы инженера Порядок внесения изменений в программу: Понять задачу. Найти место в программе, которое нужно изменить. Понять, как изменить программу. Оценить последствия в соответствии с документацией. Внести изменения. Провести тестирование.

Выбор имен переменных Овладение искусством выбора имен переменных – залог успеха в запутывании программы. Односимвольные переменные: f, t, h,… Креативные опечатки: setDoubleValue(), setDuobleValue(). Внесение абстракции: doStuff(), handleThatNow(), doAgain(), … А.К.Р.О.Н.И.М.Ы.: clrMgmSmmf(). Используйте символы «_».

Широкий выбор имен для одинаковых методов Одна и та же функциональность может быть представлена различными именами: show(), display(), printOnScreen(), paint(), …

Используйте термины из фильмов и иностранные слова Тот, кто не видел этого фильма, недостоин писать программы: klingons, hobbitese, pluraloj, …

Переиспользуйте переменные int price = getPrice(); printReport(price); … price = getOranges(); Особенно полезно это делать в длинных методах.

«Почти стандартные» имена Используйте имена, похожие на известные: public void prit(String s){ System.out.println(String s); }

Инновационные комментарии while(true) { arr[i++] = calculateValue(i); /* этот цикл d = i--; * должен выполняться до if (d==0){ * тех пор, System.exit(0); * пока d не } * равно нулю */ revalidate(arr[i]); } Сколько операторов внутри цикла?

«Подробная» документация Скажите неправду в комментариях к программе. Указывайте «как», а не «почему». Избегайте описывать «очевидное» и наоборот: int tmp; //новая временная переменная. //содержит целые числа. //при завершении метода она пропадает! char c = s.substring(i, s.length()-3); //тут все просто.

Используйте придуманные термины Слово кажется вам забавным? Используйте его в комментариях как термин: snafucated.

Полное доверие к данным Никогда не проверяйте получаемые данные. Этим вы продемонстрируете что полностью доверяете своим клиентам.

Используйте статические массивы Почаще создавайте статический массив (размером 512х512) в классе. Даже если он никогда не используется, память будет расходоваться.

«Подписывайте» свои классы Реализуйте пустой интерфейс MadeByMe и помечайте им все свои классы. Настаивайте на том, чтобы каждый член команды делал также: MadeByIvan, MadeByGrisha, MadeByKatya…

Глобальные переменные Использование глобальных переменных продемонстрирует что вы кристально ясно понимаете этот код. Это также потребует кристального понимания от других инженеров….

Наращивайте размер классов Старайтесь создавать как можно меньше различных классов – это экономит память. Например, класс Vehicle должен содержать данные о текущей погоде и данные о состоянии ближайших заправок.

Используйте литералы Вместо именованных констант всегда используйте значения: for (int i = 0; i < 100; i++) { … } Это заставит программиста разбираться в программе глубже и находить все места использования, если вдруг данное значение нужно будет поменять.

Сокращайте объем исходного кода public class SimpleSummer { public long sum(intstart, int stop){ long acc = 0; for(int i=start;i

Исключения Используйте исключения (например, ArrayIndexOutOfBoundsException) для выхода из цикла или безусловного перехода.

{} Не используйте скобки там где это можно не делать: if (value == 0) value = 100; При добавлении второй строчки в тело блока нужно будет быть внимательным.

Тестирование Никогда не пишите тестов. Не оценивайте производительность и не тестируйте.

Выводы Чтобы стать незаменимым человеком, достаточно немного изменить программу.

Q&A

Дмитриев Андрей Владиславович Спасибо!