Соглашение о кодировании

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

Принципы разработки программного обеспечения

  • Читабельность кода — должно быть понятно Вам и Вашим товарищам. Сейчас и через несколько лет.
  • Отсутствие дублирования. Дублирование возможно только там, где его удаление слишком затратно или сильно противоречит первому принципу.
  • Модульность. Каждая функциональность отдельный блок, функция, класс, файл, проект. Часть выделенная из остального кода по смыслу — области ответственности.
  • Решение должно быть слабосвязанным — должна быть возможность заменить один модуль другим, легко представить архитектуру решения в виде иерархии (дерева).
  • Отделение данных от кода обрабатывающего эти данные (выделение конфигурации).

Методы

1) Ясное четкое именование переменных, классов, функций. Изменилось понятие предметной области — переименовываем.

2) Модульность. Принцип единственности ответственности (SOLID).

3) Один оператор — одна строка. Linq выражения разбиваем по точке. Одно условие — одна строка, оператор перед условием.

4) Избегаем ToArray/ToList. Запросы допускающие выполнения на стороне СУБД выполнять на стороне СУБД.

5) if, for всегда со скобками:

6) Разделяем разнородные по смыслу блоки пустой строкой:

7) Длинный список аргументов функций переносим на новую строку:

8) Выносить «волшебные» константы в enum

9) Следить за безопасностью и оптимальностью кода. Рассматривать случаи расширения функционала

10) Избегать дублирования кода (пример: вынос методов расширения)

11) Именование сущностей в единственном числе в БД, EntityFramework.

12) Именование столбцов в БД, EntityFramework:
— primary_key — id (int или guid)
— Составные ключи использовать запрещено
— foreign_key — с маленькой буквы и с подчеркиванием (пример: contact_id)
— Поля и связанные сущности с большой буквы

13) Придерживаться naming conventions (соглашение об именовании) тех языков, на которых пишете (например, в C# именование методов, свойств и типов производится с большой буквы, с использованием CamelCase, а в JavaScript функции именуются с маленькой и т.д.), если отдельные моменты не оговорены выше.

14) Следите за оптимальностью и опрятностью вашего решения: убираем дублирование, а стили, JavaScript и т.д. выносим в отдельные файлы.

15) Ключ бандла должен иметь тот же уровень вложенности, что и скрипты.

16) Критерии вынесения скриптов:
— Скрипт используется где-то еще
— Скрипт содержит 200 и более строк кода
— Для скриптов, которые можно загружать «лениво», использовать includeOnce (встроена в проект)

17) Для каждого класса создавать отдельный файл.

18) В каждый метод, возвращающий результат клиенту, необходимо добавлять обработку исключений. Так же стоит добавлять обработку исключений в потенциально опасные места. Обязательно логгировать исключения, с записью контекста так, чтобы можно было повторить исключение. Пользователю выводить краткое уведомление с извинениями.

 

19) Все сообщения, выводимые пользователю, сообщения об исключениях должны быть информативны (за исключением сообщений пользователю о непредвиденных исключениях).
— Сообщение об исключительной ситуации должно содержать сообщение с контекстом, внутреннее исключение и трассировку стека:

— Сообщение пользователю о непредвиденной ситуации:

— Валидационное сообщение должно содержать пример и направлять на то, что необходимо изменить:

20) Предпочтительнее условия в утвердительной форме

 

4 Comments

  1. Вадим

    Именование сущностей в единственном числе в БД — что есть сущность в БД? таблица «Контрагенты» сущность?

    • admin

      Таблицы в БД. При получении ORM объектная модель сама склоняет окончания во множественном и единственном числе.

    • admin

      Благодарю Алексей за вопрос. Не верная формулировка. Имеется в виду составные ключи использовать запрещено. Поскольку они усложняют манипулирование таблицей, а в MS SQL при вставке полного дубликата строки для удаления этой строки необходимо полностью очищать таблицу. Во избежании данных ситуаций приняли правила:

      — любая таблица должна иметь уникальный атомарный ключ. Целочисленный или guid;
      — для создания уникальных пар ключей — применяется уникальный индекс.

      При наличии атомарного ключа на него проще сослаться. Есть возможность производить удаление\обновление по нему.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *