パッケージを作成する場合use
、使用するパッケージが変更された場合に問題が発生する可能性のある微妙な方法がいくつかあります。
まず、パッケージは今後さらに多くのシンボルをエクスポートする可能性があります。たとえば、パッケージが新しいシンボルlibrary:rhombus
をエクスポートし、すでにそれを使用しmyapp::rhombus
て名前を付けている場合、継承されたシンボルを突然使用し、可能なすべての添付ファイル (クラス、defun、マクロなど) を使用することになり、奇妙な結果になることがあります。修飾されたシンボル名を使用すると、必要なシンボルより多くも少なくも得られません。
第 2 に、パッケージは将来的にシンボルのエクスポートを停止する可能性があります。したがって、たとえば がlibrary:with-rhombus
消えると、 への呼び出しは、問題の原因である「欠落」シンボルを直接指すものではなく(with-rhombus (42 42 42) ...)
、無効な関数呼び出しのエラーを突然受け取ります。修飾されたシンボル名を使用すると、より明確な(42 ...)
行に沿ってエラーが発生します。Symbol WITH-RHOMBUS is not exported from the LIBRARY package
シンボルのインポート (:import-from
または:shadowing-import-from
またはを使用import
) には、問題がないわけではありません。インポートは、外部かどうかに関係なく、任意のシンボルで機能します。そのため、シンボルが現在 である場合library::rhombus
、つまり、もはや公共の消費を目的としていない場合がありますが、インポートは引き続きエラーなしで機能します。
どのオプションを使用するかは、ソース パッケージに対する快適さのレベルによって異なります。あなたはそれを管理していますか? また、完全なテストを行わずに競合する変更を加えることはありませんか? 先に進んで、心ゆくまでインポートまたは使用してください。それ以外の場合は、ライブラリ パッケージ インターフェイスの変更に伴う意図しない副作用のチェックに注意してください。