Guest User

07.Висококачествени методи

a guest
Jan 7th, 2016
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. Висококачествени методи
  2. What a method should do:
  3. A method should do what its name says or should indicate an error (throw an exception). Any other behavior is incorrect!
  4.  
  5. !позволено е даден метод да връща грешен резултат при неговото изпълнение, но този метод трябва задължително да е private, а не public
  6.  
  7. Strong cohesion is used in engineering – in computer hardware any PC component solves a single task (e.g. hard disk performs a single task – storage)
  8. Дънната платка, например, има слаб cohesion, тъй като има памет, видео карта и др. неща на нея
  9. Symptoms of wrong methods:
  10. - The method sometimes returns incorrect result  bug
  11. - The method returns incorrect result when its input is incorrect  low quality
  12. - Could be acceptable for private methods only
  13. - The method does too many things  bad cohesion
  14. - The method has side effects  spaghetti code
  15. - Method returns strange value when an error condition happens  it should indicate the error
  16.  
  17. Methods should have strong cohesion and loose coupling:
  18. Acceptable types of cohesion (присъстват много операции, но резултатът от тези операции и целта им е една – да се изпрати имейл):
  19. SendEmail(recipient, subject, body)
  20. 1. Connect to mail server
  21. 2. Send message headers
  22. 3. Send message body
  23. 4. Disconnect from the server
  24.  
  25. DisplayAnnualExpensesReport(int employeeId)
  26. 1. Retrieve input data from database
  27. 2. Perform internal calculations over retrieved data
  28. 3. Build the report
  29. 4. Format the report as Excel worksheet
  30. 5. Display the Excel worksheet on the screen
  31. !!ако някой метод прави няколко неща, но тези неща са насочени в една посока (последния пример), то това е приемливо
  32.  
  33. Ако един метод зависи и от други параметри, освен тези, които са му подадени, то най-вероятно метода има tight coupling
  34.  
  35. The ideal coupling:
  36. - Methods depend only on their parameters
  37. - Does not have any other input
  38.  
  39. !има случаи, в които просто не можем да намалим coupling- а
  40.  
  41. Начини за намаляване на coupling- а:
  42. - Създаваме даден интерфейс с дадени методи и когато създаваме класове, и тези класове имат нужда от имплементирането на методите в конкретния интерфейс, то всеки клас наследява конкретния интерфейс
  43.  
  44. Когато пишем параметрите в декларацията на даден метод трябва да подреждаме параметрите по важност (най-важните да са най-отпред)
  45. Не трябва да имаме повече от 7 (+/- 2) параметъра в декларацията на един метод
  46. Не трябва да променяме входните данни вътре в метода (изключение когато имаме out параметри):
  47. Incorrect:
  48. bool CheckLogin(string username, string password)
  49. {
  50. username = username.ToLower();
  51. }
  52. Correct:
  53. bool CheckLogin(string username, string password)
  54. {
  55. string usernameLowerCase = username.ToLower();
  56. }
  57.  
  58. Pseudocode – начин да си напишем програмната логика без да използваме конкретен език
  59.  
  60. Добре е да правим дизайн на логиката и решението на дадена задача, преди да започнем да пишем самия код. По този начин ще ни е по-лесно, ако решим да пренапишем дадена задача на Java, която първо сме написали на C#, например.
  61.  
  62. Заключение: няма перфектно написан код. Винаги може дадени фактори да се променят и да трябва да променяме или дори пренаписваме кода, който сме написали. За това трябва да се стараем да намерим оптималното решение на даден проблем, а не перфектното, просто защото перфектно решение няма.
Add Comment
Please, Sign In to add comment