У некоторых из вас может быть книга (в моем случае немецкая) «Einstieg in Visual C# 2013» Томаса Тейса. В этой книге есть упражнение о программировании простого крана.Метод оптимизации крана
Я хотел бы оптимизировать свой код, заменив запросы if else одним методом, который вызывается в каждом методе перед чем-либо еще. если true = contine с кодом, если false = stop continue и показать errormessage
в метке и не выполнять остальную часть кода.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ükran
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool Kran = false;
// Codeoptimierung: (optimize code)
private void checkKranIstAn()
{
if(Kran == true)
{
lblAnzeige.Text = " ";
return;
} else
{
lblAnzeige.Text = "Der Kran wurde noch nicht angeschaltet! Bitte anschalten!";
return;
}
}
//method with if else statement that should be replaced
private void cmdHakenRaus_Click(object sender, EventArgs e)
{
if (Kran == true)
{
panel4.Size = new Size(panel4.Width = panel4.Width, panel4.Height = panel4.Height + 10);
} else
{
lblAnzeige.Text = "Der Kran wurde noch nicht angeschaltet! Bitte anschalten!";
}
}
//THIS! here i tried it but didnt know how to do it the right way
private void cmdHakenRein_Click(object sender, EventArgs e)
{
checkKranIstAn();
panel4.Size = new Size(panel4.Width = panel4.Width, panel4.Height = panel4.Height - 10);
}
private void cmdAuslegerRaus_Click(object sender, EventArgs e)
{
panel3.Location = new Point(panel3.Location.X - 10, panel3.Location.Y);
panel4.Location = new Point(panel4.Location.X - 10, panel4.Location.Y);
panel3.Size = new Size(panel3.Width = panel3.Width + 10, panel3.Height);
}
private void cmdAuslegerRein_Click(object sender, EventArgs e)
{
panel3.Location = new Point(panel3.Location.X + 10, panel3.Location.Y);
panel4.Location = new Point(panel4.Location.X + 10, panel4.Location.Y);
panel3.Size = new Size(panel3.Width = panel3.Width - 10, panel3.Height);
}
private void cmdKranRechts_Click(object sender, EventArgs e)
{
panel1.Location = new Point(panel1.Location.X - 10, panel1.Location.Y);
panel2.Location = new Point(panel2.Location.X - 10, panel2.Location.Y);
panel3.Location = new Point(panel3.Location.X - 10, panel3.Location.Y);
panel4.Location = new Point(panel4.Location.X - 10, panel4.Location.Y);
}
private void cmdKranLinks_Click(object sender, EventArgs e)
{
panel1.Location = new Point(panel1.Location.X + 10, panel1.Location.Y);
panel2.Location = new Point(panel2.Location.X + 10, panel2.Location.Y);
panel3.Location = new Point(panel3.Location.X + 10, panel3.Location.Y);
panel4.Location = new Point(panel4.Location.X + 10, panel4.Location.Y);
}
private void cmdKranAus_Click(object sender, EventArgs e)
{
Kran = false;
}
private void cmdKranEin_Click(object sender, EventArgs e)
{
Kran = true;
}
private void cmdEnde_Click(object sender, EventArgs e)
{
Close();
}
}
}
Aaaaaaaaaand, на ваш вопрос? –
Немного смущенно о том, чего вы пытаетесь достичь? Вы просто просите нас оптимизировать этот метод 'checkKranIstAn'? – JonE
да. Я хочу, чтобы удалить все это «если еще» материал и создать один метод, называемый «checkKranIstOn» (проверьте, если кран включен) другие методы должны выглядеть так: общественной ничтожной DoSomething() { checkKranIstAn(); doSomethingElse; doSomethingEvil; } Если checkKranIstAn = false, то остальные (dosomethingelse и dosomethingevil) не должны выполняться. –