문제

나는 레일을 사용하여 Django Guru를 사용하여 웹 앱을 만들 것인지 결정하려고합니다. Django는 "마법"을 적게 사용하기 때문에 사용하는 것이 좋습니다. 그러나 내 관점에서 볼 때, 철도의 "마법"은 계약자에게 개발이 더 간결하게 만들어지면서 청구 가능한 시간이 줄어들 수 있기 때문에 좋은 것처럼 보입니다. Django의 이점이 더 세밀한 제어 일 수 있지만이 제어가 필요한지 어떻게 알 수 있습니까? "마술"에 고유 한 문제가 있습니까?

도움이 되었습니까?

해결책

글쎄, 몇 비트의 레일 "마법"을 고려하십시오. 컨트롤러 클래스를 작성할 때 해당 방법은 특정 변수 및 기타 클래스에 액세스 할 수 있습니다. 그러나 이러한 변수와 클래스는 루비 코드 파일의 어떤 것도 정의하거나 가져 오지 않았습니다. Rails는 무대 뒤에서 많은 작업을 수행하여 자동으로있을 수 있도록했습니다. 컨트롤러 방법에서 무언가를 반환하면 Rails는 결과가 적절한 템플릿으로 전달되도록합니다. 사용할 템플릿, 어디서 찾을 수 있는지 등을 알리기 위해 코드를 작성할 필요는 없습니다.

다시 말해, 마치 마치 마치 "마법"에 의해 발생하는 것처럼 보입니다. 당신은 손가락을 들어 올릴 필요가 없습니다. 그들은 당신을 위해 일어납니다.

대조적으로, Django보기를 작성할 때 사용하려는 모든 것을 가져 오거나 정의해야하며, 사용하는 템플릿 및 템플릿에 액세스 할 수있는 값을 명시 적으로 말해야합니다.

Rails의 개발자들은 이런 종류의 "마법"이 좋은 일이기 때문에 좋은 일이라고 생각하며, 빨리 작동하는 것이 더 쉬워지기 때문에, 당신이 물건에 도달하고 재정의를 시작하고 싶지 않으면 많은 세부 사항을 가지고 있지 않기 때문입니다.

Django의 개발자들은 이런 종류의 "마법"이 나쁜 일이라고 생각합니다. import 진술은 그랜드 사물의 계획에서 큰 문제가되지 않습니다), 실제로 진행중인 일을 숨기고, 물건을 무시하는 방법을 해결하기가 더 어려워 지거나, 문제가 발생하면 디버깅하기가 더 어려워집니다.

물론이 두 가지 모두가 취해야 할 유효한 입장이며, 일반적으로 사람들은 자연스럽게 자연스럽게 다른 사람에게 끌리는 것 같습니다. "마법"을 좋아하는 사람들은 철도 나 프레임 워크 주위에 모여려고 노력하는 데 모방하려고 시도하는 곤고 또는 틀을 모방하려는 프레임 워크 (그리고 더 넓은 의미에서,이 입장들은 루비와 파이썬의 다소 고정 관념입니다. 개발자; 루비 개발자는 일을하는 것을 좋아하는 경향이 있으며, 파이썬 개발자는 다른 방식으로 일하는 것을 좋아하는 경향이 있습니다).

장기적으로는 아마도 당신이 관심이 있다고 말하는 요소에 큰 차이를 만들지 않을 것입니다. 유용한 결과 .

다른 팁

주요 문제는 마법을 이해하지 못할 때 발생합니다. 이로 인해 산발적이고 치명적인 충돌에 이르기까지 완전히 중성화 된 응용 분야에서 나올 수 있습니다.

무언가가 깨질 때까지 마법은 훌륭합니다. 그런 다음 모든 트릭이 어떻게 작동하는지 알아 내야합니다.

자세한 내용은 Joel Spolsky 's를 읽으십시오 누출 법칙

마술은 기능성을 난독하게합니다. 그것은 프로그래머가 행동의 작동 방식을 이해할 필요가없고, 더 중요한 것은 그들이 어떻게 변화를 변화시킬 수 있는지 이해할 필요가 없도록 명시 적으로 암시 적으로 행동을 만듭니다.

코더가 작업중인 코드 기반을 완전히 파악하면 "Magic"은 큰 생산성 이익이 될 수 있습니다. 그러나 복잡성이 높은 웹 프레임 워크와 같은 타사 시스템을 사용하면 해당 수준의 전문 지식을 얻는 데 훨씬 더 오래 걸릴 수 있습니다.

