Как я могу организовать и уменьшить количество классов в моем приложении - PullRequest
0 голосов
/ 29 мая 2019

Полагаю, это больше вопрос шаблона проектирования, чем вопрос кодирования. Итак, поехали ... У меня есть приложение для Android, которое содержит много классов и занятий. У меня есть классы, сгруппированные внутри каталога в соответствии с их функциями, например: DownloadTask, ScanTask внутри каталога AsyncTask. Тогда у меня есть все все действия в каталоге действий и так далее. Но я замечаю, что большая часть моего кода повторяется. Например, у меня есть 3 действия PingActivity, NetstatActivity, WhoisActivity, которые в основном выглядят одинаково с точки зрения кода. Единственное отличие состоит в том, что они используют команду, например: ping host для PingActivity, netstat -ant для NetstatActivity и т. Д. Все они создают представления из макета xml, который выглядит очень похоже, поскольку у меня есть только EditText, button и TextView. И классы вызывают AsyncTask для выполнения фонового процесса отдельно от основного потока. За исключением WhoisActivity, использующего службу rest api для запроса доменного имени. Итак, мой вопрос: как я могу упростить мой дизайн? я могу использовать один отдельный класс и передать команду или API в зависимости от того, какой пункт меню выбран пользователем? Как мне это сделать? спасибо

1 Ответ

1 голос
/ 29 мая 2019

Всего несколько предложений, по моему скромному мнению ...

  • Сокращение количества классов никогда не должно быть самоцелью.
  • НесколькоКуски кода, которые выглядят одинаково, могут на самом деле делать разные вещи с точки зрения логики и могут развиваться совсем по-другому в будущем ( DRY - это знание, а не код ).
  • Всегда проектируйте с учетом SOLID , когда вы говорите «могу ли я использовать один отдельный класс и передавать команду или API», что звучит хуже для принципов единственной ответственности и открытого-закрытого.

Сказав, что, если есть фрагменты кода, которые выглядят (и на самом деле) равны, попробуйте выделить их в сервисы, которые внедряются в ваши классы.Просто сделайте , а не , попробуйте уменьшить сложность, поместив весь код, похожий в классе / методе, с несколькими параметрами и некоторыми блоками if-else / switch, потому что в долгосрочной перспективе это обычно намного хуже, чем наличиемного маленьких и организованных классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...