어떤 라이브러리 / 프레임 워크가 해결하려는 문제에 비해 너무 복잡하다고 생각하십니까? [닫은]


12

... 기능을 "수동으로"코딩 했습니까?

다소 은유 적 인 예로서, 2 차 방정식을 풀기위한 라이브러리가 거의 필요하지 않지만 그러한 라이브러리가 존재하고 누군가가 심각하게 생각합니다.

더 의심스러운 경우, 상황에 따라 jQuery를 버릴 수도 있습니다 (예 : 석기 브라우저를 지원할 필요가없는 경우). 일부 단순화하지만 DOM에 복잡성 및 신뢰성을 추가합니다. jQuery를 과도하게 사용하면 최근에 본 것과 같은 터무니없는 문제가 발생합니다. ajQuery 를 사용하여 태그에 빈 href를 어떻게 할당 합니까? JavaScript가 아닌 HTML 질문이었습니다.

또 다른 터무니없는 사건이지만 많은 사람들에게는 분명하지 않은 것은 다른 템플릿 시스템 위에 구축 된 템플릿 엔진 / 언어를 사용하는 것입니다 : PHP. 누군가를 유혹하는 3 단계?

그리고 또 다른 하나 : 때로는 (그림처럼) XML을 뱉어내는 printf것이 괴물 같은 XML 엔진을 사용하는 것보다 훨씬 쉽습니다.

다른 경험이 있습니까?


4
다른 도구와 마찬가지로 적절한 곳에 jQuery를 사용합니다. 열쇠가 있으면 망치와 끌을 사용하여 현관 문을 열지 마십시오.
Robert Harvey

1
@Robert Harvey : 물론 소프트웨어 공학에서 우리는 종종 키와 망치를 인식하는 데 어려움을 겪고 있습니다. 그것이 게시물의 내용입니다.
mojuba

인기있는 라이브러리가 아무리 복잡하더라도 사용자 정의 "간단한"라이브러리는 다른 라이브러리에 익숙하기 때문에 이해하기 훨씬 쉽습니다.
Louis Kottmann

@RobertHarvey 문은 내 것보다 훨씬 나은 모양이어야합니다.
Jimmy Hoffa

답변:


14

많은 MS 엔터프라이즈 라이브러리와 .net에 대한 대부분의 타사 컨트롤은 약간의 사용 후에 나 에게이 느낌을 남겼습니다.

귀하의 마일리지가 다를 수 있습니다


2
합의-대부분의 Enterprise 라이브러리는 더 나은 작업을 수행하는 타사 라이브러리의 퍼레이드와 혼동되거나 직관적이지 않습니다. 그러나 물론, 제목에 대해 Microsoft를 때리는 경우 "모범 사례"여야합니다.
Watson

초기에 entlib는 초기 프레임 워크로 이해하기 어려운 것들을 만들었습니다 ... 요즘은 대부분 초기 릴리스와의 하위 호환성 또는 향후 릴리스에서 볼 수있는 부분적으로 구워진 솔루션으로 보입니다. 더 나은 형태.
Bill

13

Windows Communication Foundation

그것은 홈페이지에 스위스 군용 칼의 그림이 있다는 사실이 나를 위해 요약합니다. XML 구성이 실제로 작성하는 코드의 4 배 정도이고 C #, Java, PHP, Python 및 "추천 된"다른 언어간에 상호 운용 가능한 SOAP 서비스를 작성하는 것이 여전히 어렵다고 상상해보십시오. 상호 운용 가능

향후 모든 프로젝트에서 REST를 계속 사용하려고합니다.


2
WCF 4.0에는 XML 구성 파일이 전혀 필요하지 않습니다. 다른 기술과의 상호 운용성에 대한 경험이 없지만 (WCF를 클라이언트로 사용하는 것 외에는 잘 작동 함), 쉽고 직관적이라고 알 수 있습니다. 책을 읽거나 교육을받지 않고 (마감일이 지남에 따라) 사용하지 않았지만 처음부터 끝까지 뛸 수있었습니다.
Allon Guralnek

4
"WCF"의 이름을 "WTF"로 바꿨습니다.
MetalMikester 2018

