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

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

Upload: constantin-kichinsky

Post on 20-Jun-2015

1.599 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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

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

Андрей Свердлов

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

Введение

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

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

Определение

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

фундаментальными особенностями, как логическими, так и алгоритмическими. Стиль

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

Н. Непейвода

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

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

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

за счет одинакового понимая кода всеми разработчиками;

– облегчение поиска ошибок;– упрощение рефакторинга;– облегчение сопровождения кода;

• обеспечение минимального уровня качества кода (структурированность, читаемость, документированность).

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

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

• стиль – это стандарт!

• прозрачный;

• защищенный;

• легкий;

• разборчивый;

• однозначный.

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

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

• Венгерская нотация (C++):

int iCounter;

LPTSTR lpszBuffer;

class CMyCPPClass;

struct TMyCPPStruct;

• Венгерская нотация (C#):

private int iCounter;

public long lSomethingVeryLong

public List<MyClass> aoMyList;

class CMyCSClass;

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

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

• Нотация роботов (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;

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

Комментарии

• В достаточном количестве

• Информативные

• Для четкого круга читателей (не для вообще всех)

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

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

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

/// <summary>

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

/// </summary>

/// <param name="serviceRequest">вызывается ли функция после запроса к сервису</param>

public void ChangeRole (bool serviceRequest)

/// <summary>

/// Класс логической роли робота.

/// Содержит все атрибуты робота.

/// </summary>

public class LogicalRole

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

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

private bool m_ShiftPressed;

public void SetGradient (LinearGradientBrush a_BackgroundBrush)

/// <summary>

/// Проверка попадания точки внутрь контрола.

/// </summary>

/// <param name="hit">Координаты в системе экрана</param>

/// <returns>попадание точки внутрь контрола</returns>

public bool HitTest (Point a_Hit)

public partial class XWikipediaWindow

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

Код

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

• участки кода четко разделены между собой;• переменные и константы объявляются так,

чтобы их область видимости совпадала с временем жизни;

• регламентированы стандартные и общеупотребимые конструкции;

• описываемый стилем код является защищенным.

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

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

public class DifficultExPioneer3DX{

#region Private fieldsprivate LogicalRole _role; // логическая роль робота…#endregionprivate void GoCatcher (){

// поиск убегающего роботаSearchLRF (out _dist, out _azimuth);while (true){

// если дистанция достаточно малаif (_dist <= 0.5){

// сменить роль и стать убегающимChangeRole ();// больше ничегоreturn;

}// курс точно на убегающегоTurn (_azimuth);

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

Код:«профит-стиль» (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);

}

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

Как внедрить свой СП

• поощрение (прямое предписание) использования некоторых базовых концепций программирования;

• запрещение (ограничение) использования некоторых других базовых концепций; иногда оно может быть неявным – через исключение нежелательных концепций из используемого языка или диалекта;

• требования и рекомендации по оформлению и документированию программ;

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

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

Заключение

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

• Хороший стиль разработать трудно.

• Однако он является необходимым условием успеха в разработке программ.

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

Спасибо!

Ваши вопросы?

Андрей Свердлов