我自己的自定义类中的扩展

时间:2016-03-28 13:58:03

标签: swift

我正在阅读另一个SO问题,Swift do-try-catch syntax。在他的回答中, rickster 为OP的自定义类创建了一个扩展。 Konrad77 评论说它是保持代码清洁的绝佳方式。"我尊重他们的知识,这让我相信我在自己的代码中错过了一点。

是否还有其他好处(除了清洁度)或为我创建的课程创建扩展的原因?我可以直接将相同的功能放入类中。如果我是唯一一个使用该课程的人,或者其他人将访问该课程,答案是否会改变?

1 个答案:

答案 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声明中吗?当然,当你有超过一两个属性时,它开始变得混乱而且难以阅读。如果代码不干净且易读,那么创建错误会更容易。使用扩展是避免复杂性带来的困难的好方法。