рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рдордирд╛рд╕реНрдЯрд┐рдХ

рдореВрд▓ рдкрд╛рда рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ, рд▓реЗрдЦрдХ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдмреАрдпрд░ рдХреИрд╕реЗ рдкрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмрдЪрдкрди рдХреА рдЬрд┐рдордирд╛рд╕реНрдЯрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреА рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ред

рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рдордирд╛рд╕реНрдЯрд┐рдХреНрд╕ (рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд▓рд┐рд╕рдереЗрдирд┐рдХреНрд╕) - рдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЕрднреНрдпрд╛рд╕ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 9 рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЬреЗрдл рдмреЗ рдиреЗ рдЕрдкрдиреА рдкреБрд╕реНрддрдХ " рдж рдереЙрдЯрд╡рд░реНрдХреНрд╕ рдПрдВрдереЛрд▓реЙрдЬреА " рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдП рд╣реИрдВред рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдпрдерд╛рд╕рдВрднрд╡ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдХреЗ, рдЖрдк рдЕрдкрдиреА рдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрджрддреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрди рд╕рднреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдВрддреБрд▓рди рдЦреЛрдЬреЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред

рдпреЗ рдирд┐рдпрдо рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛, рдкрд░реАрдХреНрд╖рдгрд╢реАрд▓рддрд╛, рд╕рдордЭрджрд╛рд░реА рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрдврд╝рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдирд┐рдпрдо рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп, рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдорд░реНрдерд┐рддред

рдиреАрдЪреЗ рдореИрдВ рдЗрди 9 рдирд┐рдпрдореЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛:
  1. рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрддрд░ рдХрд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди
  2. рдПрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
  3. рд╕рднреА рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдФрд░ рддрд╛рд░ рд▓рдкреЗрдЯреЗрдВ
  4. рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рд╕рдВрдЧреНрд░рд╣
  5. рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ рдбреЙрдЯ
  6. рд╕рдВрдХреНрд╖рд┐рдкреНрддреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
  7. рдПрдВрдЯрд┐рдЯреАрдЬ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦреЗрдВ
  8. 2 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ
  9. рдХреЛрдИ рдЧреЗрдЯрд░реНрд╕, рд╕реЗрдЯрд░ рдпрд╛ рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ


1. рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрддрд░ рдХрд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди


рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рдХрдИ рд╕реНрддрд░ рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдпрд╛ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓реВрдк рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
class Board { public String board() { StringBuilder buf = new StringBuilder(); // 0 for (int i = 0; i < 10; i++) { // 1 for (int j = 0; j < 10; j++) { // 2 buf.append(data[i][j]); } buf.append("\n"); } return buf.toString(); } } 

рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░ рдиреЗ рдЕрдкрдиреА рдкреБрд╕реНрддрдХ " рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ " рдореЗрдВ рдПрдХреНрд╕реНрдЯреНрд░реЗрдХреНрдЯ рдореЗрдердб рд╡рд┐рдзрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдирдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
 class Board { public String board() { StringBuilder buf = new StringBuilder(); collectRows(buf); return buf.toString(); } private void collectRows(StringBuilder buf) { for (int i = 0; i < 10; i++) { collectRow(buf, i); } } private void collectRow(StringBuilder buf, int row) { for (int i = 0; i < 10; i++) { buf.append(data[row][i]); } buf.append("\n"); } } 


2. рдПрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ


Else рдХреАрд╡рд░реНрдб рдХрдИ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ if/else рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдиреЗрд╕реНрдЯреЗрдб рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдерд╛? рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рдЖрдпрд╛? рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ - рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдФрд░ рд╢рд╛рдЦрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП - рдХрд┐ рдЕрдХреНрд╕рд░ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
 public void login(String username, String password) { if (userRepository.isValid(username, password)) { redirect('homepage'); } else { addFlash('error', 'Bad credentials'); redirect('login'); } } 

рдмрд╕ рдПрдХ рдФрд░ рд░рд╛рд╕реНрддрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╡рд╛рдкрд╕реА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реИред
 public void login(String username, String password) { if (userRepository.isValid(username, password)) { return redirect('homepage'); } addFlash('error', 'Bad credentials'); return redirect('login'); } 

рд╕реНрдерд┐рддрд┐ рдЖрд╢рд╛рд╡рд╛рджреА рд╣реЛ рд╕рдХрддреА рд╣реИ - рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рдмрд╛рдХреА рд╡рд┐рдзрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ, рдпрд╛ рдЖрдк рдПрдХ рд░рдХреНрд╖рд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг ( рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереЛрдбрд╝рд╛ рд╕рд╛) рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рдЖрдк рд╢рд░реНрдд рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдиреЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЗ рд░рд┐рдЯрд░реНрди рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
 public void login(String username, String password) { String redirectRoute = 'homepage'; if (!userRepository.isValid(username, password)) { addFlash('error', 'Bad credentials'); redirectRoute = 'login'; } redirect(redirectRoute); } 

рдпрд╣ рднреА рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдУрдУрдкреА рд╣рдореЗрдВ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдмрд╣реБрд░реВрдкрддрд╛ ред рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ , рд╕реНрдерд┐рддрд┐ рдФрд░ рд░рдгрдиреАрддрд┐ рдкреИрдЯрд░реНрди рднреА рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП if/else рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдирд┐рдВрдЧ, WAITING, рдЖрджрд┐), рд░рд╛рдЬреНрдп рдкреИрдЯрд░реНрди рдХреЛ рд╡рд░реАрдпрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдирдХреИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕реНрд░реЛрдд: sourcemaking.com/design_patterns/state

3. рд╕рднреА рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рддрд╛рд░реЛрдВ рдХреЛ рд▓рдкреЗрдЯреЗрдВ


рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рдкреНрд░рд╛рдЗрдорд░ (рдЖрджрд┐рдо рдЬреБрдиреВрди) рдХреЗ рд╕рд╛рде рдЬреБрдиреВрди рдХреЗ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рд╛рдЗрдорд░реА рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрд╕реЗ рдПрдирдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Domain Driven Design рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред рдбреАрдбреАрдбреА рдореВрд▓реНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдзрди, рдШрдбрд╝реАред

4. рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рд╕рдВрдЧреНрд░рд╣


рдХреЛрдИ рднреА рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдкрдиреА рд╣реА рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдореЗрдВ рдЕрдм рдЕрдкрдирд╛ рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдпрди рдХреЗ рддрд░реАрдХреЗ, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛)ред

5. рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ рдбреЙрдЯ


рдПрдХ рдмрд┐рдВрджреБ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА # рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред PHP рдореЗрдВ, рдпрд╣ рдПрдХ рддреАрд░ рд╣реЛрдЧрд╛ред

рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рдпрдо рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдЬреЛ рд╡рд┐рдзрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдПрдХ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░)ред

рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ Demeter рдХреЗ рдХрд╛рдиреВрди рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпрдХреНрд╖ рдорд┐рддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЕрдЬрдирдмрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:

рдЗрди рд╡рд░реНрдЧреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 class Location { public Piece current; } 

 class Piece { public String representation; } 

 class Board { public String boardRepresentation() { StringBuilder buf = new StringBuilder(); for (Location loc : squares()) { buf.append(loc.current.representation.substring(0, 1)); } return buf.toString(); } } 

Piece рдФрд░ Location рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг рд╣реЛрдирд╛ рдареАрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдмрд╕рдиреЗ / рдкрд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдЬреА рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ (рдирд┐рдпрдо 9 рджреЗрдЦреЗрдВ)ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, boardRepresentation() рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рд╣реИред рдЗрд╕рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 buf.append(loc.current.representation.substring(0, 1)); 

рд╡рд┐рдзрд┐ Location рд▓реЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди Piece , рдлрд┐рд░ Piece рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд╣ рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Demeter рдХрд╛ рдирд┐рдпрдо рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:
 class Location { private Piece current; public void addTo(StringBuilder buf) { current.addTo(buf); } } 

Piece рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рдЬреА рдмрдирд╛рдХрд░, рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреБрдЫ рднреА рдмреБрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ addTo() рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рд╡рд░реНрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП Location рд╡рд░реНрдЧ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрд╕рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 class Piece { private String representation; public String character() { return representation.substring(0, 1); } public void addTo(StringBuilder buf) { buf.append(character()); } } 

