Найти в Дзене
TechLead Insights

Clean Code: Чистый Код, Чистые Имена: Практическое руководство по именованию (Часть 1)

Чистый код — это важная концепция в разработке программного обеспечения, которая акцентирует внимание на создании читаемого и поддерживаемого кода. В этой статье мы рассмотрим, что такое чистый код, его принципы и как применять их на практике в ASP.NET Core. Концепция чистого кода, популяризованная Робертом Сесилом Мартином (Uncle Bob), охватывает не только код, но и документы, правила и процедуры, которые должны быть понятны разработчикам. Главная цель чистого кода — обеспечить ясность и выразительность, что делает его доступным для понимания не только автором, но и другими членами команды. Мы обсудим пять ключевых тем, которые помогут улучшить качество кода и его поддержку, предоставив практические примеры на C#. Хорошие имена играют ключевую роль в создании понятного и поддерживаемого кода. Имена должны быть ясными, описательными и отражать суть того, что они представляют. Они помогают разработчикам легко понимать код и уменьшать количество комментариев, необходимых для объяснения е
Оглавление

Чистый код — это важная концепция в разработке программного обеспечения, которая акцентирует внимание на создании читаемого и поддерживаемого кода. В этой статье мы рассмотрим, что такое чистый код, его принципы и как применять их на практике в ASP.NET Core.

Концепция чистого кода, популяризованная Робертом Сесилом Мартином (Uncle Bob), охватывает не только код, но и документы, правила и процедуры, которые должны быть понятны разработчикам. Главная цель чистого кода — обеспечить ясность и выразительность, что делает его доступным для понимания не только автором, но и другими членами команды.

Мы обсудим пять ключевых тем, которые помогут улучшить качество кода и его поддержку, предоставив практические примеры на C#.

1. Написание "хороших" имен

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

Принципы написания хороших имен:

- Ясность и точность: Имя должно четко отражать назначение и функциональность элемента. Избегайте использования аббревиатур и общих терминов, которые могут быть непонятны другим разработчикам.

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

- Согласованность: Следуйте общепринятым конвенциям и стилевым гайдлайнам вашего проекта или языка программирования.

2.Общие ошибки при написании имен:

1. Откажитесь от аббревиатур и сокращений, которые неочевидны:

public class Pmt
{
public decimal
amt;
public DateTime
dt;
public string
pmtType;
}
Проблемы: Аббревиатуры и сокращения делают код менее читаемым. Pmt, amt, и dt неясны без дополнительного контекста.

2. Слишком общие имена:

public class Data
{
public string
value;
}
Проблемы: Имя класса Data и свойства value слишком общее и не описывает, что именно содержит value.

3. Использование однобуквенных имен:

public class Report
{
public string
r;
public int
i;
public DateTime
d;

public void GenerateReport()
{
// Логика генерации отчета
}
}

Проблемы: Имена r, i, и d не дают никакой информации о том, что они представляют. Такой подход делает код трудным для понимания.

4. Имена, содержащие хардкоды или несуразные сокращения:

public class UserSettings
{
public string
usrPref1;
public bool
uIsActive;

public void ApplySettings()
{
// Применение настроек
}
}
Проблемы: Имена usrPref1 и uIsActive не ясны и не описывают, что именно они означают. Они также содержат неинтуитивные сокращения.

5. Использование имен, не соответствующих роли или назначению:

public class DatabaseHelper
{
public void
DoWork()
{
// Логика работы
}
}
Проблемы: Метод DoWork не отражает его назначения или функциональности. Имя класса DatabaseHelper также не уточняет, какую работу он выполняет.

6. Имена, противоречащие соглашениям о стиле кода:

public class UserProfile
{
public string
user_name;
public int
age_in_years;

public void
updateProfile()
{
// Обновление профиля
}
}
Проблемы: Имена переменных user_name и age_in_years используют подчеркивания, что не соответствует общепринятым соглашениям о стиле в C#. Метод updateProfile также не соответствует соглашениям о именовании методов.

7. Имена, которые вводят в заблуждение:

public class Order
{
public bool IsComplete { get; set; }
public int
OrderStatus { get; set; }

public void
MarkAsCompleted()
{
// Логика завершения заказа
}
}
Проблемы: Свойство OrderStatus не ясно отражает свое назначение, так как оно может содержать значения, отличные от состояния завершения. Метод MarkAsCompleted вызывает сомнения, так как он не обновляет OrderStatus, что может вводить в заблуждение.

8. Имена, не отражающие типа данных:

public class UserData
{
public List<int>
userList;
public Dictionary<string, string>
userDict;

public void LoadData()
{
// Загрузка данных
}
}
Проблемы: Имена userList и userDict не описывают тип данных или их предназначение. Использование более конкретных имен, таких как userIds для списка идентификаторов пользователей и userRoles для словаря ролей, сделает код более понятным.

9. Отсутствие различий между методами и свойствами:

public class Configuration
{
public string
GetSettings()
{
// Получение настроек
return "Settings";
}

public string
Settings { get; set; }
}
Проблемы: Метод GetSettings и свойство Settings имеют похожие имена, что может ввести в заблуждение. Метод должен иметь более специфическое имя, например, LoadSettings, чтобы четко отличаться от свойства.

10. Имена, не отражающие контекста или использования

public class Purchase
{
public string
amount;
public DateTime
purchaseDate;
public string
vendor;

public void ProcessOrder()
{
// Обработка заказа
}
}
Проблемы: Имена amount, purchaseDate, и vendor могут быть недостаточно информативными без контекста. Например, amount может относиться к различным значениям. Более конкретные имена, такие как totalAmount и vendorName, улучшат понимание.

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

Clean Code: Искусство создания чистых методов (Часть 2)