Стиль программирования Андрей Свердлов
Введение Или как мы учились писать код вместе
Определение Стиль программирования – это внутренне согласованная совокупность базовых конструкций программ и способов их к...
Зачем нужен СП <ul><li>унификация и упрощение кода: </li></ul><ul><ul><li>ускорение разработки (до 30% экономии времени) з...
Какой СП – хороший <ul><li>стиль – это стандарт! </li></ul><ul><li>прозрачный; </li></ul><ul><li>защищенный; </li></ul><ul...
Именование переменных: <ul><li>Венгерская нотация ( C++ ): </li></ul><ul><li>int  iCounter; </li></ul><ul><li>LPTSTR  lpsz...
Именование переменных: <ul><li>Нотация роботов  (C#) : </li></ul><ul><li>private int  _counter; </li></ul><ul><li>public  ...
Комментарии <ul><li>В достаточном количестве </li></ul><ul><li>Информативные </li></ul><ul><li>Для четкого круга читателей...
Комментарии: нотация роботов  (C#) <ul><li>private double  _dist = 0; //  расстояние до препятствия в метрах </li></ul><ul...
Комментарии : «профит-стиль»  (C#) <ul><li>private   bool  m_ShiftPressed; </li></ul><ul><li>public void  SetGradient ( Li...
Код <ul><li>есть правила выделения участков кода в объекты, функции, процедуры; </li></ul><ul><li>участки кода четко разде...
Код: нотация роботов  (C#) <ul><li>public class   DifficultExPioneer3DX </li></ul><ul><li>{ </li></ul><ul><li>#region  Pri...
Код : «профит-стиль»  (C#) <ul><li>public class   XConcept  :   IEquatable < XConcept > </li></ul><ul><li>{ </li></ul><ul>...
Как внедрить свой СП <ul><li>поощрение (прямое предписание) использования некоторых базовых концепций программирования; </...
Заключение <ul><li>Стиль – это целостная непротиворечивая система, основанная на используемой парадигме и учитывающая мног...
Спасибо! Ваши вопросы? Андрей Свердлов
Upcoming SlideShare
Loading in...5
×

Cтиль программирования

1,606

Published on

Стиль программирования, Андрей Свердлов, Клуб MAInfo.ru

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,606
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
37
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Cтиль программирования

    1. 1. Стиль программирования Андрей Свердлов
    2. 2. Введение Или как мы учились писать код вместе
    3. 3. Определение Стиль программирования – это внутренне согласованная совокупность базовых конструкций программ и способов их композиции, обладающая общими фундаментальными особенностями, как логическими, так и алгоритмическими. Стиль включает также совокупность базовых концепций, связанных с этими программами. Н. Непейвода
    4. 4. Зачем нужен СП <ul><li>унификация и упрощение кода: </li></ul><ul><ul><li>ускорение разработки (до 30% экономии времени) за счет одинакового понимая кода всеми разработчиками; </li></ul></ul><ul><ul><li>облегчение поиска ошибок; </li></ul></ul><ul><ul><li>упрощение рефакторинга; </li></ul></ul><ul><ul><li>облегчение сопровождения кода; </li></ul></ul><ul><li>обеспечение минимального уровня качества кода (структурированность, читаемость, документированность). </li></ul>
    5. 5. Какой СП – хороший <ul><li>стиль – это стандарт! </li></ul><ul><li>прозрачный; </li></ul><ul><li>защищенный; </li></ul><ul><li>легкий; </li></ul><ul><li>разборчивый; </li></ul><ul><li>однозначный. </li></ul>
    6. 6. Именование переменных: <ul><li>Венгерская нотация ( C++ ): </li></ul><ul><li>int iCounter; </li></ul><ul><li>LPTSTR lpszBuffer; </li></ul><ul><li>class CMyCPPClass; </li></ul><ul><li>struct TMyCPPStruct; </li></ul><ul><li>Венгерская нотация ( C# ) : </li></ul><ul><li>private int iCounter; </li></ul><ul><li>public long lSomethingVeryLong </li></ul><ul><li>public List < MyClass > aoMyList; </li></ul><ul><li>class CMyCSClass; </li></ul>
    7. 7. Именование переменных: <ul><li>Нотация роботов (C#) : </li></ul><ul><li>private int _counter; </li></ul><ul><li>public MyListener Listener; </li></ul><ul><li>public string MyPort8080ListenerName { get ;}; </li></ul><ul><li>public class LogicalRole ; </li></ul><ul><li>public class MyUserControl ; </li></ul><ul><li>«Профит-стиль» (C#) : </li></ul><ul><li>int m_Counter; </li></ul><ul><li>public string ServerName { get ;}; </li></ul><ul><li>public UIElement MainConceptBox; </li></ul><ul><li>public class XMyClass ; </li></ul><ul><li>public class ConceptView :UIElement ; </li></ul>
    8. 8. Комментарии <ul><li>В достаточном количестве </li></ul><ul><li>Информативные </li></ul><ul><li>Для четкого круга читателей (не для вообще всех) </li></ul>
    9. 9. Комментарии: нотация роботов (C#) <ul><li>private double _dist = 0; // расстояние до препятствия в метрах </li></ul><ul><li>/// <summary> </li></ul><ul><li>/// Функция изменят логическую роль робота с преследователя на убегающего и наоборот </li></ul><ul><li>/// </summary> </li></ul><ul><li>/// <param name=&quot;serviceRequest&quot;> вызывается ли функция после запроса к сервису </param> </li></ul><ul><li>public void ChangeRole ( bool serviceRequest) </li></ul><ul><li>/// <summary> </li></ul><ul><li>/// Класс логической роли робота . </li></ul><ul><li>/// Содержит все атрибуты робота . </li></ul><ul><li>/// </summary> </li></ul><ul><li>public class LogicalRole </li></ul>
    10. 10. Комментарии : «профит-стиль» (C#) <ul><li>private bool m_ShiftPressed; </li></ul><ul><li>public void SetGradient ( LinearGradientBrush a_BackgroundBrush ) </li></ul><ul><li>/// <summary> </li></ul><ul><li>/// Проверка попадания точки внутрь контрола. </li></ul><ul><li>/// </summary> </li></ul><ul><li>/// <param name=&quot;hit&quot;> Координаты в системе экрана </param> </li></ul><ul><li>/// <returns> попадание точки внутрь контрола </returns> </li></ul><ul><li>public bool HitTest ( Point a_ Hit) </li></ul><ul><li>public partial class XWikipediaWindow </li></ul>
    11. 11. Код <ul><li>есть правила выделения участков кода в объекты, функции, процедуры; </li></ul><ul><li>участки кода четко разделены между собой; </li></ul><ul><li>переменные и константы объявляются так, чтобы их область видимости совпадала с временем жизни; </li></ul><ul><li>регламентированы стандартные и общеупотребимые конструкции; </li></ul><ul><li>описываемый стилем код является защищенным. </li></ul>
    12. 12. Код: нотация роботов (C#) <ul><li>public class DifficultExPioneer3DX </li></ul><ul><li>{ </li></ul><ul><li>#region Private fields </li></ul><ul><li>private LogicalRole _role; // логическая роль робота </li></ul><ul><li>… </li></ul><ul><li>#endregion </li></ul><ul><li>private void GoCatcher () </li></ul><ul><li>{ </li></ul><ul><li>// поиск убегающего робота </li></ul><ul><li>SearchLRF ( out _dist, out _azimuth); </li></ul><ul><li>while ( true ) </li></ul><ul><li>{ </li></ul><ul><li>// если дистанция достаточно мала </li></ul><ul><li>if (_dist <= 0.5) </li></ul><ul><li>{ </li></ul><ul><li>// сменить роль и стать убегающим </li></ul><ul><li>ChangeRole (); </li></ul><ul><li>// больше ничего </li></ul><ul><li>return ; </li></ul><ul><li>} </li></ul><ul><li>// курс точно на убегающего </li></ul><ul><li>Turn (_azimuth); </li></ul>
    13. 13. Код : «профит-стиль» (C#) <ul><li>public class XConcept : IEquatable < XConcept > </li></ul><ul><li>{ </li></ul><ul><ul><li>XPosition m_Position; </li></ul></ul><ul><ul><li>public XPosition Position </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>get { return m_Position; } </li></ul></ul><ul><ul><li>set { m_Position = value ; } </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>XContent m_Content = null ; </li></ul></ul><ul><ul><li>public XContent Content </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>get { return m_Content; } </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void Save() </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>m_Position.Save(m_Row); </li></ul></ul><ul><ul><li>m _Content.Save(m_Row); </li></ul></ul><ul><ul><li>DBTableAdapters. ConceptsTableAdapter adapter = new </li></ul></ul><ul><ul><li>Mapedia.Core.DBTableAdapters. ConceptsTableAdapter (); </li></ul></ul><ul><ul><li>adapter.Update(m_Row); </li></ul></ul><ul><ul><li>} </li></ul></ul>
    14. 14. Как внедрить свой СП <ul><li>поощрение (прямое предписание) использования некоторых базовых концепций программирования; </li></ul><ul><li>запрещение (ограничение) использования некоторых других базовых концепций; иногда оно может быть неявным – через исключение нежелательных концепций из используемого языка или диалекта; </li></ul><ul><li>требования и рекомендации по оформлению и документированию программ; </li></ul><ul><li>совокупность инструментальных и организационных средств, поддерживающих вышеперечисленные требования и рекомендации. </li></ul>
    15. 15. Заключение <ul><li>Стиль – это целостная непротиворечивая система, основанная на используемой парадигме и учитывающая много тонкостей. </li></ul><ul><li>Хороший стиль разработать трудно. </li></ul><ul><li>Однако он является необходимым условием успеха в разработке программ. </li></ul>
    16. 16. Спасибо! Ваши вопросы? Андрей Свердлов
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×