我有这个过程,它是我创建的应用程序的心脏,但是由于某种原因,我觉得这是最糟糕的方法(本能),我想看看这个过程是否有问题,并且我以一种不好的方式接近它! 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())。最好让函数返回数据并让原始调用者回显它。如果需要,这可以使调用者执行其他数据按摩。

除此之外,您的代码正在获取数据,循环访问结果并根据结果采取行动,这几乎是标准费用。

我认为您的本能是对自己太苛刻了;)有待改进,但这绝对不是最糟糕的方法。

10-07 21:12