Your SlideShare is downloading. ×
  • Like
Cтиль программирования
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 1,577 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,577
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
36
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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