1

以下に、悪いプログラミングの例をいくつか示します。目的は、コードが何をしているかを知り、より良いコードに書き直すことです。

q
(出典:gyazo.com

q
(出典:gyazo.com

私がやろうとしているのは、それをそのまま入力し、コンパイルして、何をしているのかを理解しようとすることです。しかし、私はほとんど進歩していません。これは試験問題なので、これを理解しようとして何年も費やす余裕はありませんが、同時に完全な問題でもあります。

これらのコードは何をしていて、どうすればそれらを (より速く) 把握できますか?

ありがとうございました。

編集:私はコードを求めていません。コードの説明を求めています。だから私は本当にスニペットを与えることはできません。

4

3 に答える 3

1

コードが何をしているかを理解したら、変数名と関数名を変更するだけです。終わり。この場合、「悪いプログラミング」は、変数自体の目的を明示していない変数に貧弱な名前を使用しています。

編集: あなたの割り当ての 2 番目のタスクは です。rewrite it in better code.それが演習の美しさです。アルゴリズムを精神的に「実行」するまで、何が起こっているのかを知ることは困難です。より良い名前を付けると、コードの品質が向上します。より適切な名前を付けることで、潜在的なバグがあるかどうかを示すことができます。

例:

// bad code
int f(int a, int b){
  return a < b ? a : b;
}

// better code
int min(int a, int b){
  return a < b ? a : b;
}

// what? there must be a bug
int max(int a, int b){
  return a < b ? a : b;
}
于 2013-04-17T15:01:57.853 に答える
1

これらは非常に基本的で素晴らしいコードです。紙の上でコードの予行演習を行うだけで、コードが何をしているかについて簡単に答えが得られます。item同様に、B では、まで同じ値の配列を作成していますb != -1。同様に、いくつかの値を想定して紙に解き、適切な線とインデントで書き直します。

于 2013-04-17T14:59:06.940 に答える
1

重要なのは、もっと練習する (そして新しい概念を学ぶ) ことです。練習すればするほど、触れるコードの種類が増えます。そのようなことは、初心者には非常に複雑に見えるかもしれません [私が最初に見た C コードでは、なぜ*変数名の前に乗算があるのか​​ 疑問に思っていましたint * a;) ]

この ような混乱を解消するために使用できる多くの良い参考文献があります

于 2013-04-17T15:05:59.277 に答える