ボイラープレートとは何ですか?なぜそれを使用するのですか?コーディングスタイルガイドの必要性

情報技術では、定型文は、変更せずに何度も再利用できる書き込みの単位です。ひいては、このアイデアは、「ボイラープレートコード」のように、再利用可能なプログラミングに適用されることがあります。

ソフトウェアとハ​​ードウェアの契約条件を含む法的合意は、定型文を豊富に使用しています。

たとえば、弁護士が5ページの契約書に署名するように指示する場合がありますが、契約書のほとんどは定型文です。つまり、その契約書を取得するすべての人にとって同じであり、数行だけが変更されています。

コンピュータプログラミングでは、ボイラープレートコードまたはボイラープレートは、ほとんどまたはまったく変更せずに多くの場所に含める必要があるコードのセクションを指します。これは、冗長と見なされる言語を参照するときによく使用されます。つまり、プログラマーは最小限のジョブを実行するために多くのコードを作成する必要があります。

たとえば、Web開発では、HTMLの単純な定型文は次のようになります。

Hello world! This is HTML5 Boilerplate.

ここでリポジトリ全体を表示できます:

h5bp / html5-ボイラープレート

html5-boilerplate-高速で堅牢で適応性のあるWebアプリまたはサイトを構築するためのプロフェッショナルなフロントエンドテンプレート。github.com

1890年代に、ボイラープレートは実際に印刷機用に金属で鋳造またはプレス加工され、米国中の新聞社や企業に配布されました。1950年代まで、何千もの新聞が、国内最大のサプライヤーであるWestern Newspaper Unionからこの種の定型文を受け取り、使用していました。一部の企業はまた、プレスリリースを定型文として送信したため、書面で印刷する必要がありました。

ほとんどのプロのWeb開発者は、開発を加速するためにプロジェクトで再利用するアセットとコードスニペットのコレクションを作成しています。すべてのウェブサイトが共通して共有するいくつかの普遍的またはほぼ普遍的なパターンがあります。ほとんどの開発者は、これらを継続的に再構築するのではなく、同様のプロジェクトで使用したコードをコピーしてから、変更を開始します。

一部の開発者は、これらのボイラープレートスターターテンプレートの価値を認識し、時間をかけてボイラープレートをより一般的にし、他の人が使用できるようにオンラインで共有します。

これはWeb開発だけに限定されません。フレームワークとライブラリが増えているため、AI / ML以外でも使用されています。

大規模プロジェクトに必要なボイラープレートの特性(生産準備完了)

  • 優れた読みやすいドキュメント?
  • より深い抽象化レベルのコード構造
  • 適切なコーディング基準に準拠
  • CLIツールがあります(ラピッドプロトタイピングとセットアップ用)
  • スケーラブル?
  • 簡単なテストツール
  • 必要なAPIモジュール
  • 国際化とローカリゼーションのサポート?
  • コード分​​割
  • セットアップ用のサーバーおよびクライアントコード
  • 適切なナビゲーションとルーティング構造?

これらすべての最小仕様の後で、プロジェクトをビルドするためにコードの編集と変更を開始する必要があります。

独自の定型文を作成するビッグテック企業もあります。彼らはそれをそれぞれのそして同様のプロジェクトのためにずっと使っています。

これの完璧な例は、react.jsのボイラープレートです。

反応ボイラープレート/反応ボイラープレート

react-boilerplate-:fire:最高の開発者エクスペリエンスとフォーカスを備えた、拡張性の高いオフラインファーストの基盤… github.com

小規模プロジェクト用のボイラープレート(足場)

これらのタイプの定型文は、一般的に一種の「スターターキット」であるか、専門的な意味で「足場」と呼ばれます。彼らの主なターゲットユーザーは、初心者の開発者または新しいアーリーアダプターです。

新しいプロジェクトにのみ必要な要素を作成することにより、ラピッドプロトタイピングに焦点を当てています。これらは必要な機能が少なく、時間とプロジェクトを超えてスケ​​ーラブルではありません。

それらのコード構造はあまり拡張されておらず、ユーザーはコア機能を構築するだけでよいため、より深い抽象化レイヤーは必要ありません。これにより、追加のユーティリティが不要になります。

最も簡単な例は、Facebookのcreate-react-app定型文です。

facebookincubator / create-react-app

create-react-app-ビルド構成なしでReactアプリを作成します。github.com

ボイラープレートとテンプレートの違いは何ですか?

Joachim Penseが明確に述べているように、定型文はコピーして貼り付け、ドキュメントに追加するだけのものです。これは、言語が使用および再利用される契約で最も頻繁に発生し、条件や警告などを詳しく説明します。