이제, 당신이 일을하기 위해 누구를 고용 해야하는지에 대한 문제에 대해 : 다른 프로그래머가 당신의 계약자 코드를 이해할 수있는 장기적인 능력에 대해 걱정한다면, django와 함께가는 것이 합리적 일 수 있습니다 (확실히 내 선호도). 그러나 앞으로 웹 사이트를 잘 유지할 수있는 많은 레일 전문가가 많이 있습니다.

선택은 당신이 평가하는 계약자들 사이에서 a) 입증 된 실적을 가지고 있고 b) 당신이 신뢰하는 사람에게 내려야합니다. 훌륭한 개발자는 레일이나 장고에서 잘할 것입니다.

마법을 사용할 때 ... 시스템의 한 조각을 이해하기 위해 모든 것을 이해해야합니다. 마법이 당신이 검사하는 작품에 영향을 미치는지 판단하기가 어렵 기 때문입니다.

이야기를 읽고 저자가 반복적이기 때문에 관련 음모 비틀기를 남기는 것과 같습니다.

Shazam

"마법"의 문제점은 그것이 당신에게서 많은 것을 숨기고, IMO는 "상자 밖에서"생각하기 시작하고 "죽은 사람으로 끝나기 시작하면 문제를 추적하거나 무엇을 해야하는지, 무엇을 해야하는지 알기가 더 어렵다는 것입니다. 매직 존 "(즉, 마술이 당신을 도와주지 않는 부분).

IMO 이것은 Ruby on Rails의 주요 문제입니다 (그리고 나를 잘못 이해하지 마십시오. 진짜 Ruby on Rails처럼); 시작하기가 너무 쉽습니다. 그리고 일단 레일이 당신을 위해 일을하지 않거나 레일의 컨벤션이 맞지 않는 곳에 걸려 넘어지면 ... Ruby Guru는 더 이상 마법에 의존 할 수없고 그것이 당신에게서 모든 것을 추상화했기 때문에 "어려운 길"을 수행하는 방법이 없습니다.

마술은 종종 "성능 또는 구문을 최적화하기 위해 임베디드 가정을 사용하는 것"을 의미합니다. 물론, 잘 문서화 된 코드에서 이러한 가정은 명백한 제약으로 언급됩니다.

때로는 마술은 정말 훌륭합니다. 왜냐하면 그것은 당신이 쓰기해야 할 것을 실제로 줄이거 나 속도를 극적으로 향상시키기 때문입니다. 그러나 이러한 가정을 수많은 방식으로 위반하고 예상치 못한 오류가 발생하거나 더 나쁜 버그가 발생할 수 있습니다.

마법에 대해 이야기하면서, 나는 레일, 장고 및 대부분의 프레임 워크가 어떤 종류의 마술을하고 있지는 않다고 생각합니다. 그들이 물건을 추상화하고, API로 낮은 수준의 서비스를 마무리하고, 경로와 컨트롤러를 통합하는 방식은 거의 아는 사람들에게 일종의 마술입니다. 나는 레일에 더 많은 마법이 있고 사람들이 때때로 길을 잃을 수 있음을 인정합니다. 그러나 우리는 그 때문에 철도를 기각해서는 안됩니다. 내가 말했듯이, 마법은 매우 나쁘고 레일만이 마법을하는 것은 아닙니다. 우리는 레일이 매우 빠르게 발전하고 있으며 코드 품질이 좋아지고 점점 더 모듈화되었습니다. 레일 주변의 자원은 엄청납니다. 그것들도 고려해야합니다.

Guoliang Cao가 지적했듯이, 운영 체제를 시작으로 키보드 입력을 취하고 적절한 위치에서 화면에서 렌더링하는 운영 체제부터 시작하여 항상 의존하는 일종의 "마법"이 항상 있습니다. 모든 웹 프레임 워크는 웹 페이지에 게시 된 매개 변수를 구문 분석하고 쉽게 액세스 할 수 있도록 데이터 구조에 넣습니다. 레일은 제작자 (내가 동의하는 경향이있는)가 웹 애플리케이션을 개발하는 방법에 대해 매우 강한 의견을 가지고 있기 때문에 마술처럼 할 수있는 일에 대해 훨씬 더 공격적입니다. 따라서 문제는 실제로 "마법의 양"이라는 것이 틀림 없다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top