TGViewer
Moth Moth @namlessmoth · 44 subscribers
Post #364 163
Вчера сделал всего три задания и все три оказались не правильными
1) Задание:
Проведите рефакторинг - https://gist.github.com/HolyMonkey/adcf9478bd6dcdd21384bf269155f8fe

Решение:
В основной обработчик нажатия кнопки вынес высокоуровневые функции в декларативном стиле, чтобы было легче понимать логику кода.
На уровне ниже функции обработки данных введённых пользователем и вывод результата.
https://gist.github.com/NoNameDeleted/fb6ca90f51c76888eb00d27b0aa99da1

Ответ ментора:
Здравствуйте. Это задача на паттерн MVP.
Общая схема примерно такая.
Каждый из слоев может состоять более чем из одного класса. SRP никто не отменял)
В целом, будут классы (можно их назвать иначе) View, Prespenter, PresenterFactory, Service, DatabaseContext, Repository, Citizen, Паспорт.
View - использует MessageBox.Show, устанавливает результат строки и вызывает по нажатию кнопки метод презентера.
Презентер - обращается к модели, получает от нее какие то данные (или не получает) и принимает решение как на эти данные отреагировать (что отобразить во View). Создает паспорт и обрабатывает эксепшены.
Service (модель) - Прослойка между БД и презентером, получает от паспорта его номер, вызывает кого то, кто посчитает хэш, передает хэш в Repository.
Repository- обрабатывает DataTable, полученный от DatabaseContext, создает Citizen.
DatabaseContext- открывает соединение, создает DataTable, заполняет его и возвращает.

Пишите программу начиная с метода Main, чтоб был понятен полный поток выполнения программы. Что от куда берется тд.

Не обязательно работать в вин формс, можно консольное приложение, главное сохранить суть.


2) Задание:
Попробуйте заменить метод на пару Включить\Выключить - https://gist.github.com/HolyMonkey/ef0c234f158151d80ecb22d3717c9ac2

Решение:
https://gist.github.com/NoNameDeleted/69b0c032940109d8a28f980e34c2d746

Ответ ментора:
Disable - не хватает действия которое бы оправдало имя метода.


3) Задание:
Отрефакторите - https://gist.github.com/HolyMonkey/1bad5877fc09bb60d2a83a522824440e

Решение:
https://gist.github.com/NoNameDeleted/a0fcff5d1ba50a1e6d17838cff7fa96e

Ответ ментора:
public void Shoot(Player player) {} - стреляем обычно в цель.
public string Find(int index) {} - Поиск предполагает перебор и сравнение по какому-то критерию, а тут мы ничего не ищем, у нас уже есть индекс.
More from @namlessmoth
  1. Mar 7, 2026Как сломать босса одним прокачанным навыком Причём первую заратану я победил точно так же,…
  2. Mar 3, 2026Наиграл уже 150+ часов и даже не прошел половину игры Мне капец как не везёт почти в каждо…
  3. Feb 17, 2026Один месяц подписки на впн Вдруг кому надо https://t.me/gruVPNbot?start=g_UZhunlWNfFC_2127…
  4. Feb 16, 2026оставлю тут, чтобы не потерять вам смотреть нельзя, это только для меня
  5. Feb 12, 2026Оказалось что всё-таки можно сдавать несколько заданий за один раз. Я вчера сдал 7 заданий…
  6. Feb 11, 2026Играю в Pokemon unite уже несколько лет Смотрю контент на ютубе по этой игре Решил постави…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →