0

私の質問は Bash と PowerShell スクリプトを念頭に置いていますが、他の言語にも当てはまると思います。

関数の目的は、同じ (または非常に類似した) タスクを複数回実行することだと理解しています。これにより、スクリプト内のコードの量が減り、保守も容易になります。

それを念頭に置いて、スクリプトが関数を 1 回だけ呼び出すことがわかった場合、その関数が functionとして存在する理由はありません。代わりに、関数のコードを取得して、その関数が呼び出されている場所に配置する必要があります。

それをすべて言ったので、ここに私の質問があります:

複雑なスクリプトがある場合、各関数が 1 回しか呼び出されない場合でも、コードの各セクションを独自の関数に移動する必要がありますか? これにより、スクリプトの読みやすさが大幅に向上します。これは、そのロジック (関数) がすべてスクリプトの上部にあり、実行の流れがスクリプトの下部にあるためです。50 行のコードが 1 行で表されるため、スクリプトが何を行っているかを理解しやすくなります。

他の人はこれをしますか?このアプローチには欠点がありますか?

4

7 に答える 7

1

コードの可読性は確かに主要な関心事であり、通常 (最近では) コードの量やパフォーマンスよりも重要です。インライン化された関数呼び出しが必ずしも顕著なパフォーマンス上の利点をもたらすとは限らないことは言うまでもありません (非常に言語固有です)。

そのため、多くの開発者(私は、品種の良い方だと思います:-)は、コードを論理的にまとまりのある部分に分割するために、あなたが説明したような小さな関数/メソッドを作成します。

于 2011-01-06T17:33:43.713 に答える
1

関数を持つことで読みやすさも向上します。そのため、bash スクリプトは、次のようにすると見栄えがよくなり、従うのが簡単になる場合があります。

getParams()

startTask()

doSomethingElse()

finishTask()

# implement functions below

関数の実装が単純であっても、読みやすくなります。

于 2011-01-06T17:33:59.897 に答える
0

関数の目的は、同じ (または非常に類似した) タスクを複数回実行することだと理解しています。

関数は、明確に定義された特定のタスクを実行する個別のエンティティであると理解しています。

それを念頭に置いて、スクリプトが特定の関数を少なくとも 1 回呼び出すことがわかった場合、スクリプトはその役割を果たしています。

于 2011-01-06T17:33:35.870 に答える
0

関数は明確に定義されたタスクを実行します。5 つの異なることを行うメガ関数がある場合は、5 つの小さな関数を呼び出す必要があることを強くお勧めします。

于 2011-01-06T17:33:01.623 に答える
0

この本を読む

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

以下、本からの引用です。

「小さい! 関数の第 1 のルールは、小さいことです。関数の第 2 のルールは、それよりも小さいことです。」

「関数は 1 つのことを行う必要があります。それを適切に行う必要があります。それのみを行う必要があります。」

于 2011-01-06T17:36:46.713 に答える
0

コードを読んで簡単に理解できるようになることに集中してください。

明確で読みやすいコードを持つことは、関数呼び出しのオーバーヘッドを恐れるよりも確実にメリットがあります。それは時期尚早の最適化です。

さらに、機能の目的は、特定のタスクを達成することです。タスクはサブタスクになることができますが、それで問題はありません!

于 2011-01-06T17:37:52.610 に答える
0

私の知る限り、関数はより大きなプログラムの一部となる一連のステップを表します。あなたの質問に来て、関数が読みやすさと再利用性を向上させることに強く同意します。しかし同時に、すべてのものをバラバラにすることは良い習慣ではないかもしれません。最後に、「過剰は何の役にも立たない」ということを 1 つ述べておきたいと思います。

于 2011-01-06T17:49:54.790 に答える