2015-10-02 2 views
-4

У некоторых из вас может быть книга (в моем случае немецкая) «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(); 
     } 
    } 
} 
+3

Aaaaaaaaaand, на ваш вопрос? –

+0

Немного смущенно о том, чего вы пытаетесь достичь? Вы просто просите нас оптимизировать этот метод 'checkKranIstAn'? – JonE

+0

да. Я хочу, чтобы удалить все это «если еще» материал и создать один метод, называемый «checkKranIstOn» (проверьте, если кран включен) другие методы должны выглядеть так: общественной ничтожной DoSomething() { checkKranIstAn(); doSomethingElse; doSomethingEvil; } Если checkKranIstAn = false, то остальные (dosomethingelse и dosomethingevil) не должны выполняться. –

ответ

0

Я бы с:

private void checkKranIstAn() 
{ 
    lblAnzeige.Text = kran ? " " : "Der Kran wurde noch nicht angeschaltet! Bitte anschalten!"; 
} 

Вы пропустить проверку kran == true что бесполезно, удалите return заявление, которое бесполезно тоже.


Или это довольно функция:

private bool Kran() 
{ 
    lblAnzeige.Text = " "; 
    if(!kran) 
    { 
     lblAnzeige.Text = "Der Kran wurde noch nicht angeschaltet! Bitte anschalten!"; 
     return false; 
    } 
    return true; 
} 

, который используется:

private void cmdHakenRaus_Click(object sender, EventArgs e) 
{ 
    if (Kran()) 
    { 
     panel4.Size = new Size(panel4.Width = panel4.Width, panel4.Height = panel4.Height + 10); 
    } 
} 
+0

Большое вам спасибо :) мне очень помогли :) –

0

Вы можете использовать один, если заявление, посмотрим на оператора ?. Заявление return бесполезно.

private void checkKranIstAn() 
{ 
    lblAnzeige.Text = Kran ? string.Empty : "Der Kran wurde noch nicht angeschaltet! Bitte anschalten!" 
} 
+0

Огромное вам спасибо:) мне тоже помогли. –

Смежные вопросы