简体   繁体   English

如何改善此代码的性能和设计

[英]How can I improve the performance and design of this code

Down below is my code I'm currently using, but is there a way to make it cleaner and shorter? 下面是我当前正在使用的代码,但是有没有办法使它更简洁,更短? I want my code to look short efficient and nice looking. 我希望我的代码看起来效率低下,外观漂亮。 My teacher said something with "do it with a loop" but I can't figure out what that loop does and how it would work. 我的老师说了一些“用一个循环来做”,但是我不知道该循环能做什么以及它如何工作。

        {
            XmlWriter xmlWriter = XmlWriter.Create(PATH);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Config");

            xmlWriter.WriteStartElement("TBSOMS");
            xmlWriter.WriteString(TBSOMS.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBWVB");
            xmlWriter.WriteString(TBWVB.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBWNB");
            xmlWriter.WriteString(TBWNB.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBASPMM1");
            xmlWriter.WriteString(TBASPMM1.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBASPMM2");
            xmlWriter.WriteString(TBASPMM2.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBDUM");
            xmlWriter.WriteString(TBDUM.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBADPR");
            xmlWriter.WriteString(TBADPR.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("TBAR");
            xmlWriter.WriteString(TBAR.Text);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndDocument();

            xmlWriter.Close();
        }



I'd start with something like this... 我将从这样的东西开始...

var values = new Dictionary<string, string>
{
    { nameof(TBWVB), TBWVB.Text },
    { nameof(TBWNB), TBWNB.Text }
    //        .... etc ......
}

XmlWriter xmlWriter = XmlWriter.Create(PATH);

xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Config");

foreach (var item in values.Keys)
{
    xmlWriter.WriteStartElement(item);
    xmlWriter.WriteString(values[item]);
    xmlWriter.WriteEndElement();
}

Something in the like of : 之类的东西:

private void writeElement(XmlWriter xmlwrtr, String element, var obj){
        xmlwrtr.WriteStartElement(element);
        xmlwrtr.WriteString(obj.Text);
        xmlwrtr.WriteEndElement();
}

Which would give : 这将给:

 {
        XmlWriter xmlWriter = XmlWriter.Create(PATH);
        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("Config");

        writeElement(xmlWriter, "TBSOMS", TBSOMS)
        writeElement(xmlWriter, "TBWVB", TBWVB)
        // And so on

        xmlWriter.WriteEndDocument();

        xmlWriter.Close()
}

By creating a class variable you can access it's values in multiple methods. 通过创建类变量,您可以通过多种方法访问其值。

private static XmlWriter xmlWriter;
public void Write()
{
    xmlWriter = XmlWriter.Create(Path);
    xmlWriter.WriteStartDocument();
    xmlWriter.WriteStartElement("Config");

    new List<(elementDataType element, string name)> // note that you need to change "elementDataType" to your elements data type
    {
        (TBSOMS, nameof(TBSOMS)),
        (TBWVB, nameof(TBWVB)),
        // ... just list all elements in here
    }.ForEach(elem => WriteElement(elem.element, elem.name));


    xmlWriter.WriteEndDocument();
    xmlWriter.Close();
}

private void WriteElement(var element, string name) //note that you need to change var to your elements datatype
{
    xmlWriter.WriteStartElement(name);
    xmlWriter.WriteString(element.Text);
    xmlWriter.WriteEndElement();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM