• 关于配置文件权衡,.config VS .xml


    众所周知,程序的灵活性有一部分就是“配”出来了。

    当然,config文件从来就没有让.NET的同学轻松过,至少,我觉得很麻烦。

    1.config

    .NET的配置文件方便,其实最方便的是appSettings

    <appSettings>
        <add key="apiKey" value = "8asdf9as9d2asd" />
    </appSettings>

    而自定义配置比较繁琐,要熟悉.NET的配置文件体系,才能了然于胸。

    当然,奉献精神的人们提供了一个DSL杰作——ConfigurationSectionDesigner

    从某种程度上来说,我对.NET的自定义配置是矛盾的:

    我喜欢它,因为严格,不可修改;

    我不喜欢它,往往修改设计的时候,就比较麻烦,要该好多引用。

    2.XML

    XML很灵活,但我又惧怕其复杂的API,截止到使用Linq To Xml之前,我都一直抱着这种态度。

    甚至多次想写一个XMLHelper,结果每次看到一堆的定义和API,就傻了。

    这里,是Linq To Xml让我改变了对XML的态度。

    主要API:

    1)加载一个文档;

    XDocument  doc = XDocument .Load(path);
    或
    XElement  doc = XElement .Load(path);

    区别就是,XElement加载之后,当做一个元素;而XDocument(当做一个文档)有一个典型的属性——Root。

    2)查找元素;

    提供了良好的树形API,给人很清晰的感觉。

    doc.Elements("yourName") ;    //查找元素集合
    doc.Element("yourName") ;    //查找单个元素
    
    doc.Descendants("yourName");   //查找子孙元素

    当然,后面加上Linq的扩展,Where,Select等Lambda方式,是很自然的事情。

    3)修改元素,增加元素,删除元素;

    SetValue,Add,AddAfterSelf,AddBeforeSelf

    RemoveAll

    XElement root = new XElement("Categories",
            new XElement("Category",
                new XAttribute("CategoryID", "1"),
                new XElement("CategoryName", "Beverages"),
                new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
            )
        );
        root.Element("Category").Add(new XAttribute("AddDate", DateTime.Now.ToShortDateString()));
        root.Save(path);

    xml文件的读写是如此地方便。

    3.选择

    总体上来说,XML比config文件更加灵活。

    在config应对各种复杂配置无力(修改代码很无奈)时,我倾向于使用XML进行配置;

    在配置很固定时,很简单时,我很倾向使用config进行配置。

    使用XML文件时,有个VS小提示——选中XML文件,右键,属性,输出目录,选择“始终复制”。

  • 相关阅读:
    python常用模块: random模块, time模块, sys模块, os模块, 序列化模块
    (python)getattr等用法
    (Pytorch)涉及的常见操作
    对PatchGAN的感知域(receptive_field)理解
    心得
    dilated conv、deconv、fractional-strided conv
    (PatchGANs)Pecomputed Real-time Texture Synthesis With Markovian Generative Adversarial Networks
    (Pixel2PixelGANs)Image-to-Image translation with conditional adversarial networks
    CGANs
    Tensorflow--Debug
  • 原文地址:https://www.cnblogs.com/pengzhen/p/4000980.html
Copyright © 2020-2023  润新知