我一直在关注这个Symfony教程。在某些部分中,它只是告诉我在public function
中添加class
,但它没有说我是否应该在课程的开头或结尾添加它。
例如:
/**
* JobeetCategory
*
* This class has been auto-generated by the Doctrine ORM Framework
*
* @package jobeet
* @subpackage model
* @author Your name here
* @version SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
*/
class JobeetCategory extends BaseJobeetCategory
{
public function countActiveJobs()
{
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.category_id = ?', $this->getId());
return Doctrine_Core::getTable('JobeetJob')->countActiveJobs($q);
}
public function getSlug()
{
return Jobeet::slugify($this->getName());
}
public function getActiveJobs($max = 10)
{
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.category_id = ?', $this->getId())
->limit($max);
return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
}
}
getActiveJObs
公共函数是本教程中的第一个,countActiveJobs
是我根据教程添加的最后一个函数。
班级内公共职能的顺序是否重要?
答案 0 :(得分:18)
班级内公共职能的顺序是否重要?
不,它没有。该课程作为一个整体进行评估;方法的顺序无关紧要。
所以虽然它没有任何约束力,但我遇到的最常见的订单,以及我最喜欢的订购方法是,
class ClassName
{
- Variable definitions
- Class constants
- Constructor
- Public methods
- Destructor (if needed)
- Magic functions (if needed)
- Private / helper methods
}
答案 1 :(得分:1)
这是一个有许多答案的问题,而且很多是关于个人偏好的问题:-)从技术上讲,这可能无关紧要,但它确实很重要。
这是结构的一个建议。想象一下你第一次来上课。也许你正在调用它的公共方法来执行某些任务,现在你想了解更多关于它的信息。从顶部的公共变量和函数开始似乎很自然。从抽象的角度考虑它。更高层次的抽象在课堂上很高。下降越往下,抽象级别越低。因此,从顶层的公共函数开始,最终会在底部显示一堆私有函数。这将提高可读性。
同时我们希望其他函数调用的函数接近,所以第一次调用函数时,将它放在调用函数下面。
有些练习将实例变量放在使用它的函数的正上方,但这会使类更难阅读。特别是,如果有多个函数使用相同的实例变量,您将不知道要查看。通常,将所有常量和实例变量放在顶部。
然后我们应该得到这样的结论:
class MyClass
{
const MY_CONSTANT_ONE
const MY_CONSTANT_TWO
public $myPublicVariableONe
public $myPublicVariableTwo
protected $_myProtectedVariableOne
private $_myPrivateVariableOne
private $_myPrivateVariableTwo
public function DoSomeOfficialStuff()
{
$this->_myNicePrivateMethodOne();
}
private myNicePrivateMethodOne(){
}
public function returnSomeOfficialStuff()
{
$this->_myNicePrivateMethodTwo();
}
myNicePrivateMethodTwo(){
}
}
答案 2 :(得分:0)
答案没有。这些函数将在其他地方调用,而不是从上到下执行。 countActiveJobs是在课堂顶部还是在底部,这没有任何区别。