2012-02-24 2 views
0

저는 소프트웨어 개발 팀의 아키텍트입니다. ASP.NET 및 JavaScript/jQuery를 사용하여 웹 컨트롤 및 도구에 대한 상당한 규모의 워 크윅을 구축했습니다.JavaScript를위한 Linq 대 표준 방법

툴킷의 일부는 JavaScript 배열에 대한 .NET의 IEnumerable LINQ 메소드 (where, select 등)와 기능상 동일합니다. js 프로토 타입 기능을 사용하여 구현하는 것이 얼마나 간단한 지 놀랐습니다. 희망은 우리 개발자가 클라이언트 측에서 LINQ에 대한 지식을 원활하게 활용할 수 있었으며 그 결과는 지금까지 훌륭했습니다.

오늘 발견 한 것처럼 하나의 걸림돌이 있습니다. 자바 스크립트 1.6에서 이미 기능적으로 동일한 메소드가 몇 가지 있습니다. 이들은 LINQ의 where, select, any 및 all 메소드에 각각 해당하는 filter, map, some 및 every입니다.

IE8 이하 버전에서는 지원되지 않으므로 (이에 대해 들었던 이유가 설명 될 수 있음) 크로스 브라우저에서 작동하도록 구현을 제공하는 것은 간단합니다. sum, max, avg, groupBy 등과 같이 네이티브 언어가없는 수십 가지 LINQ 메서드가 있습니다.

제 질문은 이것입니다. 어떻게 개발 팀이이 불일치를 해결해야합니까?

1 - 기본 JavaScript 메서드를 무시하거나 통과 메서드에서 내부적으로 사용하고 LINQ 메서드 만 사용하십시오. 코드베이스가 자기 일관성을 유지할 수 있도록 (듯이) 네이티브 메소드의 사용을 금지합니다.

2 - 가능한 경우 기본 JavaScript 메서드를 사용하고, 해당하는 경우 LINQ 메서드를 사용하십시오.

3 - 둘 중 하나를 사용하십시오.

커뮤니티의 대부분이 옵션 2와 호환 될 것이라고 추측 할 수 있습니다. 아마도 표준 호환이 될 수는 있지만, 일부 기능은 JavaScript에서 동일하다는 것을 devs가 혼란스럽게 느낄 것이라고 생각합니다. 다른 임의의 이름을가집니다. 지금까지 우리가 달성 한 크로스 플랫폼 일관성을 실제로 끌어 올립니다.

다음 중 어느 것을 선택 하시겠습니까? 그 이유는 무엇입니까? 내가 고려하지 않은 다른 대안이 있습니까?

보너스 질문 : jQuery에는 네이티브 기능이나 LINQ 기능이 없습니다. 내 jQuery 확장은 어떤 메소드 이름을 사용해야합니까?

답변

1

일관성을 중요시하기 때문에 제공 한 세 가지 중에서 # 1을 선택합니다.하지만 메소드가 기본적으로 사용 가능하지 않은 경우 대체를 제공 할 수 있기 때문에 선택해야합니다.

Underscore.js의 메소드 중 일부는 Underscore.js가 수행하는 것과 비슷합니다. 사용 가능한 경우 기본 구현을 사용하고, 그렇지 않으면 대체 구현을 사용합니다.