Почему индекс обслуживания в таком C # ctor так низок? - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть простой C # ctor, который инициализирует некоторые переменные:

public RSSSourceData()
{
    RSSVersion = "";
    ChannelTitle = "";
    ChannelLink = "";
    ChannelDescription = "";
    Category = "";
    Copyright = "";
    Language = "";
    PubDate = "";
    ManagingEditor = "";
    FileToProcess = "";
    OnlineSource = "";
}

Все переменные string переменные.

Когда я запустил метрику кода для всего проекта,для этого ctor я получаю индекс ремонтопригодности, равный 57. Я ожидал, что он будет намного выше, потому что нет ничего настолько сложного, что требовало бы слишком много работы по обслуживанию для приписывания значений переменным.

Что я делаю здесь неправильно?

Позднее редактирование: объявление полей класса:

   class RSSSourceData
    {
        public string RSSVersion;
        public string ChannelTitle;
        public string ChannelLink;
        public string ChannelDescription; 
        public string Category; 
        public string Copyright;
        public string Language; 
        public string PubDate; 
        public string ManagingEditor; 
        public List<string> NewsTitle = new List<string>(); 
        public List<string> NewsLink = new List<string>(); 
        public List<string> NewsDescription = new List<string>();     
        private string OnlineSource; 
        private string FileToProcess; 
        private List<string> FileContent = new List<string>(); 

(... сюда приходят методы)

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Быстрый ответ заключается в том, что на него влияют строки кода.

Длинный ответ таков: поддерживать его действительно сложно.

  1. Почему этот класс / ctor должен поддерживать столько состояний одновременно?
  2. Зависит ли какое-либо свойство / поле от предыдущей инициализации свойства / поля?
  3. Когда этостановится длиннее, как вы можете убедиться в отсутствии пропущенного свойства / поля или дублирующейся инициализации?
  4. Этот класс по-прежнему соответствует высокой сплоченности?
  5. Если это класс контракта данных, может ли он генерироваться автоматически?
0 голосов
/ 30 декабря 2018

Поля были инициализированы с константами.В вашем примере они пусты.В общем случае они будут иметь некоторые значения.

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

Вот почему ремонтопригодность высока.

...