Стиль программирования Андрей Свердлов

Содержание

Слайд 2

Введение Или как мы учились писать код вместе

Введение

Или как мы учились писать код вместе

Слайд 3

Определение Стиль программирования – это внутренне согласованная совокупность базовых конструкций программ

Определение

Стиль программирования – это внутренне согласованная совокупность базовых конструкций программ и

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

Зачем нужен СП унификация и упрощение кода: ускорение разработки (до 30%

Зачем нужен СП

унификация и упрощение кода:
ускорение разработки (до 30% экономии времени)

за счет одинакового понимая кода всеми разработчиками;
облегчение поиска ошибок;
упрощение рефакторинга;
облегчение сопровождения кода;
обеспечение минимального уровня качества кода (структурированность, читаемость, документированность).
Слайд 5

Какой СП – хороший стиль – это стандарт! прозрачный; защищенный; легкий; разборчивый; однозначный.

Какой СП – хороший

стиль – это стандарт!
прозрачный;
защищенный;
легкий;
разборчивый;
однозначный.

Слайд 6

Именование переменных: Венгерская нотация (C++): int iCounter; LPTSTR lpszBuffer; class CMyCPPClass;

Именование переменных:

Венгерская нотация (C++):
int iCounter;
LPTSTR lpszBuffer;
class CMyCPPClass;
struct TMyCPPStruct;
Венгерская нотация (C#):
private int

iCounter;
public long lSomethingVeryLong
public List aoMyList;
class CMyCSClass;
Слайд 7

Именование переменных: Нотация роботов (C#): private int _counter; public MyListener Listener;

Именование переменных:

Нотация роботов (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;// расстояние до

Комментарии: нотация роботов (C#)

private double _dist = 0;// расстояние до препятствия в

метрах
///
/// Функция изменят логическую роль робота с преследователя на убегающего и наоборот
///

/// вызывается ли функция после запроса к сервису
public void ChangeRole (bool serviceRequest)
///
/// Класс логической роли робота.
/// Содержит все атрибуты робота.
///

public class LogicalRole
Слайд 10

Комментарии: «профит-стиль» (C#) private bool m_ShiftPressed; public void SetGradient (LinearGradientBrush a_BackgroundBrush)

Комментарии: «профит-стиль» (C#)

private bool m_ShiftPressed;
public void SetGradient (LinearGradientBrush a_BackgroundBrush)
///


/// Проверка попадания

точки внутрь контрола.
///
/// Координаты в системе экрана
/// попадание точки внутрь контрола
public bool HitTest (Point a_Hit)
public partial class XWikipediaWindow
Слайд 11

Код есть правила выделения участков кода в объекты, функции, процедуры; участки

Код

есть правила выделения участков кода в объекты, функции, процедуры;
участки кода четко

разделены между собой;
переменные и константы объявляются так, чтобы их область видимости совпадала с временем жизни;
регламентированы стандартные и общеупотребимые конструкции;
описываемый стилем код является защищенным.
Слайд 12

Код: нотация роботов (C#) public class DifficultExPioneer3DX { #region Private fields

Код: нотация роботов (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 { XPosition m_Position;

Код: «профит-стиль» (C#)

public class XConcept : IEquatable
{
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

Заключение Стиль – это целостная непротиворечивая система, основанная на используемой парадигме

Заключение

Стиль – это целостная непротиворечивая система, основанная на используемой парадигме и

учитывающая много тонкостей.
Хороший стиль разработать трудно.
Однако он является необходимым условием успеха в разработке программ.