powiadają że początkującego programistę poznaje się po stosowaniu przez niego dużej ilości if-ów
czy poniższy kod da się jakość przekształcić/zoptymalizować?
i czy w ogóle ten kod jest poprawnie napisany? co prawda działa ale nie podoba mi się :-?
kod ma za zadanie porównać zawartości kilku dt i uzupełnić DGV
public int AktualizujStan()
{
int dtObecniRowCount = 0;
dtObecniRowCount = dtObecni.Rows.Count;
dtPaneleRCPRowCount = dtPaneleRCP.Rows.Count;
int dtAlarmyRowCount = dtAlarmy.Rows.Count;
if (dtAlarmyRowCount > 0 && dtAlarmy.Rows[0]["STAMP"].ToString() != StampPoprzedniegoAlarmu )
{
for (int j = 0; j < dtPaneleRCPRowCount; j++)
{
if (dtAlarmy.Rows[0]["KONTROLER"].ToString() == dtPaneleRCP.Rows[j]["NAZWA"].ToString())
{
if (dGVGateState.Rows[j].Cells["STAN"].Value.ToString() == "OTWARTY")
{ }
else
{
dtPaneleRCP.Rows[j]["PRACOWNIK"] = "";
dtPaneleRCP.Rows[j]["DATA"] = dtAlarmy.Rows[0]["DATA"];
dtPaneleRCP.Rows[j]["GODZINA"] = dtAlarmy.Rows[0]["GODZINA"];
dGVGateState.Rows[j].DefaultCellStyle.BackColor = Color.Red;
dGVGateState.Rows[j].Cells["STAN"].Value = dtAlarmy.Rows[0]["Event"];
MediaFile.PlayLooping();
}
}
}
StampPoprzedniegoAlarmu =dtAlarmy.Rows[0]["STAMP"].ToString();
}
else
{
if (dtObecniRowCount > 0)
{
for (int i = 0; i < dtObecniRowCount; i++)
{
for (int j = 0; j < dtPaneleRCPRowCount; j++)
{
if (dtObecni.Rows[i]["KONTROLER"].ToString() == dtPaneleRCP.Rows[j]["NAZWA"].ToString())
{
if (dGVGateState.Rows[j].Cells["STAN"].Value.ToString() == "Alarm - Wlamanie")
{ }
else
{
dtPaneleRCP.Rows[j]["PRACOWNIK"] = dtObecni.Rows[i]["PRACOWNIK"];
dtPaneleRCP.Rows[j]["DATA"] = dtObecni.Rows[i]["DATA"];
dtPaneleRCP.Rows[j]["GODZINA"] = dtObecni.Rows[i]["GODZINA"];
dGVGateState.Rows[j].DefaultCellStyle.BackColor = Color.DarkSeaGreen;
dGVGateState.Rows[j].Cells["STAN"].Value = "OTWARTY";
// dGVGateState.Refresh();
}
}
else
{
if (dGVGateState.Rows[j].Cells["STAN"].Value.ToString() == "Alarm - Wlamanie")
{ }
else
{
dtPaneleRCP.Rows[j]["PRACOWNIK"] = "";
dGVGateState.Rows[j].DefaultCellStyle.BackColor = Color.LightSteelBlue;
if (dGVGateState.Rows[j].Cells["STAN"].Value.ToString() == "OTWARTY")
{
dtPaneleRCP.Rows[j]["DATA"] = DateTime.Now.ToString("yyyy-MM-dd");
dtPaneleRCP.Rows[j]["GODZINA"] = DateTime.Now.ToString("HH:mm:ss");
//dGVGateState.Refresh();
}
else
{
dtPaneleRCP.Rows[j]["DATA"] = "";
dtPaneleRCP.Rows[j]["GODZINA"] = "";
}
dGVGateState.Rows[j].Cells["STAN"].Value = "ZAMKNIĘTY";
}
}
}
}
}
else
{
for (int k = 0; k < dtPaneleRCPRowCount; k++)
{
if (dGVGateState.Rows[k].Cells["STAN"].Value.ToString() == "Alarm - Wlamanie")
{ }
else
{
dtPaneleRCP.Rows[k]["PRACOWNIK"] = "";
dGVGateState.Rows[k].DefaultCellStyle.BackColor = Color.LightSteelBlue;
if (dGVGateState.Rows[k].Cells["STAN"].Value.ToString() == "OTWARTY")
{
dtPaneleRCP.Rows[k]["DATA"] = DateTime.Now.ToString("yyyy-MM-dd");
dtPaneleRCP.Rows[k]["GODZINA"] = DateTime.Now.ToString("HH:mm:ss");
//dGVGateState.Refresh();
}
else
{
dtPaneleRCP.Rows[k]["DATA"] = "";
dtPaneleRCP.Rows[k]["GODZINA"] = "";
}
dGVGateState.Rows[k].Cells["STAN"].Value = "ZAMKNIĘTY";
}
}
}
}
return dtPaneleRCPRowCount;
}