PDA

Просмотр полной версии : [Вопрос] Оптимизация или упрощение кода.



BadPawn
21.01.2017, 13:41
Всем привет, уважаемые скриптеры. Посодействуйте пожалуйста довести код до ума, а так же и оптимизировать.

Есть некоторые участки кода, которые не нравятся, ибо уверен можно сделать лучше, но к сожалению не позволяют знания. Чистым примером служит вывод даты рождения пациента, если метод dateTimePicker_DR.Value.Day хранит в себе 1 (т.е. первый день начала месяца), в xml выгружается в формате: 1997-5-1.

Буду очень благодарен и сразу извиняюсь за столь большой код.


using System;
using System.Windows.Forms;
using System.Xml;

namespace Patients {
public partial class Form_Attached : Form {
public Form_Attached() {
InitializeComponent();
}

string FAM = "",
IM = "",
OT = "",
DR = "",
ENP = "",
KSPEC = "";

int W = 0,
NUCH = 0,
PRATT = 0,
MAX_NOMZ = 0;

private void Form_Attached_Load(object sender, EventArgs e) {
dateTimePicker_DR.Value = DateTime.Now;
}

private void label_OT_Click(object sender, EventArgs e) {

}

private void button_cancel_Click(object sender, EventArgs e) {
this.Close();
}

private void button_result_Click(object sender, EventArgs e) {
if(
textBox_FAM.Text == "" ||
textBox_IM.Text == "" ||
textBox_OT.Text == "" ||
comboBox_W.SelectedIndex == -1 ||
textBox_ENP.Text == "" ||
comboBox_KSPEC.SelectedIndex == -1 ||
comboBox_NUCH.SelectedIndex == -1 ||
comboBox_PRATT.SelectedIndex == -1) {
label_error.Text = "Проверить достоверность данных!\nВнимание! Обязательное заполнение всех полей!";
label_error.ForeColor = System.Drawing.Color.Red;
}
else {
string XmlFileName = @"Xml Library\\Attached.xml";
XmlDocument xmlDcmnt = new XmlDocument();
xmlDcmnt.Load(XmlFileName);
XmlElement xRoot = xmlDcmnt.DocumentElement;

foreach (XmlNode xnode in xRoot) {
foreach (XmlNode childnode in xnode.ChildNodes) {
if (childnode.Name == "NOMZ") {
Int32.TryParse(childnode.InnerText, out MAX_NOMZ);
}
}
}
MAX_NOMZ++;

XmlNode element = xmlDcmnt.CreateElement("ZAP");
xmlDcmnt.DocumentElement.AppendChild(element);

XmlNode subElement_NOMZ = xmlDcmnt.CreateElement("NOMZ");
subElement_NOMZ.InnerText = MAX_NOMZ.ToString();
element.AppendChild(subElement_NOMZ);

XmlNode subElement_FAM = xmlDcmnt.CreateElement("FAM");
subElement_FAM.InnerText = FAM;
element.AppendChild(subElement_FAM);

XmlNode subElement_IM = xmlDcmnt.CreateElement("IM");
subElement_IM.InnerText = IM;
element.AppendChild(subElement_IM);

XmlNode subElement_OT = xmlDcmnt.CreateElement("OT");
subElement_OT.InnerText = OT;
element.AppendChild(subElement_OT);

XmlNode subElement_W = xmlDcmnt.CreateElement("W");
subElement_W.InnerText = W.ToString();
element.AppendChild(subElement_W);

XmlNode subElement_DR = xmlDcmnt.CreateElement("DR");
subElement_DR.InnerText = DR;
element.AppendChild(subElement_DR);

XmlNode subElement_ENP = xmlDcmnt.CreateElement("ENP");
subElement_ENP.InnerText = ENP;
element.AppendChild(subElement_ENP);

XmlNode subElement_DBEG = xmlDcmnt.CreateElement("DBEG");
subElement_DBEG.InnerText = DateTime.Now.ToString("yyyy-MM-dd");
element.AppendChild(subElement_DBEG);

XmlNode subElement_SATT = xmlDcmnt.CreateElement("SATT");
subElement_SATT.InnerText = "2";
element.AppendChild(subElement_SATT);

XmlNode subElement_KSPEC = xmlDcmnt.CreateElement("KSPEC");
subElement_KSPEC.InnerText = KSPEC;
element.AppendChild(subElement_KSPEC);

XmlNode subElement_NUCH = xmlDcmnt.CreateElement("NUCH");
subElement_NUCH.InnerText = NUCH.ToString();
element.AppendChild(subElement_NUCH);

XmlNode subElement_PRATT = xmlDcmnt.CreateElement("PRATT");
subElement_PRATT.InnerText = PRATT.ToString();
element.AppendChild(subElement_PRATT);

// Сохраняем наш документ.
xmlDcmnt.Save(XmlFileName);

// Очищаем поля.
textBox_FAM.Text = "";
textBox_IM.Text = "";
textBox_OT.Text = "";
comboBox_W.SelectedIndex = -1;
dateTimePicker_DR.Value = DateTime.Now;
textBox_ENP.Text = "";
comboBox_KSPEC.SelectedIndex = -1;
comboBox_NUCH.SelectedIndex = -1;
comboBox_PRATT.SelectedIndex = -1;

if (MessageBox.Show("Продолжить работу с формой?", "Patients - Прикрепление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) {
this.Close();
}
}
}

private void textBox_FAM_TextChanged(object sender, EventArgs e) {
FAM = textBox_FAM.Text;
}
private void textBox_IM_TextChanged(object sender, EventArgs e) {
IM = textBox_IM.Text;
}
private void textBox_OT_TextChanged(object sender, EventArgs e) {
OT = textBox_OT.Text;
}
private void textBox_ENP_TextChanged(object sender, EventArgs e) {
ENP = textBox_ENP.Text;
}

private void comboBox_W_SelectedIndexChanged(object sender, EventArgs e) {
switch (comboBox_W.SelectedIndex) {
case 0:
W = 1;
break;
case 1:
W = 2;
break;
}
}
private void comboBox_KSPEC_SelectedIndexChanged(object sender, EventArgs e) {
string[,] array_of_names_doc = new string[8, 2] {
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" },
{ "Секретно",
"00000000000" }
};

switch (comboBox_KSPEC.SelectedIndex) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
KSPEC = array_of_names_doc[comboBox_KSPEC.SelectedIndex, 1];
break;
}
}
private void comboBox_NUCH_SelectedIndexChanged(object sender, EventArgs e) {
switch (comboBox_NUCH.SelectedIndex) {
case 0:
NUCH = 001;
break;
case 1:
NUCH = 003;
break;
case 2:
NUCH = 005;
break;
case 3:
NUCH = 006;
break;
case 4:
NUCH = 007;
break;
case 5:
NUCH = 008;
break;
case 6:
NUCH = 009;
break;
case 7:
NUCH = 010;
break;
}
}
private void comboBox_PRATT_SelectedIndexChanged(object sender, EventArgs e) {
switch(comboBox_PRATT.Text) {
case "Первоначальный выбор":
PRATT = 1;
break;
case "Замена МО":
PRATT = 2;
break;
case "Смена места жительства":
PRATT = 3;
break;
}
}

private void dateTimePicker1_DR_ValueChanged(object sender, EventArgs e) {
string month_dr = "",
day_dr = "";

switch(dateTimePicker_DR.Value.Month) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9: {
month_dr = "0" + dateTimePicker_DR.Value.Month;
break;
}
case 10:
case 11:
case 12: {
month_dr = "" + dateTimePicker_DR.Value.Month;
break;
}
}

switch (dateTimePicker_DR.Value.Day) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9: {
day_dr = "0" + dateTimePicker_DR.Value.Day;
break;
}
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31: {
day_dr = "" + dateTimePicker_DR.Value.Day;
break;
}
}
DR = dateTimePicker_DR.Value.Year + "-" + month_dr + "-" + day_dr;
}
}
}

Seviel
21.01.2017, 16:20
Не обязательно писать пустые case