5

リフレクションを使用して静的メソッドをクラスに動的にバインドするスクリプトに、ほぼ同一の約 12 行のスクリプトをリファクタリングしました。

リファクタリングされたバージョンは、ここにありますここでリファクタリングする前に。

私の質問は次のとおりです。これは過剰に設計されているように見えますか? 明白な方法よりも悪い、実際にあるアカデミックなエレガンスを追求していますか? リファクタリングされた形式は、はるかに短く (約 70 行)、より「美しく」(定義された美の概念に対して) ですが、初心者のプログラマーにはまったく理解できない可能性があります。

4

5 に答える 5

2

「ナイーブ」アプローチの問題の1つは、保守性です。保守、デバッグ、およびテストの方法が12倍あります。それらすべてにパラメータを追加する必要があると想像してください...時間の経過とともに、メソッドは非常に似たものになりますが、完全に同じになるわけではありません。したがって、「複雑な」アプローチは時間とともに報われる可能性があります。

ちなみに、28の「ナイーブ」メソッドの1つにバグがあり、残りの27には存在しません:)

于 2012-10-30T04:37:41.690 に答える
1

私はあなたが言及した初心者レベルの下端にいるので、通常、私はこれらの質問に答えることを避けますが、あなたが言及したので... :)

特に、あなたが言及したワンライナーが少ないため、より「設計された」バージョンの方が消化しやすいと思います。2 番目のバージョンで何が起こっているかを理解するための概念的な飛躍は、私のような人 (これも超初心者) が従うのに少ししかかかりませんが、その部分が浸透すると、デザインの相対的な単純さ/優雅さ (およびより目に見えるグループ化)宣言されるメソッドの数) は、概念を理解するための追加の時間をはるかに上回ります。

繰り返しますが、私の意見は本当に重要な最後のものですが、他の誰かのコード (または自分自身のコード) を読んでいて、1 分後に「ああ、これは物事を行う良い方法だ」と思った場合 (「よし」ではなく) 、これを書いたとき、私は何を考えていましたか? また、どのように機能するのでしょうか?」)、適切な場所にあるように感じます (これが、私があなたの場所で終了した場所です)。

于 2012-10-30T04:48:12.213 に答える
1

コードは読みやすく、書きやすい (バグのない) ものでなければなりません。短いものは書くのは簡単ですが、理解するのは難しいです。

どちらかを選択する必要がある場合は、バグに遭遇する可能性が低いという理由だけで、短い方を選びます。それがどのように機能するかについて、おそらくそれが返すはずの例を含めて、大いにコメントしてください。可能であれば、繰り返しを最小限に抑えます。

于 2012-10-30T04:35:34.170 に答える
0

                                  シンプルさとエレガンスは、生産性と実践とのバランスを取る必要があります。

于 2012-10-30T04:41:43.353 に答える
0

私の意見は、コードをできるだけ単純かつ直接的に保つことです。つまり、初心者も専門家も同様に理解できるはずです。

あなたのコードがポイントに保たれていれば、初心者や中級のプログラマーでも簡単に変更したり拡張したりできます。修正する能力が「解決策」を進化させます。進化したソリューションは、優れたソリューションの例です:-)。

ちなみに、この質問はCode Review.SEに属していると思いますが、間違っている可能性があります。

于 2012-10-30T04:25:06.070 に答える