Не следует ли использовать .class.getSimpleName () для тегов? - PullRequest
0 голосов
/ 16 февраля 2019

Я читал, что не следует использовать теги типа

private static final String TAG = ThisClassName.class.getSimpleName();

, а

private static final String TAG = "MCLSN";

, потому что ProGaurd будет создавать ошибки и / или не запутывать код правильно.Это веские причины?

Ссылки:

http://www.drewhannay.com/2016/02/android-logcat-tag-best-practices.html https://blog.mindorks.com/applying-proguard-in-an-android-application

1 Ответ

0 голосов
/ 16 февраля 2019

Честно говоря, это вопрос предпочтений, но я предпочитаю простой вариант String.

Единственное преимущество использования параметра getSimpleName() заключается в том, что он поддерживает рефакторинг.Так что это полезно только в том случае, если вы меняете имя класса (что случается редко) или если вы копируете / вставляете файл для использования в качестве шаблона.

Так что, если вы делаете это часто, я понимаю, почему вы предпочитаете первый вариант.Это просто облегчает необходимость не менять вручную TAG.

Первоначально я также использовал getSimpleName() для тегов до недавнего времени, когда у меня возникла небольшая проблема.

При использовании архитектуры MVVM на самом деле существует только одна ViewModel для View, поэтому я создал ViewModelFactory, которая создает и возвращает правильный ViewModel для View.Поскольку он должен быть уникальным, я решил использовать TAG в качестве идентификатора нужной мне ViewModel.

Поэтому, с помощью простого оператора Switch-case на TAG, я смогу получить правильную ViewModel.Однако вы просто не можете использовать TAG в качестве выражения регистра, когда используете getSimpleName().Я получил ошибку: Constant Expression Required.

Так что, если вы планируете использовать свой TAG только для определенных ситуаций, таких как Logcat, вам будет достаточно просто использовать getSimpleName().Но если вы планируете использовать их в качестве уникального идентификатора класса для определенной группы классов, вам понадобится опция String.

...