ライターはテンプレートをモデルとして使用しますが、場合によっては悪影響があります。大まかに言えば、テンプレートは、新しいオブジェクトを作成するために使用されるモデルまたはパターンです。書面では、それは、ライターが自分のバージョンを具体化するために使用できる履歴書のようなものの標準化された形式です。

ボイラープレートとは異なり、テンプレートは特定の用途に適合しています。学生が履歴書にWordテンプレートを使用したときに問題が発生し、全員が同じように見えました。

テンプレートとボイラープレートはどちらも、賢明に使用しないと、ビジネスの執筆を高潔で人工的なものにする可能性があります。

コードを書くためのスタイルガイド

ボイラープレートを使用しているかどうかに関係なく、コードを作成するために企業が従ういくつかの標準があります。それらの1つはスタイルガイドです。さまざまな企業や組織で使用されている基本的なスタイルとパターンを説明しようとします。一般的に、従業員は会社のコーディングスタイルガイドを採用する必要があります。

スタイルガイドでは、タブとスペースのインデント、変数と関数の名前付け、必要なコメントの記述、フォーマット、ソースファイル構造、データ構造の適切な方法の使用、巻き上げ、スコープ、制御ステートメントの回避など、コードを記述するための多数のルールについて説明しています。より多くの。

プログラミングスタイルは通常、読みやすさを目的としてソースコードの視覚的な外観を扱います。ソースコードを自動的にフォーマットするソフトウェアは長い間利用可能であり、コーダーはネーミング、ロジック、およびより高度な技術に集中することができます。

実用的なポイントとして、コンピュータを使用してソースコードをフォーマットすると時間を節約でき、議論することなく全社的な標準を適用することができます。(出典— Wiki)。

:これらは、のようないくつかの一般的な議論されているタブのVスペース聖戦完璧なコードのIDEを選択する、というように。興味深いのは、主にRedditで行われるこれらの議論に参加できることですまた、スタックオーバーフローのQ&Aの一部に参加することもできます。

Web開発者にとって、JSの最も一般的なスタイルガイドはAirbnbのjavascriptスタイルガイドです。オープンソースであり、誰もが貢献できます。

airbnb / javascript

javascript-JavaScriptスタイルガイドgithub.com

Javascriptにスタイルガイドが必要な理由について疑問がある場合は、AirbnbのプログラマーであるHarrisonShoffによるこの号の2番目の回答を読んでください。

JavaScriptにスタイルガイドが必要なのはなぜですか?・問題#102・airbnb / javascript

JavaScriptコミュニティについての私のお気に入りの部分の1つは、人々がそれを非常に多くの異なる方法で書くことを選択することです… github.com

今日のより人気のある言語のいくつかのスタイルガイドは次のとおりです。

DotNetコードフォーマッター

Java:Google-Java-Format

Javascript標準スタイル(airbnbのjavascriptとは異なります)

標準FIXEコーディングPHP Rを

Python:GoogleのYAPF

ルビー:ルボコップ

ボイラープレートの詳細:OOPの概念

オブジェクト指向プログラムでは、多くの場合、クラスにはインスタンス変数を取得および設定するためのメソッドが提供されます。これらのメソッドの定義は、多くの場合、定型的なものと見なすことができます。

コードはクラスごとに異なりますが、構造が十分にステレオタイプであるため、手動で記述するよりも自動的に生成する方が適切です。

たとえば、ペットを表す次のJavaクラスでは、Petname、およびownerの宣言を除いて、ほとんどすべてのコードが定型文です。

public class Pet { private String name; private Person owner;
public Pet(String name, Person owner) { this.name = name; this.owner = owner; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Person getOwner() { return owner; }
public void setOwner(Person owner) { this.owner = owner; }}

ボイラープレートの定義は、最近、他の多くのプログラミング言語でよりグローバルになっています。これは、かつては手続き型でしたがOOPになったOOPおよびハイブリッド言語に由来します。モデル/テンプレート/クラス/オブジェクトを使用して作成したコードを繰り返すという同じ目標を持っているため、この用語を採用しています。テンプレートを作成し、テンプレートの各インスタンスに対して行うのは、個々のパラメーターだけです。

この部分は、ボイラープレートと呼ばれるものです。テンプレートを作成したコードを再利用するだけですが、パラメーターは異なります。

APIとしてのボイラープレート

異なるパラメータでテンプレートコードを再利用しているだけなので、これは、入力と出力の変更のみが必要な再利用可能なAPIを構築できることを意味します。

結論

「ボイラープレートコード」は、はるかに単純なはずの結果を得るために何度も現れる、一見反復的なコードです。

この記事を書いたのは、最近、チームリーダーから、私たちのプロジェクトに適している可能性のあるさまざまな定型プレートについて学ぶように指示されたためです。だから私は完璧な定型文を探しに行かなければなりませんでした。

どんな種類のフィードバックも歓迎されます!ハッスルオン!