Переменные и типы
- Свойства необходимо использовать только тогда, когда это имеет смысл. Если при получении и сохранении значений никакая дополнительная логика не участвует – вместо свойства необходимо использовать поле (исключение – когда класс bind’ится на asp.net страницах, т.к. стандартный механизм bind’а имеет доступ только к public свойствам);
- Необходимо использовать максимально простые типы данных. Так, например, необходимо использовать int, а не long, если известно, что для хранимых значений будет достаточно типа int;
- Константы необходимо использовать только для простых типов данных;
- Для сложных типов вместо констант необходимо использовать readonly поля;
- Boxing и unboxing value типов необходимо использовать только когда это действительно необходимо;
- При задании значений нецелых типов, значения должны содержать как минимум одну цифру до точки и одну после;
- Необходимо использовать именования типов C#, а не.NET common type system (CTS).
Пример: int userID = -1;, а не Int32 userID=-1;
- Модификаторы доступа необходимо указывать всегда. Не смотря на то, что по умолчанию назначается модификатор доступа private, поле модификатора не остается пустым – модификатор private необходимо указывать явным образом.
Пример: private User CreateUser(string firstName, string lastName);
- Модификаторы доступа (private, protected, internal и public) необходимо указывать в зависимости от того, где требуется доступность соответствующего поля, свойства, функции, класса или конструктора. Модификатор public необходимо указывать только тогда, когда необходим доступ к полю из других проектов, internal – когда необходим доступ из других классов внутри одного проекта, protected – для предоставления доступа классам – потомкам, во всех остальных случаях используется private, т.е. доступ ограничивается самим классом;
- Поля и переменные инициализируются при их объявлении, когда это возможно.
Пример: private int userID = -1;
private string firstName = “”;
private string lastName = “”;
- Когда для создания класса необходимо передать параметры, используемые при его инициализации, на конструктор по умолчанию (MyClass() { }) необходимо накладывать модификатор доступа private, чтобы избежать создания клиентами неинициализированного объекта.
Пример:
private User()
{ }
public User(int userID)
{ }
- Вместо использования “magic numbers” для идентификаторов статусов, состояний и т.п. необходимо указывать константы или enum’ы. Идентификаторы состояний в виде чисел использовать нельзя.
Пример не правильного использования: public GetUserByStatus( int statusID);
Пример правильного использования: public GetUserByStatus( UserStatus userStatus);
- Тип object необходимо использовать только когда это действительно необходимо, в большинстве случаев вместо него используются generic’и. Вместо Hashtable необходимо использовать Dictionary<>, вместо ArrayList используется List<>;
- В том случае если в get ’е или set ’е какого-либо свойства выполняются сложные вычисления, если операция, выполняемая в get или set является преобразованием, имеет побочный эффект или долго выполняется – свойство должно быть заменено функциями;
- Свойство не должно менять своего значения от вызова к вызову, если состояние объекта не изменяется. Если результат при новом вызове может быть другим при том же состоянии объекта, вместо свойства необходимо использовать функции;
- Внутри get ’а и set ’а не должно быть обращений к коду, не связанному напрямую с получением или сохранением значения свойства, т.к. такие действия могут быть не очевидны для клиентов, использующих свойство;
- Все настройки, влияющие на работу приложения, нельзя указывать жестко в коде, а необходимо выносить в config. Если есть возможность прописать значение по умолчанию – они должны быть прописаны, если значение по умолчанию не может быть задано и соответствующий ключ не прописан в конфиге – необходимо создавать исключение.
Функции
- Функции, возвращающие массив, всегда должны возвращать массив. Если нет данных – функции возвращают пустой массив, но не null. Это же касается коллекций;
- В функциях никогда нельзя использовать больше 7-ми параметров. Если параметров больше – они объединяются в класс.
Дата добавления: 2015-11-14; просмотров: 33 | Нарушение авторских прав
mybiblioteka.su - 2015-2024 год. (0.006 сек.)