#oop #dart #types #annotations #var
#ооп #dart #типы #аннотации #var
Вопрос:
Я уже некоторое время использую dart и просто задаюсь вопросом о предпочтении не аннотировать типы, лично мне легче понять и вернуться к моему коду, если я вижу аннотации типов, а не задаюсь вопросом, к какому типу относятся определенные переменные. Есть ли причина предпочесть var аннотации прямого типа?
Почему это:
var match = regexp.firstMatch('Regex Match');
предпочтительнее этого:
RegExpMatch match = regexp.firstMatch('Regex Match');
Ответ №1:
Аргумент заключается в том, что дополнительная детализация обычно не стоит собственного веса.
Если вы не назовете каждое промежуточное значение, уже есть нетипизированные выражения, которые вы используете без проблем. Скажем:
myThingie.flooTheFloo().biz.baz.fixIt();
Здесь у вас есть четыре промежуточных значения, которым вы не дали имя и тип, и мы обычно не рассматриваем это как проблему.
Если вы запишете это как;
var v1 = myThingie.flooTheFloo();
var v2 = v1.biz;
var v3 = v2.baz;
var v4 = v3.fixIt();
нет особой причины, по которой вам вдруг понадобятся типы, которые вам раньше не были нужны.
Добавление типов к переменным, возможно, менее важно, чем добавление типов к анонимным промежуточным результатам, потому что имя первого предоставляет больше информации. Вам не нужны ни имя, ни тип, если имя достаточно описательно.
Некоторые утверждают, что все эти аргументы хороши и хороши, но иногда все равно хочется присвоить чему-то тип, потому что этот случай неясен из контекста или названия. И это нормально, в руководстве по стилю указано только «ИЗБЕГАТЬ«, а не «НЕ ДЕЛАТЬ», что означает, что могут быть случаи, когда другие причины превосходят рекомендации руководства по стилю.
Я лично привык писать типы, и этого трудно не делать (особенно int
, это просто вытекает из моих пальцев, прежде чем я могу даже подумать об этом!) Однако я пробовал писать код Dart без ввода локальных переменных, и на практике это не было проблемой. У многих людей такой же опыт. (Я думаю, мы увидим, что произойдет, когда я снова вернусь к этому коду через 6-12 месяцев.)
Комментарии:
1.
when I go back to that code in 6-12 months again.
Ха-ха, это одна вещь, о которой я думаю. Хотя это имеет смысл, поскольку в большинстве случаев нам на самом деле не нужно знать переменную, но тот факт, что в документации указано избегать , а не не указывать, указывает на рассуждения.2. @Irn итак, что вы порекомендуете обычным разработчикам мобильных приложений, которые используют dart в разработке Flutter, какая практика в целом кажется лучше в объектно-ориентированном подходе?