1
@Allon : WCF 4.0을 사용해 보지 않았다는 것을 인정할 것입니다. 그들이 그 분야에서 상당한 개선을 이룰 수 있었을 것입니다 ...
Dean Harding

12

사람들이 "자신의 롤링"에서 경험 한 문제 중 하나는 접근 방식이 더 빠르고 간단하지만 취하기 쉽고 버그가 있거나 불완전하거나 보안 결함이있을 가능성이 높다는 것입니다 .

간단한 예 : printf를 사용하여 라이브러리를 사용하는 것보다 XML을 내보내는 것이 10 배 더 쉬울 수 있습니다.

printf("<xml>%s</xml>", str);

하지만 특수 문자를 피하는 것을 기억 str하십니까? 예를 들어 ' <'및 ' &'? 어떤 사람들은 "아니요"라고 말하고 다음과 같이 작성합니다.

printf("<xml><![CDATA[%s]]></xml>", str);

그러나 str하위 문자열 " ]]>"이 포함되어 있으면 여전히 깨진 XML이 방출 됩니다. 가장자리 케이스-확실합니다. 그러나 심각한 결과로 예기치 않은 문제가 발생할 수있는 유효한 시나리오입니다.

"자신의 롤링"이 적절할 수있는 시간과 장소는 많지만, 적절한시기를 식별하기 위해서는 많은 경험과 지식이 필요합니다. 그렇기 때문에 프로그래머가 자체 구현 루틴 대신 기존 라이브러리 (사용 가능한 경우)를 사용하는 것을 선호하는 이유가 종종 있습니다.


11

Log4Net

도서관은 훌륭하지만 문서는 끔찍합니다. 내가하고 싶은 일에 너무 잔인했습니다.

내가 사용 추적을 대신.


1
로버트, 당신도 나를 이겼습니다. 난 그냥 log4net을보고 "와우,이 청취자는 멋지다. 이제 어떻게 사용합니까?"라고 생각합니다. 그런 다음에 나는 내 자신의 글을 쓸 수 있다고 생각했습니다.
JohnL

5
실제로-나는 정중하게 동의하지 않아야 할 것입니다-log.error ()보다 간단하지 않습니다.
왓슨

3
@Watson : 정말 간단하다면 왜 프레임 워크가 필요할까요?
Robert Harvey

Log4Net의 불필요한 복잡성으로 인해 구성하는 데 몇 분이 걸리는 Object Guy의 대안을 사용합니다.
cjmUK

7

공유 지점

잘못 이해하지 마십시오. SharePoint는 대부분의 작업이 필요하고 많은 작업이 필요하면 훌륭하지만, 현재하고있는 일을 모르거나 한두 가지만 필요한 경우 노력과 구성의 가치가 없습니다.


6

ASP.NET WebForms-.NET 웹 개발자로서 오랜 시간 동안 빵과 버터를 먹었지 만 MVC 프레임 워크를 사용하기 시작한 이후 (PHP / Smarty 템플릿 환경에서 제공됨) 때때로 더 나은 것이 있다는 것을 알고 있습니다 웹 개발을 수행하는 방법과 웹에서 사용하는 추상화는 과도하고 유출 됩니다.


ASP.NET MVC와 다른 ASP.NET WebForms를 의미한다고 생각합니다. 옳은?
Eric King

@ 에릭-네 맞아요, 고쳐야합니다!
Watson

3

거의 모든 경우에이 작업을 수행 한 후 후회하게되었습니다.

  • 래퍼 라이브러리 대신 PHP oci_ * 함수를 사용하면 코드 유지 관리 기능으로 인해 잘못된 동작으로 판명되었습니다. 모든 코드를 Zend_Db로 이식하면 데이터베이스 코드 유지 관리가 훨씬 쉬워졌습니다.
  • 내 다른 아약스 그리드 컴포넌트를 롤링하는데, 다른 그리드 컴포넌트가 얼마나 빨리 진화 하는지를 감안할 때 개발에 너무 많은 시간이 걸렸다. 현재 광범위한 기능을 사용할 수 있기 때문에 Ext JS 그리드에 모두 포팅하고 있습니다.
  • 프로토 타입 및 jquery와 같은 라이브러리를 피하면 크로스 브라우저 문제가 반복적으로 발생하여 종종 추적하기가 어렵습니다. Ext JS 포트는 크로스 브라우저 문제를 해결했습니다. 이해하는데 몇 주가 걸렸던 광대 한 프레임 워크 일지라도 마술입니다.

