Здравствуйте, Lloyd, Вы писали:
_FR>>Я вот наоборот, считаю данный эффект положительным и даже наоборот — если при изменении типа, например, возвращаемого методом значения, можно не делать чекаут\чекин файлам, которые эти изменения затрагивают, то значит неплохо был продуман открытый контракт типов, между которыми произошла замена. Это лишь моё мнение.
L>Результатом продуманного открытого контракта типа должен быть интерфейс, который этот контракт реализует. И в этом случае лучше явно работать через интерфейс, а не надеяться на var.
А почему "интерфейс" — это именно некий тип? Это лишь ограничение конкретного компилятора. Интерфейсы служат для уменьшения зависимости между частями кода, в частности, для того, что бы метод, возвращающий некое значение мог начать возвращать другое значение (другого конкретного типа), а код "снаружи" об этом бы не узнал. В таком случае указанная тобой метрика становится бесполезной, ибо код стал работать по другому, а тект-то не поменялся, а перетестирование может потребоваться.
"var" — это ещё один шаг, после абстрактных классов и интерфейсов, позволяющий уменьшить связанность кода.
Duck-нотация с самого начала использовалась в c#, и никому не мешала. Применение "var" позволяет шире внедрить её использование, что, повторюсь, ещё более снизит зависимость кусков кода друг от друга.