Advertisement
Guest User

09.Защитно програмиране

a guest
Feb 2nd, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. Защитно програмиране
  2. Defensive programming – to always expect incorrect input and problem situations and handle them correctly
  3.  
  4. Всички входни данни, които влизат в нашата програма, трябва да бъдат валидирани
  5.  
  6. При добрият софтуер данните се валидират и в data layer- а, и в клиента, и в бизнес логиката
  7.  
  8. Начини за поведение при проблемни ситуации:
  9. - Връщане на неутрална стойност - например при JavaScript ако искаме да парснем стринг с метода parseInt, то ни се връща NaN, или -1 при IndexOf() в C#
  10. - Да върнем някакви валидни данни – например при “Hi”.substr(5, -3) при JavaScript се връща празен стринг “”
  11. - Хвърляне на exception- и – типично за обектно-ориентираните езици
  12. - Показване на error message в UI- а – например при въвеждане на невалидни данни в input поле
  13. - Log a message and stop the script, e.g. die() in PHP – за фатални грешки
  14. - Return the same answer as the previous time
  15. - Crash / shutdown / reboot – при крайност
  16.  
  17. Assert – means to guess
  18.  
  19. Debug.Assert() – се използва при писане на кода за помощ на програмиста
  20.  
  21. Assertion – ите трябва да се използват само когато се появяват фатални грешки
  22.  
  23. Avoid putting executable code in assertions:
  24. Wrong:
  25. Debug.Assert(PerformAction(), “Could not perform action”);
  26. Correct:
  27. bool actionPerformerd = PerformAction();
  28. Debug.Assert(actionPerformed, “Could not perform action”);
  29.  
  30. Assertion == fatal error!
  31.  
  32. Трябва да хвърляме exception- и само в случаи, които са настина грешни и некоректни, а при по- малки грешки като например грешно въведена парола, може да кажем на user-а да въведе отново
  33.  
  34. Разлика между exception-и и assertion-и:
  35. Exception-ите може да се обработват и те се появяват в release mode.
  36. Assertion-ите не се появяват в release mode и не могат да се обработват
  37.  
  38. Exception- ите се пишат от програмисти за програмисти, не за потребителите
  39.  
  40. Съществува chain- ване на exception- и. Т.е. една грешка може да е предизвикана от втора грешка, втората грешка да е предизвикана от трета грешка и т.н.
  41.  
  42. нашия код никога не трябва да връща грешен резултат!
  43.  
  44. Като заключение: няма един единствен правилен начин за справяне с конкретна грешка. При различни ситуации има различни правилни начини за обаботване на грешки.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement