상용구 코드 란 무엇입니까?


384

동료는 이것에 대해 들어 본 적이 없으며 실제 정의를 제공 할 수 없습니다. 저에게는 항상 'I-know-it-when-I-see-it'의 사례였습니다.

보너스 질문, 누가 용어를 시작 했습니까?


68
참고로, 상용구라는 용어는 프로그래밍에만 국한되지 않습니다. 예를 들어, 변호사는 5 페이지 계약을 체결 할 수 있지만 대부분의 계약은 상용구입니다. 이는 계약을 맺는 모든 사람에게 동일하며 몇 줄만 여기 저기 변경되었습니다.
mellowsoon

26
다른 사람은 모르지만 회사에서 상용구 코드는 상용구를 작동시키는 코드입니다 : 열기, 닫기, 세척, 교체 등
ulty4life

1
이 질문은 전문 용어에 관한 것이기 때문에 주제가 아닌 것 같습니다.
Adriano Repetti

4
라 라벨의 문서와 생각 때문에 여기에 왔습니다. "이 보일러 플레이트 재료는 무엇입니까?" 몇 가지 답변을 읽은 후 나는뿐만 아니라 문제에 대한이 직접 관련 위키 페이지 쇼 통찰력을 생각 : en.wikipedia.org/wiki/Boilerplate_code
벤 Fransen

1
최근에이 용어를 들었으므로 프로그래밍 언어의 플러그인 또는 모듈로 호출 할 수 있는지 궁금합니다.
Anjil Panchal 2016

답변:


215

"boilerplate code"는 훨씬 더 단순 해 보이는 결과를 얻기 위해 반복적으로 나타나는 반복되는 코드입니다.

주관적인 정의입니다.

이 용어는 신문 산업의 "상용구"에서 유래 : 위키


2
OOP의 다중 속성에 대한 아이디어는 상용구를 줄이는 것이므로 제대로 적용하면 상당히 줄어 듭니다.
Andrew Sledge

또한 강판이 int 보일러로 사용되는 철강 산업에서 유래 한 것으로 알려져 있습니다.
Mohammed Shareef C

55

어원학에서 상용구 라는 용어 : http://www.takeourword.com/Issue009.html ...

흥미롭게도이 용어는 신문 사업에서 비롯되었습니다. 신디케이트 된 칼럼 및 다른 조각은 매트 (즉, 매트릭스)의 형태로 가입 신문에 발송되었다. 일단 끓는 납을이 매트에 부어 조각을 인쇄하는 데 사용되는 플레이트를 만들었습니다. 따라서 이름이 상용구입니다. 상용구에 인쇄 된 기사를 변경할 수 없었기 때문에 변호사는이 용어를 다른 응용 프로그램에서 반복적으로 사용하여 변경되지 않은 계약의 일부를 나타내며, 결국에는 변경되지 않은 언어를 사용했습니다. 다른 경우에 반복적으로 사용 된 모든 문서

프로그래밍에서 상용구를 구성하는 요소는 무엇입니까? 다른 사람들이 지적했듯이, 프로세스에서 변경 사항이 거의 또는 전혀없이 반복적으로 복사되는 코드 덩어리 일뿐입니다.


더 많은 참조를 보았던 mentalfloss.com/article/26087/why-it-boilerplate-text에 대한 대체 설명 이 있습니다.
fgysin reinstate Monica

1
제길! 이것은 문법 stackexchange에 대한 답변처럼 보인다 ... 실제로이 전체 질문,하지만 우리가 왜 여기에 필요한지 알 수 있습니다 ...
pythonian29033

55

보일러 플레이트 코드는 반복해서 사용할 수있는 코드를 의미합니다. 반면에 누구나 재사용 가능한 코드라고 말할 수 있습니다.

이 용어는 실제로 철강 산업에서 나왔습니다.

Wikipedia 에 따르면 약간의 역사가 있습니다 .

