私は通常、エラー (または警告)メッセージ識別子に対して次のパターンに従います。括弧内のものが存在する場合と存在しない場合があります。
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
コンポーネントは次のとおりです。
className
: エラーが発生した関数がメソッド/コンストラクターの場合、クラスの名前。
parentFunction
: エラーが発生した関数が m ファイルまたは入れ子関数のサブ関数である場合、これはそれぞれプライマリ m ファイル関数または入れ子関数の親になります。したがって、複数のコンポーネントを持つことができます。parentFunction
functionWhereErrorOccurs
: このコンポーネントの名前は一目瞭然です。;)
descriptiveMnemonic
:説明を強調します。たとえば、inputError
実際には何も教えてくれませんが、notEnoughInputs
十分な引数を渡さなかったことが明らかになります。ニーモニックには常に小文字のキャメル ケースを使用します。最初の単語を除いて、単語の最初の文字は大文字になります。
クラスのプロパティが親 m-file への完全なパスとエラーの行番号をすでに識別しているため、 コンポーネントclassName
とparentFunction
コンポーネントは多少冗長であると見なすことができます。ただし、メッセージ識別子の目的の 1 つは、エラーの原因を突き止める以外の目的でエラーを一意に識別できるようにすることです。stack
MException
をオーバーロードする関数myFcn
とクラスがあるとします。最初のエラー メッセージ ID を に、2 番目のエラー メッセージ ID を にすると、たとえば、DBSTOPでブレークポイントを設定して、このエラーが によって生成され、 ではなくによって生成された場合にのみ実行を停止することができます。同様に、一意の警告メッセージ識別子は、特定の機能からの警告を無視し、他の機能を表示させるように明確に選択できるという点で便利です。myClass
myFcn
myFcn:maxIterationsReached
myClass:myFcn:maxIterationsReached
myClass\myFcn
myFcn
さらに、エラーが発生した関数がパッケージ フォルダーまたはプライベート フォルダーにあることを示すコンポーネントを識別子に含めることもできます(ただし、かなり長い識別子になる可能性があります)。