ここにあなたの考えを聞きたいプログラミング/言語の問題があります。
私たちは、ほとんどのプログラマーが従うべき規約を開発しました。これは言語構文の一部ではありませんが、コードを読みやすくするのに役立ちます。もちろん、これらは常に議論の問題ですが、ほとんどのプログラマーが同意すると思う少なくともいくつかのコア概念があります。変数に適切な名前を付け、一般的な名前を付け、極端に長くならないように行を作成し、長い関数、カプセル化などを避けます。
しかし、まだコメントしている人がいないという問題があり、それが最大の問題かもしれません。関数を呼び出すときに引数が匿名になるという問題です。
関数は数学に由来しますが、f(x)には明確な意味があります。これは、関数にはプログラミングで通常行われるより厳密な定義があるためです。数学の純粋な関数は、プログラミングの場合よりもはるかに少ないことができ、はるかに洗練されたツールです。通常、1つの引数(通常は数値)のみを受け取り、常に1つの値(通常は数値)を返します。関数が複数の引数を取る場合、それらはほとんどの場合、関数のドメインの単なる余分な次元です。つまり、1つの引数は他の引数よりも重要ではありません。確かに明示的に順序付けされていますが、それ以外には意味の順序付けはありません。
しかし、プログラミングでは、関数を定義する自由度が高くなります。この場合、それは良いことではないと主張します。一般的な状況では、このように定義された関数があります
func DrawRectangleClipped (rectToDraw, fillColor, clippingRect) {}
定義を見ると、関数が正しく記述されていれば、何が何であるかは完全に明確です。関数を呼び出すとき、IDE /エディターで次の引数がどうあるべきかを伝えるインテリセンス/コード補完のマジックを持っているかもしれません。ちょっと待って。実際に通話を作成しているときに必要な場合、ここで不足しているものはありませんか?コードを読んでいる人にはIDEの利点がなく、定義にジャンプしない限り、引数として渡された2つの長方形のどちらが何に使用されるかわかりません。
問題はそれ以上です。引数がローカル変数に由来する場合、変数名のみが表示されるため、2番目の引数が何であるかさえわからない状況があります。たとえば、次のコード行を見てください
DrawRectangleClipped(deserializedArray[0], deserializedArray[1], deserializedArray[2])
これはさまざまな言語でさまざまな程度に緩和されますが、厳密に型指定された言語でさえ、変数に適切な名前を付けたとしても、関数に渡すときの変数の型については言及しません。
通常はプログラミングの場合と同様に、この問題には多くの解決策があります。多くはすでに一般的な言語で実装されています。たとえば、C#の名前付きパラメーター。しかし、私が知っているすべてには重大な欠点があります。すべての関数呼び出しですべてのパラメーターに名前を付けると、コードが読みやすくなる可能性はありません。多分、プレーンテキストプログラミングが提供する可能性を超えているように感じます。ほとんどすべての領域でJUSTテキストから移動しましたが、まだ同じコードを使用しています。コードに表示するためにより多くの情報が必要ですか?テキストを追加します。とにかく、これは少し接線になっているので、ここで停止します。
2番目のコードスニペットに答えた1つの回答は、おそらく最初にいくつかの名前付き変数に配列をアンパックしてから使用するでしょうが、変数の名前は多くのことを意味する可能性があり、呼び出される方法は必ずしもあなたがするべき方法を教えてくれません呼び出された関数のコンテキストで解釈されます。ローカルスコープには、leftRectangleとrightRectangleという名前の2つの四角形があります。これは、それらが意味的に表すものであるが、関数に与えられたときに表すものに拡張する必要がないためです。
実際、呼び出された関数のコンテキストで変数に名前が付けられている場合、その関数呼び出しで潜在的に可能な情報よりも少ない情報を導入しており、コードが悪いコードになる場合があります。rectForClippingに格納する四角形を作成するプロシージャと、rectForDrawingを提供する別のプロシージャがある場合、DrawRectangleClippedへの実際の呼び出しは単なるセレモニーです。新しいことは何も意味せず、ネーミングで既に説明しているにもかかわらず、コンピューターがまさにあなたが望むものを正確に知っているように存在する行。これは良いことではありません。
私はこれについて新鮮な視点を聞きたいです。私はこれを問題と考える最初の人ではないと確信していますが、どのように解決しますか?