Lua 関数のコントラクトを明確にする方法を探しています。特に、パラメータが持つべき属性。
私の問題を説明するために、現在のコードの典型的な構造を持ついくつかのコード スニペットを示します。2 つのパブリック関数で新しい「インスタンス」を構築する関数。
local function newTextPrinter(color)
return {
print = function(textToPrint)
PrintText(textToPrint, 20, color, 5, 'center');
end,
printBig = function(textToPrint)
PrintText(textToPrint, 30, color, 5, 'center');
end
}
end
同じシグネチャ (またはスーパーセット) を持つと想定されるパラメーターを受け取る関数。
local function printSomeStuff(textPrinter)
textPrinter.print("some")
textPrinter.printBig("stuff")
end
後の関数の呼び出し
local textPrinter = newTextPrinter("ffffffff")
printSomeStuff(textPrinter)
このコードの問題は、 の実装を見ないと、 にtextPrinter
提供されたパラメータがどのように見えるべきかを判断できないことです。この例では簡単に実行できますが、多くの場合、そうではありません (私のシナリオでは、ファイル間のホッピングを強制します)。名前の類似性を除けば、を介して適切な値を取得できるというヒントもありません。printSomeStuff
printSomeStuff
newTextPrinter
コードをより自己文書化し、作成者の意図をより明確にする方法はありますか?
私は軽量で、クラスベースの継承をエミュレートしようとしないアプローチを好みます。同様に、ドキュメンテーションよりもコードが好まれ、そうでない場合は、フリー フォームよりもツールが理解できる形式のドキュメンテーションが好まれます。textPrinter
明らかに、「パラメーターのニーズprint
とパブリック関数」のようなコメントを書くことができますprintBig
が、ドキュメントで犯した間違いについて何も教えてくれなかったり、コードをリファクタリングして更新するのを忘れたりすると、非常にエラーが発生しやすくなります。
私はLua 5.0を使用していますが、この言語にはまったく慣れていません。