신뢰할 수있는 타사 프레임 워크를 선택하고 모든 작업의 ​​기초로 사용하는 것이 훨씬 낫다는 결론에 도달했습니다. 이러한 프레임 워크는 다른 사람에 의해 개발되고 디버깅되며, 일단 표준화하고 잘 이해하면 시간을 절약 할 수 있습니다.


+1. 그리고 그러한 라이브러리가 오픈 소스라면 도움이됩니다. 소스 코드를 아직 사용하지 않은 경우 사용중인 모든 라이브러리에 다운로드하십시오. 라이브러리의 소스 코드를 읽는 것은 문제를 진단하고 해결하는 좋은 방법 일뿐 아니라 다른 프로그래머 (아마도 상당히 높은 품질의) 코드에서 배울 수있는 기회입니다.
Mike Clark

2

System.Text.RegularExpressions

정규식은 너무 복잡하고 느립니다. Regex를 거의 사용하지 않고 일반적으로 자체 텍스트 구문 분석 및 일치를 작성합니다.

때때로 정규식이 정말 복잡한 매칭에 유용하다는 것을 알게 될 것입니다.


정규 표현식을 올바르게 컴파일합니까 (또는 아마도 System.Text.RegularExpressions가 Perl & co보다 느립니다. 이행]?
Maciej Piechotka

3
정규식은 수동 문자열 구문 분석에 비해 상대적으로 느릴 수 있지만 많은 사람들이 생각하는 것보다 빠르며 일반적으로 대부분의 실제 응용 프로그램에는 충분히 빠릅니다.
Mike Clark

2
나는 이것이 실제로 .NET 구현에 대한 불만이라고 생각하지 않습니다. 특히 복잡하거나 느리지 않습니다 (사실, 사용 가능한 빠른 구현 중 하나라는 것을 알았습니다). 적어도 그것은 내 경험이었습니다. 물론 정규 표현식은 일반적으로 복잡해지기 때문에 사람들이 완전히 부적절한 장소에서 사용하는 경향이 있습니다.
Dean Harding

2

Delphi4PHP는 나쁜 언론이 필요하지는 않지만 그것을 시도했지만 (버전 2.0) 내 의지에 구부리기가 매우 어려웠습니다. 클라이언트가 교육용 비디오를 볼 수있는 YouTube 스타일 웹 응용 프로그램을 만드는 데 사용하고 싶었지만 너무 번거롭고 PHP 프레임 워크 (VCL4PHP, Zend, Smarty 및 Recess)를 결합하려고 시도했을 때 필연적으로 이름을 바꿔야했습니다. PHP 5에는 네임 스페이스가 없기 때문에 모든 것이 문제입니다.

즉, 나는 결국 내 자신을 굴리지 않았다. 방금 실수에서 배운 것을 사용하고 매우 간단하게 유지하고 CodeIgniter와 FlowPlayer (JQuery 사용)를 사용하기로 결정했습니다.

PHP 5에서 어떤 프레임 워크를 사용하든 PHP 6은 실제로 함께 작동하는 멋진 프레임 워크를 갖게 될 것입니다.


2

베카

