Articles

Ruby:Load vs.Require vs.Include

何かの初心者として、あなたが始めているかもしれないものを練習するだけでなく、その分野でより高度な人々の仕事を研究す プログラミングに比較的新しい人として、私は同様の問題に対する異なるアプローチを発見するために、どのレベルのプログラマからもコードを読

私のコードとより高度なプログラマのコードとの間に気づいた明白な違いは、ファイル構造とファイル数ですが、ラベルを付けたい場合は、懸念の分離を練習していました。これがコンピュータプログラミングで重要な概念であることは知っていましたが、正直に言うと、SoCを練習する上で最も驚いたのは、Load、Require、Include—aka、プログラム内のファイルをリンクし、SoCを実装しやすくするものを使用することに慣れていなかったことです。

これらの3つの方法と、プログラムを次のレベルに引き上げる方法を舞台裏で見てみましょう。

Include

これはかなり簡単です。 似たようなメソッドを共有するクラスを複数作成している場合は、それらのメソッドをモジュールに抽出できます。 メソッドがモジュールに書き込まれたら、そのモジュールをそれらのメソッドを呼び出す必要がある可能性のあるクラスに”含める”ことができます。 それらの方法をぶら下げ続ける必要はありません。 以下は、あなたがそれをどのように書き出すかの短い例です:これで、両方のクラスがice_creaminclude

Load

includeは別のRubyクラスのuse機能を使用する方法を示していますが、loadrequireは、ファイルの先頭にいくつかの余分な行を追加するだけで、プログラムが懸念事項を分離できるようにしSoCの基本的な考え方は、プログラムの側面を沸騰させて、実際には1つのことしかしないようにすることです。 これは、メソッドと関数が一つのことだけを行うようにコードをリファクタリングするときに行います。 同じことが私たちのファイルにも当てはまります。loadloadloadloadは、ファイルがロードされる回数により、アプリのパフォーマンスに悪影響を及ぼす可能性があります。

Require

Requireはloadとよく似ていますが、主な違いは、requireは渡されたファイルを一度だけロードし、ファイルがロードされたことを覚 このため、プログラムやアプリケーションでサードパーティのライブラリを使用している場合は、requireがより一般的なオプションです。 ちょっと待って、サードパーティの図書館? それらは…宝石のように聞こえる! そうだ! ディレクトリにgemをインストールするか、Gemfileで指定すると、そのgemの機能を使用してファイルの先頭にそのgemを”要求”するだけです。 それはケーキの一部です。今、私は知っているrequire$LOAD_PATH。P>

$LOAD_PATHはRubyに付属のグローバル変数です。 端末からIRBをロードして$LOAD_PATHと入力すると、次のようなものが得られます。


これは単なる絶対パスの配列です。 また、gemをインストールすると、Rubyはこれらのgemライブラリの絶対パスを$LOAD_PATHに追加します。 それは正しいより理にかなっていますか? Rubyは、require$LOAD_PATHに格納するための絶対パスが既にあるためです。私はこの投稿を、なぜこれらのメソッドを使用するのか、そしてそれらが私たちがより良い開発者になるのを助ける方法をもっと探求する手段とし これらの方法がどのように機能するかに興味がある場合は、追加の研究が必要な場合があります。