1

私はただ疑問に思っています-比較的単純なタスクのために関数(分解)を作成するのは悪いプログラミングスタイルですか?

たとえば、PHPでは、セッション、投稿、取得、およびCookieに「$_」と大文字を使用するのは面倒です。したがって、セッション変数を作成するsetSesVar('key'、'value')という関数を作成した場合、それは悪いことですか?そして、毎回その関数を呼び出すオーバーヘッドは価値がありますか?それとも無関係/自分の好みですか?

他のいくつかの例:

  • c ++(およびjava)のprintLn関数
  • JavascriptでのgetElementBydIdの省略形(jQueryまたは別のライブラリを使用しないと仮定)
  • PHPのheader('Location:' .url)の代わりにリダイレクトする

そして、少し話題から外れた質問です。私は、より「厳密な」配列を持つ言語に慣れています。PHPでは、myArray [] ='newElement'と言うだけで、最後の購入に要素を追加できます。myArray [sizeof(myArray)]を実行する必要があるように感じますが、不必要なコードを追加するのはおそらく悪いスタイルだと思います。

4

3 に答える 3

1

名前が十分に冗長でない場合にのみ、名前が短すぎると、将来のメンテナのために意図せずにコードを難読化することになります。一方、それらが十分に冗長である場合、半分の時間で元のコードを使用する方が速くなります。「余分な」入力を避けるために過度に短い関数名を使用している場合、分解は悪い考えにすぎないと思います。

于 2012-04-07T03:35:56.100 に答える
1

関数が何をするか、そしてあなたがこれをどれだけやっているかに依存します。すべてを取り出して1行の関数を作成する場合、複雑さを実際に取り除くことはできません。実際、次の2つの方法で複雑さが増しています。

  • まず、PHPに組み込まれていないものはすべて、コードを初めて使用する人が理解する必要があります。私が見れば$_SESSION['stuff'] = "some value";、私はそれが何をしているのかを知っています-PHPで1時間以上過ごした人は誰でもそうです。一方、私が見た場合setSessionVar('stuff', 'some value');、私は行って何をするかを確認する必要がsetSessionVarあります。つまり、単に何かを設定する以上のことをしなければなりません$_SESSION。そうでなければ、なぜそれをしないのです

  • 第二に、これらの関数が互いに呼び出し合うことになった場合、あなたはラットの関数呼び出しの巣になってしまいます。別の2を呼び出す場合と呼び出さない場合があるこの他の2行関数全体を呼び出すこの他の2行関数を呼び出す2行関数をトレースするよりも、10(または30)行関数をたどる方が簡単です。 -ライン機能。コードをたどるには、ファイルをヨーヨーする必要があります(さらに悪いことに、多数の異なるファイル間をタブで移動する必要があります)。

私の意見では、PHPに組み込まれているもの(1行の単純なコードで表現できるもの)は、それ自体の機能に値するものではありません。1つの例外を除いて、関数を少なくとも3行に制限することをお勧めします。たとえば、ゲッターやセッターなど、オブジェクトの内部へのアクセスを必要とするメソッドは小さくすることができます。しかし、ほとんどの関数は、PHPがまだ簡単に実行できないことを実行する必要があります。そうでない場合は、正当な理由もなく、関数の目的を無効にし、複雑さを追加していることになります。

于 2012-04-07T05:03:33.703 に答える
0

状況次第だと思います。これらの関数をどこに配置しますか?主なことは、これらをすべてのクラスで複製する場合、それはおそらく悪い考えです。あなたがそれらをいくつかのutilsクラスに入れているなら、その目的はおそらくとにかく打ち負かされるでしょう:

System.out.println(" ... "); vs MyUtils.println(" ... ");

本当に意味がありません。(他の人と同じ)

于 2012-04-07T03:37:24.083 に答える