我有这个过程,它是我创建的应用程序的心脏,但是由于某种原因,我觉得这是最糟糕的方法(本能),我想看看这个过程是否有问题,并且我以一种不好的方式接近它! ps。该代码工作正常,只是重构问题。
过程是:
用户访问首页,他们通过其他网站memebers(home.php)看到了他们的最新活动,
//function to bring the latest activities from database
$results=function getUserUpdates($_SESSION['user_id'];
while($row = mysql_fetch_array($results))
{
//another function to format the activities in a social stream
echo formatUpdate($row['user_note'],$row['dt'],$row['picture'],$row['username'],$row['id'],$row['reply_id'],$row['reply_name'],$row['votes_up'],$row['votes_down']);
}
我已经把功能代码粘贴了。
formatUpdate函数http://pastie.org/1213958
getUserUpdates函数http://pastie.org/1213962
EDIT这两个函数来自不同的文件,它们包含在home.php中,
从functions.php的formatUpdate
来自query.php的getUserUpdates
最佳答案
首先,我认为您的意思是:
$results = getUserUpdates($_SESSION['user_id']);
在您的
getUserUpdates()
函数中,有一个冗余分支:if ($username == $_SESSION['u_name']){
// return something
}
if ($username != $_SESSION['u_name']){
// return something else
}
您不需要第二个
if
语句,因为此时运行的任何代码仅在$username != $_SESSION['u_name']
时运行。在我看来,通常最好不要让其他函数直接在堆栈上回显HTML(例如
echoVote()
)。最好让函数返回数据并让原始调用者回显它。如果需要,这可以使调用者执行其他数据按摩。除此之外,您的代码正在获取数据,循环访问结果并根据结果采取行动,这几乎是标准费用。
我认为您的本能是对自己太苛刻了;)有待改进,但这绝对不是最糟糕的方法。