我正在阅读另一个SO问题,Swift do-try-catch syntax。在他的回答中, rickster 为OP的自定义类创建了一个扩展。 Konrad77 评论说它是保持代码清洁的绝佳方式。"我尊重他们的知识,这让我相信我在自己的代码中错过了一点。
是否还有其他好处(除了清洁度)或为我创建的课程创建扩展的原因?我可以直接将相同的功能放入类中。如果我是唯一一个使用该课程的人,或者其他人将访问该课程,答案是否会改变?
答案 0 :(得分:7)
对于从头创建的类,扩展是一种强大的文档结构。您将类的核心放在初始定义中,然后添加扩展以提供其他功能。例如,添加对协议的遵守。它为包含的代码提供了位置:
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using Windows.Storage;
namespace Password.Data
{
class DataContainer
{
SortedDictionary<int, PasswordBox> Data { get; set; }
public int Key { get; set; }
public void Save(DataContainer a, string filename)
{
XmlSerializer ser = new XmlSerializer(typeof(DataContainer));
using (Stream s = File.OpenWrite(filename))
{
ser.Serialize(s, a);
}
}
}
}
我可以将protocol和computed属性放在struct声明中吗?当然,当你有超过一两个属性时,它开始变得混乱而且难以阅读。如果代码不干净且易读,那么创建错误会更容易。使用扩展是避免复杂性带来的困难的好方法。