Använd vänsterpil och högerpil för att navigera

Eller Ctrl+P för att skriva ut till PDF (eller på papper)

Föreläsning 28

Felsökning

Hur vi bör skriva program

Felsökning

Symtom

Vår kod

  1. Product[] cart = {...};
  2. string discountCode = ...;
  3. double total = 0;
  4. foreach (Product p in cart) {
  5. total += p.Price;
  6. }
  7. double shipping = 0;
  8. if (total >= 300) {
  9. shipping = 30;
  10. }
  11. if (total <= 300) {
  12. shipping = 70;
  13. }
  14. total += shipping;
  15. if (discountCode == "ABC123") {
  16. total = total - 50;
  17. }
  18. Console.WriteLine(total);

Felrapport

Symtom

Orsak

Sista giltiga tillståndet

Behandling

Behandla symtomet

  1. if (total == 370) {
  2. total = 330;
  3. }

Problem med att behandla symtomet

Behandla orsaken

Ytterligare exempel

  1. class MyForm : Form {
  2. TextBox textBox;
  3. Button button;
  4. public MyForm() {
  5. var table = new TableLayoutPanel {
  6. RowCount = 1,
  7. ColumnCount = 2,
  8. Dock = DockStyle.Fill
  9. };
  10. Controls.Add(table);
  11. table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 70));
  12. table.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30));
  13. textBox = new TextBox {
  14. Dock = DockStyle.Top
  15. };
  16. table.Controls.Add(textBox);
  17. button = new Button {
  18. Text = "Reverse!",
  19. Dock = DockStyle.Top
  20. };
  21. table.Controls.Add(button);
  22. button.Click += ClickedEventHandler;
  23. }
  24. private void ClickedEventHandler(object sender, EventArgs e) {
  25. string userString = textBox.Text;
  26. string reverseString = "";
  27. for (int i = userString.Length - 1; i >= 0; i -= 1) {
  28. reverseString += userString[i];
  29. }
  30. button.Click += ClickedEventHandler;
  31. MessageBox.Show(reverseString);
  32. }
  33. }

Specifika tekniker

Fler specifika tekniker