Технология разработки программного обеспечения Форматирование и стиль.

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



Advertisements
Похожие презентации
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Advertisements

Язык программирования Delphi. Алфавит языка 53 буквы латинского алфавита и символ подчеркивания Цифры от 0 до 9 23 спец.символа
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ НАЧАЛА ПРОГРАММИРОВАНИЯ.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
Тест классы По программированию Pascal.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Алфавит языка TURBO PASCAL. Цель урока: Узнать: Алфавит языка программирования TURBO PASCAL. Этапы разработки программы Типы ошибок Разделы программы.
Program ( {, }); заголовок программы раздел описаний (описания) begin блок ; ; раздел операторов... (тело программы) end. Структура Паскаль-программы.
Функции Лекция 8. Назначение функций Функции - самостоятельные программные единицы, спроектированные для решения конкретной задачи. Функции по структуре.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
Знакомство с IDE Pascal. Этапы решения задачи на компьютере : 1. Постановка реальной задачи и ее содержательный анализ 2. Создание модели ( формализация.
Подготовка к ЕГЭ (С 4) Обработка данных, вводимых в виде символьных строк или последовательности чисел.
Программная иженерия Андрей Дмитриев ©
1 Контрольное зачетное задание (0, 0)(0, m-1) (n-1, 0)(n-1, m-1) Дано прямоугольное поле, расчерченное на клетки: n клеток в высоту и m клеток в ширину.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Знакомство с языком Паскаль. Язык Pascal был создан в начале 70-х годов XX века Никлаусом Виртом. Основой для этого языка послужил широко распространенный.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Транксрипт:

Технология разработки программного обеспечения Форматирование и стиль

Технология разработки программного обеспечения Список литературы Макдоннелл. С. Совершенный код. Мастер-класс / Пер. с англ. – М.: Издательско-торговый дом «Русская редакция»; Спб. : Питер, 2005 – 896 стр. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно- ориентированного проектирования. Паттерны проектирования. – Спб: Питер, – 366 с. Фаулер М. Рефакторинг – улучшение существующего кода. – Пер. с англ. – Спб: Символ-плюс, – 432 с. Файлер М. Архитектура корпоративных программных приложений. : Пер. с англ. – М. : Издательский дом «Вильямс», – 544 с.

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

Технология разработки программного обеспечения Интерпретация программы человеком и компьютером Любой человек может написать код, понятный компьютеру. Хо­рошие программисты пишут код, понятный людям. Мартин Фаулер (Martin Fowler) /* Используем способ сортировки методом вставок для сортировки массива «data» в возрастающем порядке. Этот метод предполагает, что [ firstElement ] не является первым элементом данных и элемент data[ firstElement-1 ] достижим. */ public void InsertionSort( int[] data, int firstElement, int lastElement ) { /* Заменяем элемент, расположенный на нижней границе интервала, элементом, который гаранти­ рованно будет первым в сортированном списке. */ int lowerBoundary = data [ firstElement-1 ]; data[ firstElement-1 ] = S0RT_MIN; /* Элементы в позициях от firstElement до sortBoundary-1 всегда сортированы. При каждом проходе цикла sort- Boundary увеличивается, и элемент, соответствующий новому sortBoundary, возможно, будет неправильно отсортирован, поэтому он вставляется в надлежащую позицию массива где-то между firstElement и sortBoundary. */ for ( int sortBoundary = firstElement+1; sortBoundary <= lastElement; sortBoundary++ ) { int insertVal = data[ sortBoundary ]; int insertPos = sortBoundary; while ( insertVal < data[ insertPos-1 ] ) { data[ insertPos ] = data[ insertPos-1 ]; insertPos = insertPos-1; } data[ insertPos ] = insertVal; } /* Возвращаем исходное значение элементу, расположенному на нижней границе интервала */ data[ firstElement-1 ] = lowerBoundary; }

Технология разработки программного обеспечения Интерпретация программы человеком и компьютером Форматирование это ключ к структуре программы. Компьютеру важна исключительно информация о скобках или операторах begin и end, а читатель-человек склонен делать выводы из визуального представления кода. // меняем местами правые и левые элементы во всем массиве for (i = 0; i < MAX_ELEMENTS; i++) leftElement = left[ i ]; left[ i ] = right[ i ]; right[ i ] = leftElement; х = * 2 + 7;

Технология разработки программного обеспечения Цели хорошего форматирования Точно представлять логическую структуру кода Единообразно показывать логическую структуру кода Улучшать читабельность Выдерживать процедуру исправления

Технология разработки программного обеспечения Способы форматирования - неотображаемые символы // Пример кода с плохой читабельностью public decimal Calculate(int parValue) { decimal retVal=0.0m; if(parValue>0)retVal=parValue+25; if(parValue<0)retVal=parValue-25; return retVal; } // Пример кода с хорошей читабельностью public decimal Calculate(int parValue) { decimal retVal = 0.0m; if ( parValue > 0) retVal = parValue + 25; if( parValue < 0) retVal = parValue - 25; return retVal; }

Технология разработки программного обеспечения Способы форматирования - группировка for (int i = 0; i < TestCount; i++) { locTransaction = locConnection.BeginTransaction(); OleDbCommand locCommand = new OleDbCommand(); string locStrSQL INSERT INTO complex_table (f_code, f_title, f_amount, f_date) VALUES(?, ?, ?, ?)"; OleDbParameter locCodeParameter = locCommand.Parameters.Add("f_code",OleDbType.Char); locCodeParameter.Value = string.Format("{0}", i); OleDbParameter locTitleParameter = locCommand.Parameters.Add("f_title, OleDbType.VarChar); locTitleParameter.Value = string.Format("Заголовок {0}", i); OleDbParameter locAmountParameter = locCommand.Parameters.Add("f_amount, OleDbType.Currency); locAmountParameter.Value = (decimal)i;

Технология разработки программного обеспечения Способы форматирования – пустые строки Оптимально число пустых строк в программе составляет от 8% до 16%. Если оно больше 16%, то время на отладку заметно увеличивается int locSum = 0; for (int i = 0; i < 10; i++) locSum += i; Console.WriteLine(Sum: {0}, locSum); // Определение текущей даты DateTime locTime = DateTime.Now; Console.WriteLine(Текущее время {0}, locTime);

Технология разработки программного обеспечения Способы форматирования – отступы Отступы влияют на способность программиста понимать код. В тесте испытуемые показали результат на 20%-30% лучше, когда программы использовали схему отступов из 2-4 х пробелов (1-2 знака табуляции) /// /// Базовый класс для тестов /// public abstract class BaseTest { /// /// Событие о том, что тест закончен /// public event EventHandler TestCompleted = null; … #region Работа с событиями /// /// Признак того, что тест завершен /// protected void CallCompleted() { if (TestCompleted != null) TestCompleted(this, new EventArgs()); }

Технология разработки программного обеспечения Способы форматирования – скобки Необходимо использовать скобки гораздо чаще, чем это кажется необходимым % 3 * 7 / 8 a + b > 17 or c – d == 0 and !x

Технология разработки программного обеспечения Стили программирования – явные блоки Блок – группа операторов, расположенная под управляющими выражениями Блок называется явным, если у управляющей структуры есть свой терминатор пример на Visual Basic If Then End If

Технология разработки программного обеспечения Стили программирования – эмуляция явных блоков Хорошим подходом в языках, не имеющих явных блоков, будет рассмотрение ключевых слов begin и end (или символов { и }) в виде расширений управляющих структур, с которыми они используются. Данный подход подразумевает, что явный блок должен начинаться в первом операторе блока и заканчиваться после последнего оператора. if ( ) { }

Технология разработки программного обеспечения Стили программирования – использование пар begin-end для обозначения границ блоков Данный подход рассматривает begin и end как операторы, следующие за управляющей структурой, а не как фрагменты, являющиеся ее частью if ( ) { }

Технология разработки программного обеспечения Стили программирования – форматирование в конце строки Отступы в конце строки служат для выравнивания блока относительно ключевого слова, с которого он начинается, выравнивания следующих параметров метода под первым параметром, размещения вариантов в операторе case и подобных случаев if ( ) { }

Технология разработки программного обеспечения Форматирование управляющих структур Форматирование некоторых программных элементов часто является только эстетическим вопросом. Однако форматирование управляющих структур влияет на удобство чтения и понимания и поэтому имеет практическое значение. Избегайте отсутствия отступов в парах begin-end // логическая структура кода плохо раскрыта for ( int i = 0; i < 10; i++ ) { } // логическая структура кода раскрыта хорошо for ( int i = 0; i < 10; i++ ) { }

Технология разработки программного обеспечения Форматирование управляющих структур Избегайте двойных отступов в парах begin-end for ( int i = 0; i < 10; i++ ) { } Исследования показали, что с точки зрения понимания программы, использующие одинарные и двойные отступы, не отличаются друг от друга

Технология разработки программного обеспечения Форматирование управляющих структур Используйте пустые строки между абзацами progress.min = 0; progress.max = 100; progress.step = 1; form.title = Загрузка данных; form.width = 100; form.height = 50; progress.min = 0; progress.max = 100; progress.step = 1; form.title = Загрузка данных; form.width = 100; form.height = 50;

Технология разработки программного обеспечения Форматирование управляющих структур Форматируйте блоки из одного оператора единообразно if ( ) ; if ( ){ ; } if ( ) { ; } if ( ) ;

Технология разработки программного обеспечения Форматирование управляющих структур В сложных выражениях размещайте каждое условие на отдельной строке if (((0 >= locChar) && (9 = locChar) && (z = locChar) && (Z <= locChar)))... if ( ( (0 >= locChar) && (9 <= locChar) ) || ( (a >= locChar) && (z <= locChar) ) || ( (A >= locChar) && (Z <= locChar) ) )...

Технология разработки программного обеспечения Форматирование управляющих структур Избегайте операторов goto

Технология разработки программного обеспечения Форматирование отдельных операторов – использование пробелов для ясности for(int i=0;i<100;i++)Console.Write(i); Данный пример так же читабелен как Примервыводазначенияцикла. for ( int i = 0; i < 100; i++ ) Console.Write( i ); if((a<b)&&(c<d)) globalIndex[ mas[ i ] + idx[ j, k ] ];

Технология разработки программного обеспечения Форматирование строк с продолжением Сделайте так, чтобы незавершенность выражений была очевидна. Самый простой пример – сделать так, чтобы часть выражения на первой строке была вопиющее некорректной, если рассматривать ее отдельно. if ( a > b) && ( c == d ) && ( ( I == j ) || ( k < l ) ) Располагайте сильно связанные элементы вместе locValue = CalculateAverageValue( locValues ) + FindMaxValue( locValues ); При переносе строк в вызове метода используйте отступ стандартного размера DrawString(Введите количество продукции, locRectangle.x, locRectangle.y, locRectangle.width, locRectangle.height, locFont);

Технология разработки программного обеспечения Форматирование строк с продолжением Упростите поиск конца строк с продолжением DrawString(Введите количество продукции, locRectangle.x, locRectangle.y, locRectangle.width, locRectangle.height, locFont ); При переносе строк в управляющем выражении и выражениях присваивания делайте отступ стандартного размера Не выравнивайте правые части выражений присваивания locAverageSum = ( locValue1 + locValue2 ) / 2; locMultiply = locValue1 * locValue2; locSum = locValue1 + locValue2;

Технология разработки программного обеспечения Размещение одного оператора на строке Размещение каждого оператора на отдельной строке дает точное представление о сложности программы Размещение нескольких операторов на одной строке не помогает современным компиляторам в оптимизации Если операторы расположены на отдельных строках, чтение кода происходит сверху вниз, а не сверху вниз и слева направо При размещении операторов на отдельных строках легко найти синтаксические ошибки, если компилятор сообщает только номера строк, где они произошли При размещении операторов на отдельных строках легко выполнять пошаго­вую отладку кода, используя построчные отладчики Когда строка содержит только один оператор, его легко редактировать можно удалить или временно закомментировать всю строку

Технология разработки программного обеспечения Размещение объявлений данных Располагайте каждое объявление в отдельной строке int locItemCount, locUsersSum, locMaxValue; decimal locAmount, locBookPrice, locAccountRest; ArrayList locItems, locCols, locDeletedItems; int locItemCount; int locUsersSum; int locMaxValue; decimal locAmount; decimal locBookPrice; decimal locAccountRest; ArrayList locItems; ArrayList locCols; ArrayList locDeletedItems; Объявляйте переменные рядом с местом их первого использования Разумно упорядочивайте объявления

Технология разработки программного обеспечения Размещение комментариев Делайте в комментарии такой же отступ, как и в соответствующем ему коде; Отделяйте каждый комментарий хотя бы одной пустой строкой While ( !m_Complete ) { // Увеличиваем счетчик Lock( m_Counter) { m_Counter++; } // Засыпаем на одну секунду CurrentThread.Sleep(1000); }

Технология разработки программного обеспечения Размещение заголовков методов Используйте пустые строки для разделения составных частей метода. Желательно оставлять пустые строки между заголовком метода, объявлениями данных и именованных констант (если они есть) и телом метода; Используйте стандартный отступ для аргументов метода; Для форматирования заголовка метода можно задействовать те же, что и раньше, варианты форматирования public void GetAccountData( int parAccountID, out string parAccountCode, out decimal parAccountRest )

Технология разработки программного обеспечения Форматирование классов - интерфейс Соглашение о размещении интерфейсов классов предусматривает перечисление членов класса в следующем порядке: 1. Шапка с комментарием, содержащая описание класса и любые примечания, касающиеся общих вопросов его использования; 2. Конструкторы и деструкторы; 3. Открытые методы; 4. Защищенные методы; 1. Закрытые методы и члены – данные

Технология разработки программного обеспечения Форматирование классов - реализация Реализации классов, в общем случае, могут размещаться в следующем порядке: 1. Шапка с комментарием, описывающая содержимое файла с классом; 2. Данные класса; 3. Открытые методы; 4. Защищенные методы; 5. Закрытые методы. Если файл содержит более одного класса, четко определяйте границы каждого класса

Технология разработки программного обеспечения Организация файлов и программ Помещайте каждый класс в отдельный файл; Называйте файл в соответствии с именем класса; Четко разделяйте методы внутри файла; Упорядочивайте методы по алфавиту