Почему Dart предпочитает пропускать аннотации типов для локальных переменных?

#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, какая практика в целом кажется лучше в объектно-ориентированном подходе?