|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Добрый день, Помогите чайнику. Есть такой класс: XeroExport.cs. В нем очень много кода. Он выглядит примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Я хочу методы Call_BalanceSheet и Insert_BalanceSheet вынести в отдельный класс: BalanceSheet.cs: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
После того как я это делаю, XeroExport.cs не находит Call_BalanceSheet, BalanceSheet.cs не находит CheckReportStatus и Api. Как сделать так, чтобы они видели методы друг друга? Не ругайте сильно, опыта программирования у меня не много. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:00 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Конечно, не найдет. Они же у тебя как private объявлены. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:37 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Вообще, если зашла речь о такой декомпозиции, то тебе лучше сразу изучить про "Dependency Injection" и делать все это по SOLID. Могу посоветовать вот такую книгу: Марк Симан: Внедрение зависимостей в .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:43 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Похоже немного разобрался как достучаться до Call_BalanceSheet и CheckReportStatus: В ExcelExport создать переменную: Код: c# 1. 2. 3.
И также в BalanceSheet: Код: c# 1. 2.
А вот с Api никак. Скопировал в BalanceSheet.cs все "using" из XeroExport.cs: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Все равно не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:48 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatКонечно, не найдет. Они же у тебя как private объявлены. Это я исправил. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:52 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
А вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:01 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mА вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:07 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatRoust_mА вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:34 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
А solution - один на всех ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:36 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mfkthatпропущено... Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:37 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mНо ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? C using-ами все ок? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:38 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Можно сделать partial class, раз уж размер исходника так смущает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:39 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Konst_OneRoust_mпропущено... Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
А где его показать? В BalanceSheet.cs? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:46 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatRoust_mНо ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? C using-ами все ок? Да, юзинги одинаковые у обоих классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:47 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Konst_OneRoust_mпропущено... Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:49 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Ага. При желании, можно вообще все приложение сделать как один большой partial класс. А при большом желании можно и хер сломать, хоть он и без костей. Как будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:51 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Это интересная идея, почитаю на эту тему. А то я замучался связывать эти классы. А кода действительно много, пока долистаешь до нужного класса... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:53 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatСон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Ага. При желании, можно вообще все приложение сделать как один большой partial класс. А при большом желании можно и хер сломать, хоть он и без костей. Как будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. Мне такие высоты рано пока. Мне просто для удобства. Слишком много исходника на одном файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:54 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mЭто интересная идея, почитаю на эту тему. А то я замучался связывать эти классы. А кода действительно много, пока долистаешь до нужного класса... Паршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько. Листать по классам, в чем проблема-то - "F12" ("Go to definition") и попадаешь сразу в нужное тебе место. Можно и в обратную сторону - "Find all references" - и сразу видишь что и где какой-либо твой код вызывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 12:11 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatКак будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. Ну, исходя из стартового постинга, ТС хочет разбить на классы именно по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 12:40 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Спасибо, очень хорошо получилось, гораздо легче работать стало. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 14:06 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
К слову, в части реализации винформсового DataGridView (причем не похоже, что это автосгенеренный код) 29999 строк. И ничего, писали как-то люди, работали с этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 17:07 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatПаршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько. То же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 22:16 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRТо же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их? Нет. А зачем? Если класс большой, то наверняка он нарушает принцип "Single responsibility" и его надо просто разбивать на меньшие. А регионы - это просто разновидность комментариев, с тем отличием, что их сворачивать можно в IDE. Функциональной роли они никакой не играют. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 22:32 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatНет. А зачем? Если класс большой, то наверняка он нарушает принцип "Single responsibility" и его надо просто разбивать на меньшие. А регионы - это просто разновидность комментариев, с тем отличием, что их сворачивать можно в IDE. Функциональной роли они никакой не играют. Т.е., для каждого класса свой файл-исходник? И если классов в проекте очень много - много и файлов. Но кому-то проще структурировать с помощью регионов в нескольких файлах. Партиал классы тоже можна использовать для структурирования (по интерфейсам/контрактам или по кодерам). Еще их иногда удобно использовать в сочетании с "Add As Link" (для нескольких проектов), это дает возможность избавится от необходимости создания отдельной сборки с базовым классом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 23:33 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRТ.е., для каждого класса свой файл-исходник?даже для интерфейса с одним членом ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 23:37 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LR, Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 23:59 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Не забудем также и про source control ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 00:03 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRТ.е., для каждого класса свой файл-исходник? это хорошая практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 12:51 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mДобрый день, Помогите чайнику. Есть такой класс: XeroExport.cs. В нем очень много кода. Он выглядит примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Я хочу методы Call_BalanceSheet и Insert_BalanceSheet вынести в отдельный класс: BalanceSheet.cs: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
После того как я это делаю, XeroExport.cs не находит Call_BalanceSheet, BalanceSheet.cs не находит CheckReportStatus и Api. Как сделать так, чтобы они видели методы друг друга? Не ругайте сильно, опыта программирования у меня не много. Спасибо. добавлю свои 5 коп, так, чисто. набирайся опыта. декомпозиция задачи на подзадачи это победа над сложностью. она начинается в осмыслении задачи. а что дробить - постройку моста, копку огорода, или "класс" - это дело техники ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 18:00 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatLR, Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить. И чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? И с тех пор в условной девелоперской конторе существует это правило с перефразировкой для высших руководителей "это оптимально при высокой текучести кадров/кодеров". Правила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2019, 22:33 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LR, Да мне пох - напихай хоть вообще все в один файл. Чем больше пионэры наговнокодят, тем больше мне потом возможностей бабла срубить - я это еще лет 10 назад понял :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2019, 01:40 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRИ чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? Правила формулируются на основе совокупного опыта. Если вы не знаете или не понимаете чего-то, это вовсе не значит, что смысла в этом нет. LRПравила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?))) Эволюция происходит в процессе накопления опыта. Правила как создаются, так и меняются на основе систематизации такого опыта. Никто же не виноват, что это у вас всё с потолка берётся, и вы поэтому так к этому относитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2019, 02:14 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
hVosttLRИ чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? Правила формулируются на основе совокупного опыта. Если вы не знаете или не понимаете чего-то, это вовсе не значит, что смысла в этом нет. LRПравила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?))) Эволюция происходит в процессе накопления опыта. Правила как создаются, так и меняются на основе систематизации такого опыта. Никто же не виноват, что это у вас всё с потолка берётся, и вы поэтому так к этому относитесь. хвост, твоим постам немного уменьшить желчи. ты опытный разраб, без сомнения, но желчный какой-то, злой ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2019, 16:26 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
love_bachхвост, твоим постам немного уменьшить желчи. ты опытный разраб, без сомнения, но желчный какой-то, злой Я вообще не понял какую желчь вы тут увидели. Просто уже поддостало, когда люди кладут болт на знания, накопленный опыт. Вертели они на одном месте всё это. У них же есть мнение. Абсолютно ни на чём не основанное, просто мнение. Ещё больше раздражает, когда начинают оперировать терминами нравится/не нравится, вопрос вкуса. Такое ощущение, что мы тут в мире моды, аляповых трусов и платьев горошек. Какого хрена? Не согласны с чем-то, приводите аргументы. Так и так. А не вот это вот "условный Фаулер сформулировал в условном хреновом году". Если вас так же лечить, например, будут. Подорожником, потому что кому-то из врачей ПОКАЗАЛОСЬ, что так лучше, а в книгах всякую ерунду пишут для дебилов -- зачем читать? Как вы к этому отнесётесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:16 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatLR, Да мне пох - напихай хоть вообще все в один файл. Чем больше пионэры наговнокодят, тем больше мне потом возможностей бабла срубить - я это еще лет 10 назад понял :)) Аналогично пох - продолжай тупо следовать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:32 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRfkthatПаршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько. То же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их? Лет десять уж точно не использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 11:35 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRfkthatLR, Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить. И чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? И с тех пор в условной девелоперской конторе существует это правило с перефразировкой для высших руководителей "это оптимально при высокой текучести кадров/кодеров". Правила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?))) А можете раскрыть, что такое один "use case"/"предметный функционал"/"инфо-кластер" в вашем понимании? И как это согласуется, или чем отличается от принципов SOLID? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 11:40 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Дмитрий МухА можете раскрыть, что такое один "use case"/"предметный функционал"/"инфо-кластер" в вашем понимании? И как это согласуется, или чем отличается от принципов SOLID? В моем понимании принципы оформления кода и принципы проектирования - разные вещи (как холодное/горячее и горькое/сладкое). Т.е., следовать правилу "один интерфейс/класс/enum - один файл" в надежде, что это каким-то боком соотносится с принципами проектирования (с тем же упоминавшимся здесь "single responsibility") - очевидное заблуждение. Простой пример: enum, который задействуется только в методах некоторого класса. Очевидно, что изменения в этом enum будут делаться одновременно с изменениями в этом классе. И вот, с точки зрения того же SRP, код enum и класса правильней размещать в отдельных файлах или в одном? Это к тому, что принципы оформления кода более субъективны чем принципы проектирования (имхо, начиная новый проект, команда разработчиков сама должна выработать правила оформления кода). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 23:30 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LR, Что вам мешает свой несчастный енум тогда засунуть внутрь класса? :) Учитывая, что вы его больше нигде не используете, имеет смысл сделать его ещё и приватным, чтобы не торчал наружу и не смущал остальных разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 00:32 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRЭто к тому, что принципы оформления кода более субъективны чем принципы проектирования (имхо, начиная новый проект, команда разработчиков сама должна выработать правила оформления кода). Я бы всё-таки хотел бы услышать адекватные обоснования тем или иным решениям. Вот этот субъективизм вообще ни в одно место. Это детский сад на лямочках. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 00:38 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1398758]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
148ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
114ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 563ms |
0 / 0 |