1890 년대에 보일러 플레이트는 실제로 인쇄 기용 금속으로 주조 또는 스탬프 처리되어 미국 전역의 신문에 배포되었습니다. 1950 년대까지 수천 개의 신문이 미국 최대의 공급 업체 인 Western Newspaper Union으로부터 이러한 종류의 상용구를 받아서 사용했습니다. 일부 회사는 또한 보도 자료를 상용구로 보내서 서면으로 인쇄해야했습니다.

이제 Wikipedia 에 따르면 :

객체 지향 프로그램에서 클래스에는 종종 인스턴스 변수를 가져오고 설정하는 메소드가 제공됩니다. 이러한 방법의 정의는 자주 상용구로 간주 될 수 있습니다. 코드는 클래스마다 다를 수 있지만, 수작업으로 작성하는 것보다 자동으로 더 잘 생성 될 정도로 구조적으로 충분히 정형 적입니다. 예를 들어, 애완 동물을 나타내는 다음 Java 클래스에서 Pet, name 및 owner 선언을 제외하고 거의 모든 코드가 상용구입니다.

public class Pet {
    private PetName name;
    private Person owner;

    public Pet(PetName name, Person owner) {
        this.name = name;
        this.owner = owner;
    }

    public PetName getName() {
        return name;
    }

    public void setName(PetName name) {
        this.name = name;
    }

    public Person getOwner() {
        return owner;
    }

    public void setOwner(Person owner) {
        this.owner = owner;
    }
}

38

거의 또는 전혀 변경하지 않고 많은 응용 프로그램 / 컨텍스트에서 사용할 수있는 코드입니다.

보일러 플레이트는 1900 년대 초 철강 산업에서 파생되었습니다.


34

에서 위키 백과 :

컴퓨터 프로그래밍에서 상용구 란 거의 또는 전혀 변경하지 않고 여러 곳에 포함되어야하는 코드 섹션을 설명하는 데 사용되는 용어입니다. 장황하게 여겨지는 언어를 언급 할 때 더 자주 사용됩니다. 즉, 프로그래머는 최소한의 작업을 수행하기 위해 많은 코드를 작성해야합니다.

기본적으로 상용구 코드를 고려할 수 있습니다 를 프로그래밍 언어에 필요한 텍스트로 있습니다.

현대 언어는 그것을 줄이기 위해 노력하고 있지만 특정 유형 검사기가있는 오래된 언어도 있습니다 (예 : OCaml에는 Java와 같이 더 장황한 언어로 보일러 플레이트 코드가되는 선언을 피할 수있는 유형 유추자가 있습니다)


24

보일러 플레이트는 좋은 프로그래머가 피하는 것입니다 : 반복.


36
세상에, 당신은 대답에 "ti"가 두 번 있습니다! 보시다시피 반복이 항상 나쁘지 는 않습니다 .
Tamás Sengel

3
어떻게 피할 수 public static void main(String[] _)있습니까?
Koray Tugay

15

소프트웨어 개발의 상용구는 사람들마다 다른 것을 의미 할 수 있지만 일반적으로 반복해서 사용되는 코드 블록을 의미합니다.

MEAN 스택 개발,이 용어는 템플릿의 사용을 통해 코드 생성을 의미합니다. 전체 응용 프로그램을 처음부터 손으로 코딩하는 것보다 쉽고 코드 블록 일관성과 버그가 적고 깨끗하고 테스트 및 검증 된 코드이며 오픈 소스이므로 지속적으로 업데이트되거나 수정되므로 사용하는 데 많은 시간이 절약됩니다 프레임 워크 또는 코드 생성기. MEAN 스택에 대한 자세한 내용을 보려면 여기를 클릭 하십시오 .


7

실용적인 용어로, 상용구 코드는 모든 곳에서 잘라서 붙여 넣는 것들입니다. 종종 모듈 헤더와 일부 표준 / 필수 선언과 같은 것들이 될 것입니다 (모든 모듈은 로거를 선언해야하며 모든 모듈은 이름과 개정 등의 변수를 선언해야합니다.) 현재 프로젝트에서 메시지 처리기를 작성합니다. 그것들은 모두 같은 구조를 가지고 있으며 (메시지를 읽고, 확인하고, 처리하고), 처리기들 간의 의존성을 제거하기 위해 기본 클래스에서 상속받지 않기를 원합니다. 모든 루틴 변수, 표준 메소드, 예외 처리 프레임 워크를 선언했습니다. 개발자가해야 할 일은 처리중인 메시지에 특정한 코드를 추가하는 것뿐입니다. 빠르고 사용하기 쉬웠을 것입니다.


