我见过的每个编码标准都对一行中的字符数有建议或绝对限制。在这个限制范围内有各种各样的工作方式,但我没有看到这方面的任何具体指导。
显然,如果可能的话,不要写太长的行。
但是,如果这不实用呢?如何处理长线?
以下是几个例子
if ($Stmt = $Mysqli->prepare("SELECT color, pattern, size,
manufacturer, mfgSku, storeLocation,
aisle, status
FROM tblItems WHERE ourSku = ?")) {
或
$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough',
'chocolate chip', 'mint chocolate chip', 'rocky road',
'peach', 'fudge brownie', 'coffee', 'mocha chip');
或
$Stmt->bind_result( $this->_firstName,
$this->_lastName,
$this->_BillToAddress->address1,
$this->_BillToAddress->address2,
$this->_BillToAddress->city,
$this->_BillToAddress->state,
$this->_BillToAddress->zip,
$this->_BillToAddress->country,
$this->_email,
$this->_status,
$this->_primaryPhone,
$this->_mobilePhone );
在每个示例中,冗长代码的缩进是不同的。这样做有更好或更“标准”的方式吗?额外的行总是应该以相同的方式缩进。或者这样可以吗?
答案 0 :(得分:11)
在每个示例中都可以看到一种模式 - 它们缩进到函数的第一个参数。这是一个很好的标准,因为它将数据从水平转换为垂直,并且列允许轻松阅读。
对于其他行长度问题,例如冗长的计算,首选方法是将其分解。计算朱利安日期或复活节是分几步而不是一次长计算。
答案 1 :(得分:11)
我个人的偏好如下;
$Stmt->bind_result( $this->_firstName, $this->_lastName, $this->_BillToAddress->address1, $this->_BillToAddress->address2, $this->_BillToAddress->city, $this->_BillToAddress->state, $this->_BillToAddress->zip, $this->_BillToAddress->country, $this->_email, $this->_status, $this->_primaryPhone, $this->_mobilePhone );
这样,右括号和分号与开始调用在同一个缩进上。并非所有语言都支持在方法调用的另一行上使用参数...
答案 2 :(得分:6)
上下文决定了你选择哪一个。最终,你正在编写代码以供人类阅读。如果以不同的方式缩进代码块会使其更容易阅读,那就去做吧。
答案 3 :(得分:5)
在进行大量SQL工作时,我发现自己很容易进行一种不寻常的缩进风格;
INSERT INTO someTable
(
id,
name,
age,
address1,
address2,
)
VALUES
(
2,
'Bob'
25,
'12 Fake Street',
'The Moon'
)
我实际上发现它比长参数列表的任何其他布局更容易阅读。
答案 4 :(得分:4)
门号3.如果你不能在一行上做,每个项目在一行上做,其他任何事情都会在第一行之后混淆这些项目并且阅读起来很糟糕。一致的缩进也很重要。
Fwiw,我认为在大多数程序员应该拥有高分辨率的双显示器的时代,这是老式的。第一个例子看起来很可能是一行。
答案 5 :(得分:3)
我不认为人们应该故意排长队,但冒着很多冒犯的风险,我建议线路长度真的不再那么重要了。
Vim和emacs很好地处理长线,它们几乎安装在每个Unix机器上。在Windows上,您几乎总是在GUI文本编辑器中。我认为你的$Stmt->bind_result
样式是最容易阅读的,但是如果你只需要在一个语句中加载一堆主要是静态的信息,我对1000字符行没有问题。
答案 6 :(得分:1)
这非常主观,很像括号的位置和其他编码风格。最重要的不是你选择哪种风格,而是你选择一种风格,并在整个项目中坚持使用它。
就我个人而言,来自Python背景,我使用的是79行和
的行长$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough',
'chocolate chip', 'mint chocolate chip', 'rocky road',
'peach', 'fudge brownie', 'coffee', 'mocha chip');
式。
但正如我所说,在我看来,拥有一种风格更重要,而不是担心哪种风格。
答案 7 :(得分:1)
在散文中,超过80左右的行已被证明更难阅读。 (请参阅LaTeX Memoir课程documentation的第13页。)代码完成(我的版本的第425节,第425页)也引用了此字条的80个字符限制:
对于大屏幕,窄字体,激光打印机和横向模式,80个字符限制的参数并不像我们习惯的那样引人注目。单个90个字符长的行通常比已经被破坏的行更易读,只是为了避免溢出80列。使用现代技术,偶尔可能超过80列。
我会在第一个示例中将SQL与其余代码分开缩进:
if ($Stmt = $Mysqli->prepare(
"SELECT color, pattern, size,
manufacturer, mfgSku, storeLocation,
aisle, status
FROM tblItems
WHERE ourSku = ?")) {
第二个示例如果被加载到配置文件或表中可能会更好。
第三种情况很好,但你可以稍微收紧一下:
$Stmt->bind_result(
$this->_firstName,
$this->_lastName,
$this->_BillToAddress->address1,
$this->_BillToAddress->address2,
$this->_BillToAddress->city,
$this->_BillToAddress->state,
$this->_BillToAddress->zip,
$this->_BillToAddress->country,
$this->_email,
$this->_status,
$this->_primaryPhone,
$this->_mobilePhone
);
答案 8 :(得分:1)
如果您要包装两个以上的项目,我更喜欢每个项目的新行,如第三个示例中所示。如果每行只有一个项目,自动源控制工具可以更容易地合并其他人的编辑。
答案 9 :(得分:1)
遵循周围代码使用的标准。不管创造多少“更好”,都不要创建自己的“标准”。
答案 10 :(得分:0)
我不知道任何标准,因为很难说。对于我们这些大型显示器的用户,我们可以在较小的显示器上查看比其他更多的水平代码。我通常会尝试在必要时通过。=(PHP)顺序构建长字符串,并且正如您的代码所示,我根据该特定行中存在多少个字符,将任意长数组任意分割到新行上。
答案 11 :(得分:0)
我不介意选项3太多(每行1项)。另外,就个人而言,我总是使用wordwrapping,因此在一行上使用代码根本不会打扰我。但是,在你的第二个例子中,使用wordwrapping,对于使用wordwrapping的程序员来说,这看起来很麻烦。也许我是一个不介意长队的小团体。
答案 12 :(得分:0)
最佳做法通常源于行长限制本身背后的目的:
因此,您的选择(例如调整所有stmt参数)如果它们对您自己的未来理解以及团队中其他人的理解都有贡献,那么这些选择是很好的。
希望这会有所帮助;)-M
答案 13 :(得分:0)