我该如何重构此代码以减少CC
本文关键字:代码 CC 重构 何重构 | 更新日期: 2023-09-27 18:26:32
我只是想知道,由于这段代码的代码复杂度为16,如果我想在CC上达到完美的9/10,最好的方法是什么?我知道这不会杀死我,但我很想知道其他人是否会以不同的方式编写代码
class SentMessages
{
public SentMessages() { }
public SentMessages(int id, string userName, string message, string messageType, DateTime createdAt)
{
this.Id = id;
this.UserName = userName;
this.Message = message;
this.CreatedAt = createdAt;
this.MessageType = messageType;
}
public string UserName { get; set; }
public int Id { get; set; }
public string Message { get; set; }
public string MessageType { get; set; }
public DateTime CreatedAt { get; set; }
public List<SentMessages> GetMessages()
{
if (AllMessages.Count == 0) AllMessages = SentMessages.InitializeMessages();
return AllMessages;
}
public List<SentMessages> AllMessages = new List<SentMessages>();
static private List<SentMessages> InitializeMessages()
{
List<SentMessages> messages = new List<SentMessages>();
return messages;
}
public void ClearMessages()
{
AllMessages.Clear();
}
}
我从中获得了此代码的概念http://objectlistview.sourceforge.net/cs和一个stackoverlfow答案
我认为你应该考虑原理
关注的分离
只是一些想法:
- 创建一个工厂类来实例化一个新集合
- 创建一个
Message
'类作为数据持有者,以保留Id
、Username
属性 - 创建一个实现类似
IList<SentMessage>
的自定义SentMessages
类
哦,GetMessages
毫无意义。当列表为空时会调用它。但是,它将创建一个新的空列表。
public class SentMessage : Message, IMessage
{
public SentMessage(int id, string userName, string message, string messageType, DateTime createdAt)
{
Id = id;
UserName = userName;
Message = message;
CreatedAt = createdAt;
MessageType = messageType;
}
public string UserName { get; private set; }
public int Id { get; private set; }
public string Message { get; private set; }
public string MessageType { get; private set; }
public DateTime CreatedAt { get; private set; }
}
public class MessageCollection<T> where T : IMessage
{
private List<T> _messages;
public MessageCollection()
{
_messages = new List<T>();
}
public IEnumerable<T> GetMessages()
{
return _messages;
}
public void AddMessage(T message)
{
_messages.Add(message);
}
public void ClearMessages()
{
_messages.Clear();
}
}