рдЕрдм рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рджреГрд╢реНрдпрддрд╛ рдмрджрд▓рдиреА рд╣реЛрдЧреАред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЦреБрд▓реЗрдкрди / рдирд┐рдХрдЯрддрд╛ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрд╕реНрдерд╛рдУрдВ (рдХрдХреНрд╖рд╛рдПрдВ, рдореЙрдбреНрдпреВрд▓, рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдмрдВрдж ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╣рд▓рд╛ рдЪрд░рд┐рддреНрд░ representation рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЕрджреНрдпрддрди рдмреЛрд░реНрдб рд╡рд░реНрдЧ рдХреЛрдб:
 class Board { public String boardRepresentation() { StringBuilder buf = new StringBuilder(); for (Location location : squares()) { location.addTo(buf); } return buf.toString(); } } 

рдмрд╣реБрдд рдмреЗрд╣рддрд░, рд╕рд╣реА?

6. рд╕рдВрдХреНрд╖рд┐рдкреНрддреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ



рд╕рд╣реА рд╕рд╡рд╛рд▓ рд╣реИ, рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдЖрдк рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рд╣реА рдирд╛рдо рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛, рдЕрдЧрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдб рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ ред

рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╡реИрд╕реЗ рднреА рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред рддрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╢рд╛рдпрдж рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмреБрд░рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдХрд░реНрддрд╡реНрдп рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЕрдХреНрд╕рд░ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЧрд▓рдд рд╣реИред рдореИрдВ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред

рдХрд╛рдЯреЛ рдордд, рдЗрд╢рд╛рд░рд╛ рдХрд░реЛред

7. рдПрдВрдЯрд┐рдЯреАрдЬ рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦреЗрдВ



рдПрдХ рд╡рд░реНрдЧ 50 рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рдкреИрдХреЗрдЬ 10 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ 50 рд╕реЗ рдмрдврд╝рд╛рдХрд░ 150 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдкреАрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд▓рдВрдмреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдХрдард┐рди, рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рди рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИред

8. 2 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ



рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЬрдм рдореИрдВ рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рддреЛ рд▓реЛрдЧ рд╣рдВрд╕реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖред рдпрд╣ рдирд┐рдпрдо рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдЪреНрдЪ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдФрд░ рдмреЗрд╣рддрд░ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред

рдПрдХ рддрд╕реНрд╡реАрд░ рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдЪрд┐рддреНрд░ рдореЗрдВ рдЗрд╕ рдирд┐рдпрдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рддреАрд╕рд░реЗ рдирд┐рдпрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╕реНрд░реЛрдд: github.com/TheLadders/object-calisthenics#rule-8-no-classes-with-more-than-two-instance-variables

рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХреНрдпреЛрдВ рд╣реИрдВ? рдореЗрд░рд╛ рдЬрд╡рд╛рдм рд╣реИ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ , рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рдЬреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рддреЗ рд╣реИрдВ ред рджреЛ рдПрдХ рдордирдорд╛рдирд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдЕрд▓рдЧ рдмрдирд╛рддрд╛ рд╣реИред

9. рдХреЛрдИ рдЧреЗрдЯрд░реНрд╕, рд╕реЗрдЯрд░ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ


рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдирд┐рдпрдоред рдпрд╣ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдмрдЬрд╛рдп рдкреВрдЫрд╛ ред

рдЬрдм рддрдХ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдИ рднреА рдирд┐рд░реНрдгрдп рд╡рд╕реНрддреБ рдХреЗ рднреАрддрд░ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧрд░реНрдЯрд░реНрд╕ / рд╕реЗрдЯрд░ рдХреЛ рдмреБрд░рд╛рдИ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдФрд░ рдлрд┐рд░, рд╡реЗ рдЦреБрд▓реЗрдкрди / рдирд┐рдХрдЯрддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 // Game private int score; public void setScore(int score) { this.score = score; } public int getScore() { return score; } // Usage game.setScore(game.getScore() + ENEMY_DESTROYED_SCORE); 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, getScore() рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдпрд╣ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ Game рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреЗ score рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рдЖрдк рдХрдХреНрд╖рд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЙрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдиреАрдЪреЗ, рдЖрдк рдЕрдкрдиреЗ рд╕реНрдХреЛрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ ENEMY_DESTROYED_SCORE рджреБрд╢реНрдордиреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
 // Game public void addScore(int delta) { score += delta; } // Usage game.addScore(ENEMY_DESTROYED_SCORE); 

рдпрд╣ рдЧреЗрдо рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдХрд┐ рд╕реНрдХреЛрд░ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк getScore() рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд╣реАрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдмрд╕рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖



рдпрджрд┐ рдЖрдк рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ рдЬрдм рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд░рд┐рдлреИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЕрднреНрдпрд╛рд╕ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрджрд░реНрдн


Source: https://habr.com/ru/post/In206802/


All Articles