자동 코드 생성기 [닫기]


13

제 동료 중 한 명이 자동 코드 생성기를 사용하여 문서화가 잘되지 않고 유지 관리가 매우 어려운 대량의 코드를 만듭니다.

생성 시간 단축을 위해 유지 관리에 번거로운 코드 생성기 사용 비용이 있습니까?

답변:


10

다음과 같이 바꾸어 보자.

좋은 자동 코드 생성기의 비용은 가치가 있습니까?

예.

열악한 자동 코드 생성기의 비용이 다른 사람을 위해 더 많은 작업을 생성하지만 그만한 가치가 있습니까?

절대적으로하지. 열악한 코드에 대한 변명은 없습니다. 누군가가 영리하고 자동 코드 생성을 사용하려면 생성 된 코드가 올바른 코드인지 확인하는 데 시간이 걸립니다. 그렇지 않으면 요점이 무엇입니까? 그것은 단지 벅을 막대 아래로 밀어 내고 있으며 코드 생산과 관련하여 벅은 그것을 작성한 개발자에게 멈춰야합니다.


16
나는 당신의 두 번째 요점에 동의하지 않습니다. 생성 된 코드 는 성능과 보안 또는 기타 문제를 일으키지 않고 작동 하기에 충분 해야합니다. 생성 된 코드를 직접 유지해서는 안되므로 일반적인 코딩 표준에 맞지 않더라도 문제가되지 않습니다.
Hila

4
당신이 동의하지 않는 것이 좋습니다. 그러나 코드 생성기를 만드는 데 시간이 걸리면 코드를 생성하는 데 시간이 걸리지 않겠습니까? 일단 생성 된 후에는 다른 모든 부분만큼 읽기 / 유지 가능하지 않은 경우 누가 만들 었는지, 어떻게 만들 었는지 또는 의도를 알 수 없습니다. 때로는 발전기가 본격적인 완제품이 아닌 시작점을 만들기 위해 존재합니다.
wheaties

1
또한 코드 생성이 빌드의 일부인 경우 (즉, 모든 빌드를 다시 생성하는 경우) "아름다운"코드를 생성하는 것은 의미가 없습니다. 그러나 코드를 한 번 생성하고 그게 전부라면 다른 이야기입니다.
Dean Harding

5
Hila, 생성 된 코드를 직접 유지해서는 안되지만, 새로운 요구 사항이나 변경되는 요구 사항으로 인해 코드를 변경해야하는 경우에는 명확하고 이해하기 쉬운 코드가 필요하므로 생성기에 필요한 변경을 쉽게 수행 할 수 있습니다. 그런 다음 다시 생성하십시오.
Carson63000

6
생성 된 코드는 유지 관리를 위해 충분하지 않아도되지만 디버깅 및 유효성 검사를 수행 할 수있을 정도로 명확해야합니다.
Huperniketes

23

생성기에 의해 생성 된 코드는 손으로 유지해서는 안됩니다. 이를 변경해야하는 경우 생성기 및 / 또는 해당 설정을 조정하고 다시 실행해야합니다. 이를 고려하면 생성 메커니즘 자체가 명백한 한 결과 코드가 이해하기 쉽고 문서화되지 않은 것은 중요하지 않습니다. 코드가 생성되었다는 사실과 생성기가있는 위치 및 작동 방식을 문서화해야합니다.

비유 : 컴퓨터의 프로세서가 항상 기계 코드를 실행하는 동안, 고급 언어와 컴파일러를 사용하여 기계 코드를 작성하는 방법을 알고 있다면 그것에 대해 아무것도 알 필요가 없습니다. GCC는 때때로 하위 기계 코드를 생성하지만 완벽하게 작동하는 한 누가 신경 쓰는지 들었습니다. 데이터베이스 추상화 계층은 DB 엔진과 함께 작동하기 위해 SQL을 생성하지만 추상화 계층이 명확하고 작동하는 한 누가 SQL의 모양을 관리합니까?

코드 생성기를 올바르게 사용하면 생성뿐만 아니라 유지 관리 비용도 확실히 절약 할 수 있습니다.


4
문제는 한 사람 만이 도구를 가지고 있고 다른 사람은 가지고 있지 않으므로 코드를 수동으로 유지 관리해야한다는 것입니다.
중얼 거리는

이것은 벅을 통과합니다. 소프트웨어 개발자로서 우리의 사업은 코드 생산 방식에 관계없이 코드입니다.
Steven Evers

12
@David, 한 사람 만 도구를 가지고 있다면, 한 사람 이상이 관련된 프로젝트에 사용해서는 안됩니다.
Matt Olenik

2
@ 매트, 정확히. 생성기는 프로젝트의 일부이며 (스크립트 작성과 비교할 수 있음) 버전 관리 또는 유사한 중앙 저장소에 저장해야합니다.
Joonas Pulakka

2
@SnOrfus : 우리의 사업은 사람들이 기꺼이 사용하고 구매할 수있는 제품을 생산하는 것이라고 생각합니다. 그것이 우리의 급여가 나오는 곳입니다. 코드는 단지 매체입니다.
Joonas Pulakka

6

코드 생성기는 일종의 컴파일러입니다. 컴파일러 출력이 얼마나 예쁜지 걱정하지 않고 소스 코드로 작업하면됩니다. 그것을 사용하고 수동으로 수정하는 것은 인간이 이해할 수있는 형태로 처음부터 새로 작성하는 것보다 어렵 기 때문에 많은 작업없이 코드 생성기를 다시 사용할 수 없다는 것을 의미합니다. 이해할 수없는 동일한 코드를 정확하게 변경합니다.

따라서 빌드 프로세스의 일부이고 문서화되어 있으면 괜찮을 수 있습니다. 생성기에 대한 입력은 소스 코드이며 생성되는 것은 중간 결과이며 엉망이 아닙니다.

그러나 누군가가 소스로 사용해야하는 이해할 수없는 코드를 생성하기 위해 하나를 사용하는 경우 그 사람은 잘못된 코드를 생성합니다. 사람이 기계적으로 또는 손으로 잘못된 코드를 생성하는지 여부는 중요하지 않으며 여전히 잘못된 코드이며 여전히 품질 문제가 있습니다.

따라서이를 다른 개발자가 모퉁이를 자르고 잘못된 코드를 작성하는 것으로 취급해야합니다. 가게에서 어떻게 처리하는지 모르겠습니다.


3

다른 답변에 대한 의견에서 코드 생성기 자체보다는 팀 표준에 대해 묻는 것처럼 보입니다.

코드 생성 도구는 프로젝트에 포함되어야하며 (해당되는 경우) 빌드 프로세스의 일부 여야합니다. 예를 들어 우리 팀은 빌드시 데이터베이스 객체에서 클래스를 생성하는 Subsonic 2.2를 사용합니다.

이 작업을 수행하는 exe는 프로젝트의 일부로 SVN에 체크인되어 팀의 새 구성원이 svn에서 새 프로젝트를 가져 와서 모든 데이터베이스 클래스의 출처를 알 필요없이 즉시 빌드 할 수 있습니다 (이 예에서는 svn에 생성 된 코드를 포함시키지 마십시오).

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