나는 많은 머신 러닝 작업을하고, Naive Bayes 나 로지스틱 회귀와 같은 단순한 것이 필요하다면 Weka를 버리는 것을 좋아합니다. 상당히 복잡한 기계 학습 알고리즘을 잘 구현했지만 API는 지나치게 객체 지향적 인 구식 (사전 일반) Java API로 과도하게 엔지니어링되었습니다. 나를 괴롭히는 것들 :

  1. 다른 용도로 사용하지 않는 자체 크기 조정 가능한 배열을 롤링하여 바쁜 작업을 앞뒤로 변환합니다.

  2. 특정 순서로 메소드를 호출해야하는 많은 순차 커플 링이 있으며 RTFM을주의 깊게 다루지 않는 한이를 깨닫지 못할 것입니다.

  3. 모든 인스턴스는 인스턴스 객체 여야하며 명목이든 숫자이든 Attribute 객체로 명시 적으로 선언해야합니다. 이로 인해 Weka가 원하는 형식으로 데이터를 변환하는 많은 작업이 발생합니다. Weka API가 너무 많은 예외를 던져서 코드 컴파일이 아무리 잘 작동한다는 의미는 아니기 때문에 이것은 특히 성가신 일입니다. API를 디자인하는 경우 내가 받아 들인 것 (개체의 배열을 취할 수도 있음)에서 자유롭고 데이터를 조사하여 내가 얻은 것과 올바른 것이 무엇인지 파악합니다.


2

특정 프로젝트에서 EJB3를 버렸습니다. 의존성 주입과 컨테이너 관리 트랜잭션 처리를 제공했습니다. 그러나 JBoss와 같은 큰 의존성을 도입하여 시스템이 자동화 된 테스트를 작성하기 어렵게 만들었습니다. 이제 JPA + 생성자 종속성 주입으로 줄였습니다.


1

앱의 디버그 포트에서 HTML을 추출합니다. 현재 데이터를 자동으로 새로 고치는 간단한 방법이 필요했습니다. 라이브러리를 가져 와서 포맷하면 좋았지 만 인쇄하기가 더 쉬웠습니다.

나는 또 다른 라이브러리를 거부했다. 우리는 대부분의 복잡한 XML 라이브러리를 사용한다. 새로운 앱에서 작동하도록 하루에 4 시간을 보낸 후 방금 '가방'이라고 말하고 TinyXML을 가져 왔습니다. 강력 할 수있는 곳은 아니지만 간단한 작업을 수행하는 데 많은 노력이 필요합니다.


1

최근에는 응용 프로그램 내에서 사용할 수있는 스크립팅 언어 컴파일러를 개발하고 있습니다. 나는 다른 사람들을 사용했지만, 내가 필요한 것을 정확히하지는 않습니다. 그래서 왜 내 자신의 글을 쓰려고하지 않습니까? 일반적으로 사용하기에 1 년에서 2 년이 걸릴 수 있지만 괜찮습니다. 또한 훌륭한 학습 경험입니다.

또 다른 '나만의 롤'솔루션은 내 응용 프로그램을 번역하는 데 사용되는 부분입니다. 기존 라이브러리가 있지만 그중 하나를 좋아하지 않았습니다. 그래서 나는 내 자신을 만들었다.

그리고 델파이의 데이터베이스 컴포넌트. 난 싫어 항상있다. 그래서 나는 내가 원하는 방식으로 작동하는 자체 데이터베이스 인터페이스를 만들었습니다 (PHP가 만든 것과 똑같이 작동하여 언어 간 코딩이 쉬워졌습니다).

기본적으로 옵션이 주어지면 나는 보통 내 자신의 라이브러리를 만듭니다.


무슨 뜻인지 알아 필자는 자체 제작 한 STL, DB 추상화, 컴파일러 또는 인터프리터가 포함 된 전체 언어 등을 보여줄 수 있습니다. 일반적으로 동료와 경영진은 환영받지 않지만 아무도 신경 쓰지 않아도 컴파일러를 작성하지 않은 프로그래머는 무엇입니까?
mojuba

0

오, 너무 많아 오픈 소스 API를 사용하여 몇 가지 민첩한 프로젝트를 수행했습니다. 그들이 일할 때 훌륭하지만 종종 우리는 모든 종류의 타사 API를 가져 오는 페티쉬가있는 개발자를 겪었습니다. 일부 또는 모호한 클래스는 하나 또는 두 개의 클래스를 사용하기를 원하기 때문입니다. 최종 결과는 코드의 혼란과 시스템 해킹입니다. 그들은 그것이 최고의 코드라고 주장하고, 그것을 떠나는 가난한 슬롭들은 의존성 문제와 해킹으로 가득 찬 이해할 수없고 문서화되지 않은 혼란을 찾습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.