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

这种做法绝对没有任何问题。您的代码有一些小的奇怪之处,但在两个函数中使用相同的变量名不是其中之一。

于 2013-02-14T20:11:45.557 回答
1

他可能的意思是,如果您在类函数和类本身中使用相同的变量名,这是“危险的”,因为这会导致错误。但这不是这里的情况,代码很好。

于 2013-02-14T20:15:29.597 回答
1

代码中更危险的做法是,您std::cin从不检查是否有任何读取失败的情况下进行读取。如果有的话,你将在无限的等待中qt成为'q'

此外,能够使用只是cout表明您可能有一个不推荐的做法using namespace std;Three.h(也许它只有using std::cout;你明确限定std::cin?)

于 2013-02-14T20:17:00.390 回答
0

可以这样做。但请记住给变量起更好的名称。例如,重命名widWidth. 通常我更喜欢将函数的输入参数写为in_Width. 这样我们就知道它是当前函数的输入。当您开始编写大型项目时,这些事情将很重要。:) 总是尝试有好的做法。

打字时需要时间。但是在审查或调试方面,它可以为您省去很多麻烦。另一方面,它没有其他明显的缺点。

于 2013-02-14T20:16:23.710 回答