Swift-style-guide: рдЧрд╛рд░реНрдб рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рд╕рд┐рддре░ 2016  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: raywenderlich/swift-style-guide

рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╕рдВрдЧрдд guard рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо рд╕реНрдЯрд╛рдЗрд▓рдЧрд╛рдЗрдб рдореЗрдВ guard рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕реБрдЭрд╛рд╡:

рдПрдХ рдХрдерди:

guard let name = json["name"] as? String else {
    return nil
}

рдмрд╣реБ рдХрдерди:

guard let name = json["name"] as? String,
    let coordinatesJSON = json["coordinates"] as? [String: Double],
    let latitude = coordinatesJSON["lat"],
    let longitude = coordinatesJSON["lng"],
    let mealsJSON = json["meals"] as? [String]
else {
    return nil
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдРрдкреНрдкрд▓ рд╕реЗ рд╢реБрд░реБрдЖрддреА рдкреНрд░рд╛рд░реВрдк рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рдХреЛрдб рд╢реИрд▓реА рднреА рдмрджрд▓ рджреАред рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рд▓реМрдЯ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡рди-рд▓рд╛рдЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рдпрд╣рд╛рдБ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

рдПрдХрд▓:

guard let name = json["name"] as? String else { return nil }

рдмрд╣реБ:

guard let name = json["name"] as? String,
    let coordinatesJSON = json["coordinates"] as? [String: Double],
    let latitude = coordinatesJSON["lat"],
    let longitude = coordinatesJSON["lng"],
    let mealsJSON = json["meals"] as? [String]
else { return nil }

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ else рдХрдИ let s рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдиреА рд▓рд╛рдЗрди рдХреЗ рдпреЛрдЧреНрдп рд╣реИред

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИ.... рдореЙрдбреНрдпреВрд▓ 2-рд╕реНрдкреЗрд╕ 4-рд╕реНрдкреЗрд╕ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди:]

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛрдб рджреЗрдЦреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд╛рд░реНрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ @ рдЬреЗрдЖрд░рдЬреА-рдбреЗрд╡рд▓рдкрд░ @eskerber @jawwad @gregheo ?

рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдордЭреМрддрд╛: рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдПрдВ рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдХрд╛рдиреВрди рди рдмрдирд╛рдПрдВред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкреНрд░рд┐рдВрдЯ/рд╡реЗрдм/рдЬреЛ рднреА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдореЗрдВ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд┐рдЯрд░реНрди рдЬреЛрдбрд╝рдирд╛ рдЬрд╣рд╛рдВ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ _not_ рдореЗрдВ рдПрдХреНрд╕рдХреЛрдб рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  • рд╕рд┐рдВрдЧрд▓-рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:

guard let strongSelf = self else { return nil }

рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рдЙрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ _not_ рдЖрдо рддреМрд░ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЬрд╝рд░реВрд░, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдБ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд╛рдзрд╛рд░рдг рдЧрд╛рд░реНрдб рдкрд░ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИред

рдпрд╣ рдкреНрд░рд┐рдВрдЯ, рд╡реЗрдм рдЖрджрд┐ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреНрд▓рд╕ рд╣реИред

  • рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЧрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:
guard let name = json["name"] as? String,
  let coordinatesJSON = json["coordinates"] as? [String: Double],
  let latitude = coordinatesJSON["lat"],
  let longitude = coordinatesJSON["lng"],
  let mealsJSON = json["meals"] as? [String] else { return nil }

рдпрд╣рд╛рдВ рдЕрдВрддрд░ else рдХреЛ рдкрд┐рдЫрд▓реЗ рдЕрд░реИрдкрд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди рд▓рд╛рдЗрди рдкрд░ рд░рдЦрдиреЗ рдХрд╛ рд╣реИред
рддрд░реНрдХ рд╡рд╣реА рд╣реИ: рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрде рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдерд╛рди рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдРрдкреНрдкрд▓ рд╕реЗ рд╢реБрд░реБрдЖрддреА рдкреНрд░рд╛рд░реВрдк рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рдХреЛрдб рд╢реИрд▓реА рднреА рдмрджрд▓ рджреАред рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рд▓реМрдЯ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡рди-рд▓рд╛рдЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рдпрд╣рд╛рдБ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

рдПрдХрд▓:

guard let name = json["name"] as? String else { return nil }

рдмрд╣реБ:

guard let name = json["name"] as? String,
    let coordinatesJSON = json["coordinates"] as? [String: Double],
    let latitude = coordinatesJSON["lat"],
    let longitude = coordinatesJSON["lng"],
    let mealsJSON = json["meals"] as? [String]
else { return nil }

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ else рдХрдИ let s рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдиреА рд▓рд╛рдЗрди рдХреЗ рдпреЛрдЧреНрдп рд╣реИред

рдЗрд╕реЗ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рд░рдЦрдиреЗ рд╕реЗ рдЖрдк рд╡рд┐рдлрд▓рддрд╛ рдХреЗрд╕ рдирдВрдмрд░ рдкрд░ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ?

@rayfix рд╣рд╛рдБ , рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ... _(уГД)_/┬п

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрд╕рд╣рдордд рд▓реЛрдЧ рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ @rayfix рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рджреЛ рдЕрдиреНрдп рдбрд╛рдЙрдирд╕рд╛рдЗрдб рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдХрднреА-рдХрднреА рд╡реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрдо рдкрдардиреАрдп рдмрдирд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рдЪрд░рдо рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ):

рдПрдХрд╛рдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ:

guard let meal = Meal(rawValue: string) else {
    throw SerializationError.invalid("meals", string)
}

рдПрдХ рдкрдВрдХреНрддрд┐:

guard let meal = Meal(rawValue: string) else { throw SerializationError.invalid("meals", string) }

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╕рд┐рд░реНрдл рдПрдХрд░реВрдкрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдХрднреА рднреА рдПрдХ рдкрдВрдХреНрддрд┐ if рд╢рд░реНрдд рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ред

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

рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдХреЛрдИ рдХрдареЛрд░ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдХреНрд▓реЛрдЬрд░ рдЪреЗрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдереЗред

рд╕реНрдкреЗрд╕рд┐рдВрдЧ, рд▓рд╛рдЗрди рдмреНрд░реЗрдХ, рдФрд░ рдирд╛рдорд╛рдВрдХрд┐рдд рдмрдирд╛рдо рдЕрдирд╛рдо рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдЦрдХ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ https://developer.apple.com/swift/blog/?id=37 рд╕реЗ Apple JSON рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреА рдЙрдиреНрд╣реЛрдВрдиреЗ else рдХреЛ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦрд╛ рд╣реИ! рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдХреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднрд╛рд╖рд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╢рд┐рд╡рд┐рд░ рдореЗрдВ рдкрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдХреАрдордд рдкрд░ рдкрдардиреАрдпрддрд╛ (рд╕реНрдкрд╖реНрдЯрддрд╛) рдХрд╛ рдкрдХреНрд╖рдзрд░ рд╣реИред

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

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