我的C++教科书中提到,同时声明变量和类型声明通常是不好的做法,如下所示:
struct fullName{ string firstName; string middleName; string lastName;} examplePerson1, examplePerson2;
struct fullName
{
string firstName;
string middleName;
string lastName;
} examplePerson1, examplePerson2;
对我来说,这似乎更合理,因为它的简洁性和替代方法,但我也还在学习,所以如果有人能详细说明,我将非常感激,因为教科书没有。
y3bcpkx11#
如果你的教科书没有给出任何理由,那它就不是一本很好的教科书,我不建议你从表面上看它说了什么。我不明白为什么这会是一个糟糕的做法。这样做实际上可以(主观警告)被用作一个稍微有用的提示,即该类型可能只被那些变量/数据成员使用(强调“提示”,因为结构/类 * 仍然可以 * 用于声明其类型的其他变量)。请注意,如果你像这样声明 * 多个 * 变量,它确实违反了C核心准则:ES.10:每项宣布(仅)宣布一个名称,但该准则的理由是:每行一个声明增加了可读性,避免了与C/C语法相关的错误。它还为更具描述性的行尾注解留出了空间。例子,不好
char *p, c, a[7], *pp[7], **aa[10]; // yuck!
我要说的是,可读性的观点在这种情况下是有争议的,C语法错误的观点并不总是适用的(你可以小心),行尾注解的观点可能适用,但只有当你真的想为该类型的每个变量写注解描述时。还要考虑一下C核心指南的一些作者写了关于https://isocpp.org/wiki/faq/coding-standards编码标准的警告。
1条答案
按热度按时间y3bcpkx11#
如果你的教科书没有给出任何理由,那它就不是一本很好的教科书,我不建议你从表面上看它说了什么。我不明白为什么这会是一个糟糕的做法。
这样做实际上可以(主观警告)被用作一个稍微有用的提示,即该类型可能只被那些变量/数据成员使用(强调“提示”,因为结构/类 * 仍然可以 * 用于声明其类型的其他变量)。
请注意,如果你像这样声明 * 多个 * 变量,它确实违反了C核心准则:ES.10:每项宣布(仅)宣布一个名称,但该准则的理由是:
每行一个声明增加了可读性,避免了与C/C语法相关的错误。它还为更具描述性的行尾注解留出了空间。
例子,不好
我要说的是,可读性的观点在这种情况下是有争议的,C语法错误的观点并不总是适用的(你可以小心),行尾注解的观点可能适用,但只有当你真的想为该类型的每个变量写注解描述时。还要考虑一下C核心指南的一些作者写了关于https://isocpp.org/wiki/faq/coding-standards编码标准的警告。