cтиль программирования
DESCRIPTION
Стиль программирования, Андрей Свердлов, Клуб MAInfo.ruTRANSCRIPT
Стиль программирования
Андрей Свердлов
Введение
Или как мы учились писать код вместе
Определение
Стиль программирования – это внутренне согласованная совокупность базовых конструкций программ и способов их композиции, обладающая общими
фундаментальными особенностями, как логическими, так и алгоритмическими. Стиль
включает также совокупность базовых концепций, связанных с этими программами.
Н. Непейвода
Зачем нужен СП
• унификация и упрощение кода:– ускорение разработки (до 30% экономии времени)
за счет одинакового понимая кода всеми разработчиками;
– облегчение поиска ошибок;– упрощение рефакторинга;– облегчение сопровождения кода;
• обеспечение минимального уровня качества кода (структурированность, читаемость, документированность).
Какой СП – хороший
• стиль – это стандарт!
• прозрачный;
• защищенный;
• легкий;
• разборчивый;
• однозначный.
Именование переменных:
• Венгерская нотация (C++):
int iCounter;
LPTSTR lpszBuffer;
class CMyCPPClass;
struct TMyCPPStruct;
• Венгерская нотация (C#):
private int iCounter;
public long lSomethingVeryLong
public List<MyClass> aoMyList;
class CMyCSClass;
Именование переменных:
• Нотация роботов (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;
Комментарии
• В достаточном количестве
• Информативные
• Для четкого круга читателей (не для вообще всех)
Комментарии:нотация роботов (C#)
private double _dist = 0;// расстояние до препятствия в метрах
/// <summary>
/// Функция изменят логическую роль робота с преследователя на убегающего и наоборот
/// </summary>
/// <param name="serviceRequest">вызывается ли функция после запроса к сервису</param>
public void ChangeRole (bool serviceRequest)
/// <summary>
/// Класс логической роли робота.
/// Содержит все атрибуты робота.
/// </summary>
public class LogicalRole
Комментарии:«профит-стиль» (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
Код
• есть правила выделения участков кода в объекты, функции, процедуры;
• участки кода четко разделены между собой;• переменные и константы объявляются так,
чтобы их область видимости совпадала с временем жизни;
• регламентированы стандартные и общеупотребимые конструкции;
• описываемый стилем код является защищенным.
Код:нотация роботов (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);
Код:«профит-стиль» (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);
}
Как внедрить свой СП
• поощрение (прямое предписание) использования некоторых базовых концепций программирования;
• запрещение (ограничение) использования некоторых других базовых концепций; иногда оно может быть неявным – через исключение нежелательных концепций из используемого языка или диалекта;
• требования и рекомендации по оформлению и документированию программ;
• совокупность инструментальных и организационных средств, поддерживающих вышеперечисленные требования и рекомендации.
Заключение
• Стиль – это целостная непротиворечивая система, основанная на используемой парадигме и учитывающая много тонкостей.
• Хороший стиль разработать трудно.
• Однако он является необходимым условием успеха в разработке программ.
Спасибо!
Ваши вопросы?
Андрей Свердлов