[java] Groovy를 사용하지 않을 이유가 있습니까?


Answers

Groovy를 사용한다면 기본적으로 유형에 대한 유용한 정보를 버리는 것입니다. 이렇게하면 멋지고 간결한 코드가됩니다.

Bird b 

된다

def b

또한 Java의 고문 인 모든 메타 클래스 클래스와 동적 메서드 호출로 게임을 할 수 있습니다.

그러나 IntelliJ, Netbeans 및 Eclipse를 광범위하게 시도했습니다. Groovy에서는 심각한 자동 리팩토링이 불가능합니다. IntelliJ의 잘못 이 아닙니다. 유형 정보 가 없습니다. 개발자는 "그러나 모든 단일 코드 경로 (단위 : mm)에 대해 단위 테스트를 수행하면 리팩토링을 더 쉽게 할 수 있습니다." 그러나 과대 광고를 믿지 마십시오. 코드를 추가하면 (단위 테스트) 막대한 리팩토링의 안전성이 높아 지지만 작업을 더 쉽게 할 수는 없습니다. 이제 원래 코드 단위 테스트를 수정해야합니다.

따라서 Groovy에서 종종 리팩터링하지 않습니다. 특히 프로젝트가 성숙한 경우에 그렇습니다. 코드는 간결하고 읽기 쉽지만, 매일, 매시간, 매주 자동으로 리팩터링 된 코드만큼 훌륭하지는 않습니다.

Java에서 클래스로 표현되는 개념 이 더 이상 필요 없다는 것을 알게되면 그냥 삭제할 수 있습니다. Eclipse 또는 Netbeans 등에서 프로젝트 계층 구조는 크리스마스 트리처럼 밝아지고,이 변경 사항으로 인해 정확히 무엇을 망쳤는지를 알려줍니다. def thing 는 컴파일러 (그리고 당신의 IDE)에게 변수가 어떻게 사용될 것인지, 메소드가 존재하는지 등을 알려주지 않습니다. 그리고 IDE는 많은 추측을 할 수 있습니다.

결국 Java 코드는 "상용구"로 채워지지만 많은 리팩터링을 거친 후 최종 형태로 반죽되었습니다. 그리고 나에게 이것은 미래의 프로그래머가 미래의 프로그래머가 될 때를 포함하여 미래의 프로그래머를 위해 고품질의 판독 가능한 코드를 얻는 유일한 방법입니다.

Question

나는 플랫폼에서 오랫동안 부재중 인 Java에서 LoB 애플리케이션을 개발하고있다. (지난 8 년 동안 Fortran, C, C ++의 smidgin과 후자의 .Net에 뿌리 내렸다.)

Java 언어는 내가 기억하는 방식과 크게 다르지 않습니다. 나는 그것이 강점을 좋아하고 약점을 해결할 수 있습니다. 플랫폼은 성장했으며, 서로 같은 것을 많이하는 것으로 보이는 수많은 프레임 워크를 결정했습니다. 그러나 그것은 다른 날을 기다릴 수 있습니다 - 올인원으로 저는 Java에 익숙합니다. 그러나 지난 몇 주 동안 나는 Groovy에 매혹되었고 순수하게 이기적인 관점에서 매혹되었다. 단지 JVM에 대한 개발을보다 간결하고 재미있는 (그리고 잘 "그루비") 제안 Java (언어)보다.

Groovy에 관해서 가장 인상 깊었던 것은 그 고유 한 유지 보수성입니다. 우리 모두 (나는 희망합니다!) 잘 문서화되고 이해하기 쉬운 코드를 작성하려고 노력합니다. 그러나 때로는 우리가 사용하는 언어가 우리를 이기기도합니다. 예 : 2001 년 EDIFACT EDI 메시지를 ANSI X12 메시지로 변환하기 위해 C로 라이브러리를 작성했습니다. 이것은 약간 복잡한 경우에 특히 복잡한 과정이 아니며, 코드를 제대로 문서화 한 시점에서 생각했습니다. (아마도 내가 가진 것 같습니다.) 그러나 약 6 년 후에 프로젝트를 다시 방문했을 때 (그리고 C #에 순응 한 후) 발견했습니다. 나 자신이 6 년 전에 해왔 던 것을 결국 이해하기 전에 사려 깊은 분석을 3 일간했다는 사실을 C 보일러 플레이트 (mallocs, 포인터 등)에서 많이 잃어 버렸다.

오늘 저녁에 저는 Java 2000 라인을 작성했습니다 (결국 휴식의 날입니다!). 필자는 2000 줄의 자바 중 상당 부분이 Java 보일러 플레이트이지만 어떻게 사용되는지는 잘 아는 바대로 문서화했습니다.

여기서 Groovy와 다른 역동적 인 언어가 유지된다는 것을 알 수 있습니다 - 유지 보수성과 나중의 이해력. Groovy를 사용하면 플랫폼 특정 구현에서 느슨하지 않고 자신의 의도에 집중할 수 있습니다. 그것은 거의, 그러나 아주, 자기 문서화가 아닙니다. 나는 이것을 내게 큰 보탬이되는 것으로 본다. 나는 현재 프로젝트 (Groovy로 빠르게 전환 할 것이다)를 몇 년 후에 다시 방문 할 것이고, 내 후계자들에게는 그것을 계승하고 좋은 일을 계속 수행 할 것이다.

Groovy를 사용하지 않는 이유가 있습니까?




특히 대규모 코드베이스에서 동적 언어를 사용할 때 잃는 가장 큰 것 중 하나는 IDE를 사용하여 다시 팩터링하는 기능입니다. 객체에 코드를 동적으로 추가 할 수있는 언어는 오늘날의 IDE에서 구문 분석 할 수 없기 때문에 Eclipse, Java, C ++ 등에서 얻을 수있는 일종의 쉬운 리팩토링 메소드를 허용합니다.

실제로 "동적 언어가 정적"보다 우수합니다. 당신에게 가장 좋은 것을 사용하십시오. 특히 Groovy에 대한 정말 멋진 점은 동일한 프로젝트에서 Java와 Groovy를 혼합하고 일치시킬 수 있다는 것입니다. 모두 VM에서 실행됩니다. 예, 스칼라가 또 다른 예입니다.




Related