7

현재 많은 다른 프로그래밍 언어에서 보일러 플레이트 정의가 더욱 세계화되고 있습니다. OOP와 OOP가 된 하이브리드 언어에서 왔으며 절차 적으로 이전에 모델 / 템플릿 / 클래스 / 객체로 빌드 한 코드를 계속 반복하는 동일한 목표를 가지게되었으므로이 용어가 왜 적용됩니까? 템플릿을 만들고 템플릿의 각 인스턴스에 대해 수행하는 유일한 작업은이 부분을 보일러 플레이트라고하는 개체를 개별화하는 매개 변수입니다. 템플릿을 만든 코드를 다른 매개 변수와 함께 재사용하면됩니다.

동의어
청사진은 상용구입니다
. 스텐실은 상용구입니다
. 바닥 글은 상용구
입니다. 여러 용도를위한 디자인 패턴
은 상용구입니다.



2

에서 whatis.techtarget.com :

정보 기술에서 상용구는 변경없이 반복해서 재사용 할 수있는 작문 단위입니다. 또한 아이디어는 때때로 "보일러 플레이트 코드"와 같이 재사용 가능한 프로그래밍에 적용됩니다. 이 용어는 보일러 플레이트가 스팀 보일러에 사용하기 위해 큰 플레이트로 압연 된 철강 제조에서 파생됩니다. 그 결과는 상용구 쓰기가 "강철"로서 오랜 시간 테스트를 거친 것이거나 반복 재사용을 위해 충분히 강력한 것으로 롤아웃 된 것입니다.

프로그래밍을 넘어서 :

상용구는 특정 유형의 템플릿과 비교할 수 있으며, 이는 빈칸 채우기 상용구로 생각할 수 있습니다. 몇 가지 일반적인 상용구에는 임무 설명, 안전 경고, 일반적으로 사용되는 설치 절차, 저작권 설명 및 책임 부인이 포함됩니다.

프로그래머로서의 경험에서, 적절한 종류의 상용구 코드는 일반적으로 프레임 워크라고 할 정도로 크거나 복잡하지 않은 코드입니다.

전형적인 예는 HTML5 Boilerplate 입니다.


1

이를 "스 니펫"또는보다 정확하게 "스 니펫 모음"이라고 할 수 있습니다. 제가 생각하는 용어는 인쇄 및 인쇄 업계에서 만들어졌으며 실제 "플레이트"를 사용한 다음 다시 덩어리로 다시 사용했습니다. 더 트렌디하고 세련된 보이기 위해 간단한 것들에 대한 멋진 용어. 반응 = 적응성 / 유체를 참조하십시오.


"스 니펫"은 동일한 의미를 전달하지 않습니다. "boilerplate"은 몇 줄의 복사 / 붙여 넣기 / 잊어 버린 코드와 달리, 적합하도록 수정 된 더 큰 덩어리를 의미하는 경향이 있습니다. WinMainWin32 앱 의 함수 코드가 그 예입니다 . 앱의 창 클래스를 등록하고 메인 창을 만들고 이벤트 루프를 실행 한 다음 창 프로 시저의 종료 코드를 반환합니다. 이 기능은 종종 응용 프로그램간에 크게 변경되지 않으며 상대적으로 수정이 거의없이 재사용 될 수 있지만 라이브러리 (또는 그 부분에 대한 스 니펫)로 이해하기에는 일상적이지 않습니다.
cHao

0

상용구는 변경없이 반복해서 재사용 할 수있는 작문 단위입니다. 확장하여, 아이디어는 때때로“보일러 플레이트 코드”에서와 같이 재사용 가능한 프로그래밍에 적용됩니다

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