1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
|
||||||
1 | ||||||
Оптимизация кода15.03.2019, 10:47. Показов 502. Ответов 4
Метки нет (Все метки)
Здравствуйте, не знаю, по теме или нет, если нет - перенесите!
Хотел поинтересоваться у Вас насчет оптимизации данного кода, что тут неправильно, что слишком усложнено, как можно подправить? Подскажите, если Вас не затруднит (исходя из того, что это библиотека).
Добавлено через 1 час 28 минут up.
0
|
15.03.2019, 10:47 | |
Ответы с готовыми решениями:
4
Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода |
15.03.2019, 11:59 | 2 | |||||
Почти все.
Ну например, почему у вас сервисный класс возвращает строку из метода Login? Как внешнему коду узнать залогинен юзер или нет? Парсить вашу строку? И писать код типа:
А если завтра вы захотите мультиязычный интерфейс, что вы будете делать? Метод Login должен возвращать либо bool (в простейшем случае), либо какой-то UserInfo. Но уж строку я никак не ожидаю получить от метода Login. Ну и еще куча всего - зашитые хардкодом URL-ы и имена полей, полное отсутствие using, непонятно зачем прилепленные кортежи, вместо нормального класса.
1
|
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
|
|
15.03.2019, 12:14 [ТС] | 3 |
Storm23, благодарю, изначально Login возвращал bool. Но об этом я не подумал
Я не думал, что во внешнем коде будет проверка на авторизацию. Авторизация проходит и я могу использовать остальные методы, т.к во всех них присутствует проверка на авторизацию... Хотя, да, костыльно...
Добавлено через 4 минуты Storm23, ах да, будьте добры, подскажите насчет Using, где использовать? И, как я понял, глупо делать html константой, лучше прописывать при каждом вызове get?
0
|
15.03.2019, 12:29 | 4 |
Все объекты, которые реализуют интерфейс IDisposable должны либо использоваться через using, либо у них нужно явно вызывать метод Dispose.
Все эти классы: WebResponse, Stream, StreamReader - они все реализуют IDisposable, и должны оборачиваться в using. Представьте себе ситуацию, что в методе Get сервер не отвечает и в строке resp.GetResponseStream(); вылетает исключение. При этом WebResponse остается открытым, как следствие - утечка памяти.Я не очень понял о каком HTML вы говорите. Это у вас сервер присылает ответ в виде HTML что ли? Это ненормально в принципе. Он должен присылать типа json или xml. А на стороне клиента нужно просто делать json или XML десериализацию в класс. Тогда весь вот этот паравоз с парсингом HTML уйдет. А еще меня немного смущает что вы делаете парсинг чисел, полученных от сервера в текущей культуре. Нужно явно использовать CultureInfo.InvariantCulture . Иначе будут потенциальные проблемы.
0
|
1 / 1 / 0
Регистрация: 15.08.2018
Сообщений: 127
|
|
15.03.2019, 12:43 [ТС] | 5 |
Storm23, сервер присылает xml, с которым я и работаю. Я прочитал Ваш предыдущий комментарий, где Вы сказали: "зашитые хардкодом URL-ы и имена полей", и подумал о поле __domain в котором хранится, адрес. Насчет
я вместо http написал html, и сбил Вас с толку, простите за опечатку.
За объяснение про Using - огромное спасибо, буду исправлять сие "...", что я выложил сюда. Хотелось бы, послушать Ваше мнение об исправленном коде, если я могу на это рассчитывать. (Но это уже потом) Насчет этого, я не понял, но буду разбираться.
0
|
15.03.2019, 12:43 | |
15.03.2019, 12:43 | |
Помогаю со студенческими работами здесь
5
Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
|
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows
Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
|
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
|
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
|
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
|
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
|
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
|
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|