Я архитектор команды разработчиков программного обеспечения. Я создал значительную часть веб-элементов управления и инструментов для нас, используя ASP.NET и JavaScript / jQuery.
Часть инструментария является функциональным эквивалентом методов .NET для IEnumerable LINQ (где, выберите и т. Д.) Для массивов JavaScript. Я был удивлен, насколько просто это реализовать с помощью функции прототипа js. Я надеялся, что наши разработчики смогут эффективно использовать свои знания о LINQ на стороне клиента, и результаты пока были отличными.
Как я обнаружил сегодня, есть только одна загвоздка: уже есть несколько функционально идентичных методов с JavaScript 1.6. Это фильтр, карта, некоторые и каждый, соответствующие LINQ, где, выберите, любой и все методы, соответственно.
Они не поддерживаются в IE8 или более ранних версиях (что может объяснить, почему я о них не слышал), но просто обеспечить реализацию, чтобы они работали в кросс-браузерном режиме. Обратите внимание, что существуют десятки методов LINQ, которые не имеют собственного эквивалента, таких как sum, max, avg, groupBy и т. Д.
У меня такой вопрос: как моя команда разработчиков должна устранить это несоответствие? Я думаю, у нас есть три варианта:
1 - игнорировать нативные методы JavaScript (или использовать их внутренне в сквозном методе) и использовать только методы LINQ. Запретите использование нативных методов, чтобы наша кодовая база была самосогласованной.
2 - Используйте собственные методы JavaScript, когда это применимо, и методы LINQ, когда нет аналога.
3 - разрешить использование любого из них.
Я предполагаю, что большая часть сообщества будет на стороне варианта 2, поскольку он, возможно, более соответствует стандартам, но я чувствую, что разработчикам будет дезориентировано знать, что некоторые функции идентичны в JavaScript, в то время как другие имеют другое, произвольное имя. Это действительно поднимает кроссплатформенную согласованность, которой мы достигли до сих пор.
Какой из них вы бы выбрали и почему? Есть ли другая альтернатива, которую я не рассматриваю?
Дополнительный вопрос: jQuery не имеет ни собственных функций, ни функций LINQ. Какие имена методов должны использовать мои расширения jQuery?