- 1
- 2
- 3
- 4
private static int CompareWidgetsByOrder(Widget x, Widget y)
{
return x == null ? y == null ? 0 : 1 : y == null ? 0 : x.order > y.order ? -1 : x.order < y.order ? 1 : 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+964
private static int CompareWidgetsByOrder(Widget x, Widget y)
{
return x == null ? y == null ? 0 : 1 : y == null ? 0 : x.order > y.order ? -1 : x.order < y.order ? 1 : 0;
}
Вот до чего доводит стремление к компактности кода.
+116
class MyClass
{
private List<MyObject> _collection = new List<MyObject>();
public int SelectedObjectIndex { get; set; }
private void SelectionChanged( List<MyViewObject> selectedObjects )
{
bool bFound = false;
foreach (MyViewObject item in objects)
{
if (!bFound)
{
for (int i = 0; i < _collection.Count; i++)
{
if (item.Tag != null && item.Tag is MyObject)
{
if (_collection[i] == item.Tag)
{
this.SelectedObjectIndex = i;
bFound = true;
break;
}
}
}
}
else
{
break;
}
}
if (!bFound)
{
SelectedObjectIndex = -1;
}
}
}
Просто кладезь какой-то.
Я переделал исходный код, чтобы было понятнее кто здесь кому и не нужно было разбираться со сложной структурой классов, которая используется в исходнике.
Все имена классов вымышленные, на них не нужно обращать внимание - все лишь для демонстрации подхода к построению циклов и поиску объектов в коллекциях.
+116
bool IsAdd = false;
if (EditAnalysisTable.Rows.Count == 1)
{
if (EditAnalysisTable.Rows[0][4].ToString() == string.Empty)
{
drow = EditAnalysisTable.Rows[0];
}
else
{
IsAdd = true;
}
}
else
{
IsAdd = true;
}
if (IsAdd)
{
drow = EditAnalysisTable.NewRow();
EditAnalysisTable.Rows.Add(drow);
}
Indian style: у них свои законы логики
+141
if ((ddlProbType.Text != "" && ddlProbType.Text != "Select") && (txtDesc.Text != ""))
{
if ((txtDesc.Text.Trim() == string.Empty))
{
Indian style: чем больше скобок, тем лучше!
+120
//запись в журнал расчетов
try
{
ompDataSet.OMP_History.AddOMP_HistoryRow(DateTime.Now, row["N"].ToString(), Convert.ToInt32(row["M"]), PS1I??0, PS1U??0, PS2I??0, PS2U??0, I1 / 1000, U1 / 1000, I2 / 1000, U2 / 1000, KZ, (Zone1.EditValue != null) ? Convert.ToDouble(Zone1.EditValue) : 0, (Zone2.EditValue != null) ? Convert.ToDouble(Zone2.EditValue) : 0, "", PS1_DeviceA.SelectedIndex, PS2_DeviceA.SelectedIndex, (Branch.Count > 0) ? true : false, "", "", "Время откл.: " + OffDT.DateTime.ToString("dd.MM.yyyy HH:mm") + "\n" + Lkz.ToolTip.Replace("\n", ";"));
omp_HistoryTableAdapter.Update(ompDataSet);
ompDataSet.OMP_History.AcceptChanges();
}
catch
{
XtraMessageBox.Show("Не удалось сохранить данные в журнал расчётов!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
try
{
ompDataSet.Result.Clear();
ompDataSet.Result.AddResultRow(((KeyValuePair<string, int>)NumberVL.EditValue).Key, ((KeyValuePair<string, int>)NumberVL.EditValue).Value, PS1I ?? 0, PS1U ?? 0, PS1I ?? 0, PS2U ?? 0, Convert.ToDouble(I0_A.EditValue), Convert.ToDouble(U0_A.EditValue), Convert.ToDouble(I0_B.EditValue), Convert.ToDouble(U0_B.EditValue), Convert.ToDouble(I0_A_Eval.EditValue), Convert.ToDouble(U0_A_Eval.EditValue), Convert.ToDouble(I0_B_Eval.EditValue), Convert.ToDouble(U0_B_Eval.EditValue), Convert.ToDouble(Lkz.EditValue), Convert.ToDouble(Zone1.EditValue), Convert.ToDouble(Zone2.EditValue), (PS1_DeviceA.SelectedIndex == 0) ? "ЛИФП" : "ИМФ", (PS2_DeviceA.SelectedIndex == 0) ? "ЛИФП" : "ИМФ", GetCurrentUserName(), DateTime.Now, Branch.Count, PS1.Text, PS2.Text, Convert.ToDouble(LengthVL.EditValue), UsingForEval[0], UsingForEval[1], UsingForEval[2], UsingForEval[3], OffDT.DateTime);
ompDataSet.Result.AcceptChanges();
}
catch
{}
ZOMG! Что это!?
+962
for (int i = 0; i < 4; i++)
{
if (!UseParam[i])
{
switch (i)
{
case 0:
if (AutoCalc || XtraMessageBox.Show("Неверные показания амперметра " + PS1_DeviceName_A.Text + " " + PS1.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
I1 = (CorrectValue[i] ?? 0) * 1000;
else
I1 = GetCorrectElectricValue(CorrectKm[1] ?? 0, "I0_A", row["N"], row["M"]) * 1000;
I0_A.ErrorText = PS1_A.ErrorText = "Показание " + PS1_DeviceName_A.Text + " исключено из расчета";
}
break;
case 1:
if (AutoCalc || XtraMessageBox.Show("Неверные показания вольтметра" + PS1_DeviceName_B.Text + " " + PS1.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
U1 = (CorrectValue[i] ?? 0) * 1000;
else
U1 = GetCorrectElectricValue(CorrectKm[0] ?? 0, "U0_A", row["N"], row["M"]) * 1000;
U0_A.ErrorText = PS1_B.ErrorText = "Показание " + PS1_DeviceName_B.Text + " исключено из расчета";
}
break;
case 2:
if (AutoCalc || XtraMessageBox.Show("Неверные показания амперметра" + PS2_DeviceName_A.Text + " " + PS2.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
I2 = (CorrectValue[i] ?? 0) * 1000;
else
I2 = GetCorrectElectricValue(CorrectKm[3] ?? 0, "I0_B", row["N"], row["M"]) * 1000;
I0_B.ErrorText = PS2_A.ErrorText = "Показание " + PS2_DeviceName_A.Text + " исключено из расчета";
}
break;
case 3:
if (AutoCalc || XtraMessageBox.Show("Неверные показания вольтметра" + PS2_DeviceName_B.Text + " " + PS2.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
U2 = (CorrectValue[i] ?? 0) * 1000;
else
U2 = GetCorrectElectricValue(CorrectKm[2] ?? 0, "U0_B", row["N"], row["M"]) * 1000;
U0_B.ErrorText = PS2_B.ErrorText = "Показание " + PS2_DeviceName_B.Text + " исключено из расчета";
}
break;
}
}
}
Красота
+960
private static void WriteErrLog(string FileName, string errors)
{
try
{
string name = Environment.CurrentDirectory + "\\log\\" + FileName.Replace("80020_", "");
name = name.Replace(".xml", ".txt");
if (File.Exists(name))
name = name.Replace(".txt", "_" + DateTime.Now.ToString("yyyy-MM-dd hh_mm_ss") + ".txt");
using (StreamWriter f = new StreamWriter(name, true, Encoding.GetEncoding(1251)))
{
f.Write(errors);
}
}
catch { }
}
Продолжаем...
+113
private static string GetStringParam(ref string str, string param)
{
string result = "";
if (str.Contains(param))
{
result = str.Substring(str.IndexOf(param) + 1);
str = str.Remove(str.IndexOf(param));
}
return result;
}
И еще
+113
public static string GetShortName(string name, int length)
{
StringBuilder shortname = new StringBuilder(name);
string[] str = new string[] { "ПС", "ОАО" };
for (int i = 0; i < str.Length; i++)
if (shortname.ToString().Length > str[i].Length && shortname.ToString().Substring(0, str[i].Length).ToUpper() == str[i])
shortname.Remove(0, str[i].Length);
str = new string[] { "ТЭЦ", "ГЭС", "ГРЭС" };
for (int i = 0; i < str.Length; i++)
if (shortname.ToString().IndexOf(str[i], StringComparison.CurrentCultureIgnoreCase) > 0)
shortname.Remove(1, shortname.ToString().IndexOf(str[i]) - 1);
return (shortname.Length > length) ? shortname.ToString().Substring(0, length).Trim() : shortname.ToString().Trim();
}
Опять же, из того, что досталось в наследство)
+115
try
{
foreach (MapObjectBase item in objects)
{
GisTrack track = item as GisTrack;
if (track != null)
{
//ToolTipContent - наследник TextContent
ToolTipContent oToolTip = (ToolTipContent)track.ContentList.FirstOrDefault<IContent>(a => a is TextContent);
if (oToolTip != null)
{
track.ContentList.Remove(oToolTip);
}
}
}
this.map.Redraw(false);
}
catch (Exception ex)
{
MonitoringManager.Instance.WriteLog(ex.ToString());
}
Linq - как граната. Смотря в чьих руках.