2016-03-03 99 views
1

对于刚刚开始的新项目,我认为坚持为我的代码使用styleguide可能是个好主意。我曾为自己定下了一种风格,但可以使用更多的结构,因为在我的项目之间有几件事情,甚至有时在项目中有所不同。PHP风格指南一致性

现在我已经看中了这个风格指南:http://www.php-fig.org/psr/psr-2/

的问题是,虽然,它说,行代码限制到80个字符,所以我成立了一个统治者在ST3该限制。我只是不确定在多行分解代码方面有什么好的做法。你如何拆分下面的代码(它已经缩进了8个空格)?

$this->errorMessage = (isset($this->errorDefinitions[$errorNo])) ? $this->errorDefinitions[$errorNo] : $errorMessage; 

或者倒不如通过放弃速记表达,只是写以符合指南:

if (isset($this->errorDefinitions[$errorNo])) { 
    $this->errorMessage = $this->errorDefinitions[$errorNo]; 
} else { 
    $this->errorMessage = $errorMessage; 
} 

没有什么关于这个主题的风格指南。任何人都可以指引我正确的方向,或者告诉我在哪里可以找到更多关于“正确”做法的信息。我意识到可能没有达成共识,但我想阅读你的意见。

回答

2

你可以打破你的速记跨越线路:

$this->errorMessage = isset($this->errorDefinitions[$errorNo]) 
    ? $this->errorDefinitions[$errorNo] 
    : $errorMessage; 

只要记住,速记三元陈述真棒......当他们是短期和简单!但是一旦你的条件变得更长,你只会让你的代码更难以阅读,理解和最终维护。这就是为什么PSR-2具有线路限制(部分)。

从我的角度来看,您的代码在模糊区域有点不合适。像上面那样打破它是可以的,但如果它更复杂(称为函数等),我会放弃速记并使用if

最终,这是你的号召,正如你指出的PSR-2在这个问题上没有着陆。

+0

非常感谢,现在我至少可以为自己辩解;-)我刚刚读到,PHP7实际上有一个'空合并运算符'(??),这将使这个声明更短,因为我运行这个项目放在一个带有PHP7的盒子上,我在考虑把这个特定的声明转换成这个。尽管如此,你的答案仍然对未来的案例非常有用。谢谢! –