2

私の仲間は、私が以下を実装した方法は危険な慣行であると私に言いました。メインメソッドと関数の変数に同じ名前を付けること。つまり、それが機能する限り、それでいいのではないですか? どのように別のことをしたでしょうか?

ありがとう。

#include <iostream>
#include <string>
#include <sstream>
#include "Three.h"

Three::Three(void)
{
}

Three::~Three(void)
{
}

void Three::rect (int& ar, int&vl, int len, int wid, int hgt)
{
    ar = (len * wid) * 2 + (len+wid) * 2 * hgt;
    vl = len * wid * hgt;
    cout << "Area is " << ar << " square feet that contains " << vl << " cubic feet." << endl;
}

char qt;

int main (int, char**) 
{
    int len = 0;
    int wid = 0;
    int hgt = 0;
    int ar = 0;
    int vl = 0;

    do
    {
        cout << "Length of House (ft): " << endl;
        std::cin >> len;
        cout << "Width of House (ft): " << endl;
        std::cin >> wid;
        cout << "Height of House (ft): " << endl;
        std::cin >> hgt;

        Three three;
        three.rect (ar, vl, len, wid, hgt);

        cout << "q, to quit" << endl; //My own quit statement
        std::cin >> qt;
    }
        while (qt != 'q'); 


}
4

5 に答える 5

7

それが機能する限り、それは大丈夫ではありませんか?一般的には良いマントラではありませんが(特に、一見機能しているように見える未定義の動作がたくさんあるC / C ++では)、この場合は何も問題はありません。

ローカル変数がグローバルなどを非表示にしている場合、混乱する可能性がありますが、ここではそのようなものではありません-渡される引数と同じ名前を持つパラメーターは混乱せず、まったく「危険」です。

于 2013-02-14T20:12:28.660 に答える
4

その慣行にはまったく問題はありません。コードにはいくつかの小さな奇妙な点がありますが、2つの関数で同じ変数名を使用することはそれらの1つではありません。

于 2013-02-14T20:11:45.557 に答える
1

彼はおそらく、クラス関数とクラス自体で同じ変数名を使用するとエラーが発生するため、「危険」であることを意味していました。ただし、ここではそうではなく、コードは問題ありません。

于 2013-02-14T20:15:29.597 に答える
1

コードでより危険な方法はstd::cin、読み取りが失敗したかどうかを確認せずに読み取ることです。qtもしそうなら、あなたは になるのを無限に待ってい'q'ます。

また、使用できるということは、推奨されない方法coutがある可能性があることを示唆しています。(おそらく、明示的に資格を与えているだけですか?)using namespace std;Three.husing std::cout;std::cin

于 2013-02-14T20:17:00.390 に答える
0

それは大丈夫です。ただし、変数にはより適切な名前を付けることを忘れないでください。たとえば、名前widをに変更しWidthます。通常、私は関数の入力パラメータをとして書き込むことを好みますin_Width。これにより、現在の関数への入力がわかります。これらのことは、大きなプロジェクトを書き始めるときに重要になります。:)常に良い習慣を持ってみてください。

入力するときは時間がかかります。ただし、レビューやデバッグに関しては、多くの問題から解放されます。一方、他に重大な短所はありません。

于 2013-02-14T20:16:23.710 に答える