1 / 21

Оформление кода программы 10 апреля 2008 г.

Технологии программирования. Оформление кода программы 10 апреля 2008 г. 4 курс. Соглашения об оформлении кода. Отступы, скобки и разделители; Правильное использование переменных; Соглашение об именах; Число строк на метод; Цикломатическая сложность кода (число переходов управления);.

chaz
Download Presentation

Оформление кода программы 10 апреля 2008 г.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Технологии программирования Оформление кодапрограммы10 апреля 2008 г. 4 курс

  2. Соглашения об оформлении кода • Отступы, скобки и разделители; • Правильное использование переменных; • Соглашение об именах; • Число строк на метод; • Цикломатическая сложность кода (число переходов управления);

  3. Стиль кода. Отступы и скобки. K&R Style (The One True Brace Style, 1TBS или OTBS) if (hours < 24 && minutes < 60 && seconds < 60) { return true; } else { return false; }

  4. Стиль кода. Отступы и скобки. Allman style(by Eric Allman) (BSD in Emacs) if (hours < 24 && minutes < 60 && seconds < 60) { return true; } else { return false; }

  5. Стиль кода. Отступы и скобки. Whitesmiths style(стиль Уайтсмита) if (hours < 24 && minutes < 60 && seconds < 60) { return true; } else { return false; }

  6. Стиль кода. Отступы и скобки. GNU style (GNU Coding Standards) if (hours < 24 && minutes < 60 && seconds < 60) { return true; } else { return false; }

  7. Вертикальное выравнивание $search = array('a', 'b', 'c', 'd', 'e'); $replacement = array('foo', 'bar', 'baz', 'quux'); ------------------------------------------------------------------------------- $search=array('a', 'b', 'c', 'd', 'e'); $replacement = array('foo', 'bar', 'baz', 'quux');

  8. Пробелы int i; for(i=0;i<10;++i){printf("%d",i*i+i);} ------------------------------------------------------------------------------- int i; for(i=0;i<10;++i){ printf("%d",i*i+i); }

  9. Рекомендации для SQL selectcl.Name, cn.* fromtbl_clientscl left join tbl_contractscn oncl.Id = cn.ClientId wherecn.ContractDate = ‘20080401’ andcl.City = ‘MOSCOW’ --group by cl.Name order by 1, 2

  10. Грамотное объявление переменных • Отключите неявное объявление переменных; • Объявляйте все переменные; • Используйте соглашения об именах; • Удаляйте неиспользуемые переменные; • Объявляйте и инициализируйте переменные непосредственно перед использованием; • По мере возможности помечайте переменные как const (final); • Проверяйте значения входных параметров.

  11. Область видимости переменных • Локализуйте обращения к переменной (можно измерить интервал – количество строк - между обращениями); • Минимизируйте время жизни переменной в коде (можно измерить количеством строк); • Начинайте с самой ограниченной области видимости и расширяйте ее только при необходимости ; • Разбивайте группы связанных команд на отдельные функции.

  12. Персистентность (время жизни) Где и сколько «живут» переменные? • Внутри блока кода или функции; • Пока не будут «убиты» (или до уборки мусора); • До конца выполнения программы; • Всегда (между запусками программы). Переменная может «испортиться»! Поэтому нужно: • Проверять значения перед использованием; • «Убирать за собой» после использования; • Инициализировать данные перед использованием.

  13. Время связывания Когда переменная связывается со своим значением? • При написании кода (magic numbers); • При компиляции (именованные константы); • При загрузке программы; • При создании объекта; • По требованию. Чем позднее происходит связывание – тем гибче получается код програмы.

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

  15. Имена переменных Имя переменной должно полно и точно описывать сущность, представляемую переменной. Давая имя – ориентируйтесь на проблему, а не на метод её решения.

  16. Оптимальная длина имени Где-то между xи maximumNumberOfStudentInGroupAVT В среднем рекомендуется давать переменным имена длиной 10-15 символов. Допустимыми являются имена от 8 до 20 символов, если это оправдано. Если у вас в программе много коротких имен – проверьте их ясность (самодокументирующийся код). Используйте короткие имена для счетчиков и только когда время жизни переменной ограничено несколькими строками.

  17. Спецификаторы Вычисляемые значения Total, Sum, Average, Max, Min, Record, String, Pointer, Index, Count– нужно добавлять в конец имени. Антонимы (добавляются в начало имени): begin/end; first/last; locked/unlocked; min/max; next/previous; old/new; opened/closed; visible/invisible; source/target; source/destination; up/down.

  18. Индексные, временные, булевы переменные. Перечисления. • Индексам циклов присваиваются осмысленные имена, если цикл содержит более двух-трех строк или является вложенным; • Булевым переменным нужно присваивать имена, подразумевающие значения true или false (пример – done, error, found, success); • Избегайте отрицания в именах булевых переменных; • Имена элементов перечислений включают префикс перечисления; • Именованные константы называются в соответствии с сущностями, а не конкретными числами.

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

  20. Метрики исходных текстов • Количество исполняемых строк кода на метод; • Цикломатическая сложность кода Равна числу замкнутых областей на графе потока управления (блок-схеме).

  21. Спасибо за внимание Конец лекции.

More Related