2011-08-29 87 views
1

我已经编程了很多年,但主要是在行业之外。我想尽一切努力来清理我的编程风格。编程风格:何时添加变量?

我一直在重新思考一些基本的想法,这是一个 - 什么时候添加变量与合并/根据需要使用现有变量是否合适?

显然,如果有一个中间值需要重新使用,这将是一个很好的理由添加一个变量。但是,当我为了可读性而添加变量时,选择并不明确。例如,在C++中,我可能有一个变量,它看起来像:

std::vector<std::map<char, float> > frequencies; 

如果我遍历它,我可以访问的东西值,就像这样:

x = frequencies[i]['c'] 

我也可以介绍临时变量:

std::map<char, float> curr_freq = frequencies[i]; 
x = curr_freq['c']; 

这是一个相当简单的例子,但是你能想象更为复杂的嵌套结构。我发现我没有选择一个或另一个的原则性基础,当事情开始变得难以理解时,我会添加变量,否则不会,因为我没有这些决策的基础,我的代码很可能看起来不太一致。是否有一个更有原则的基础来决定什么时候增加变量是合适的?

+0

我会更进一步并命名类型。 'typedef std :: vector > frequencies_t'。然后只声明'频率_频率'。然后最后'const frequencies_t :: value_type&curr_freq =频率[i]'。如果有必要,可以更容易地更换容器。 (由于'auto',这对C++ 0x来说稍微有用,但是我个人觉得它更易于阅读......) – Nemo

回答

0

什么增加了代码的可读性是你应该做的。

其他人可能需要维护您的代码。

而且,更重要的是,您可能需要维护您的代码。

0

不存在 如果它是一个解释器语言,并且有一个简单的getter(我通常会避免),那么我会使用一个变量来防止在运行时发生额外的闭包。

在C中,你需要在函数顶部定义变量,所以我会尽量保持它的最小值。在foreach($ items = $ i)或者foreach($ items = $ k => $ v)或者foreach(Object o:objectsArray)会全部创建的时候,你可以使用局部变量,只要代码是可读的,我就可以避免使用额外的变量,但是它也可以再次使用取决于语言,我会建议 - 使用OOP,简短的方法/函数和添加注释,以便代码保持可读性,并且只使用更多的变量,以便在需要时使其更易读。最重要的 - 确保其他人可以理解你的代码,多数民众赞成你如何知道你都很好

1

我n您的具体情况,该行:

std::map<char, float> curr_freq = frequencies[i]; 

实际上将复制存储在frequencies[i]map创建一个新的map对象。既然你只想索引你的容器,那么做所有这些额外的拷贝似乎是浪费的。

如果你想引入一个临时变量(使代码更易读等),但不希望创建额外的开销,你可以只抓住一个指针/引用到你的数据结构:

std::map<char, float> &curr_freq = frequencies[i]; // grab reference, not a copy 
float x = curr_freq['c']; 

一般来说,通过使用描述性临时变量等,尽可能使代码尽可能易读是很好的做法。通过使用引用/指针等,您通常可以在不增加额外成本的情况下执行此操作。

希望这会有所帮助。

+0

感谢您的更正。仍然在学习C++习语... – jda

+1

在这种情况下,也可以使它成为'const'参考。 – Nemo

+0

@Nemo,这是不可能的,因为通过operator []访问地图可以修改地图。 – Mankarse

2

我使用了几条简单线条而不是一条COMPLEX线条。