bugfix> php > 投稿

私はこの方法を持っていますが、問題は、この非常に長い行を85〜120文字を超えないように分割するにはどうすればよいですか?私がこのコードを自分で作成しなかった記録のために、それは私が自分のニーズに合わせて調整した古いオープンソースプロジェクトです。

function doQuery($sql)
{
    $this->counter++;
    $result = $this->unbuffered ? mysqli_query($this->db, $sql, MYSQLI_USE_RESULT) or $this->error = true and $this->errormessage = mysqli_error($this->db) : mysqli_query($this->db, $sql) or $this->error = true and $this->errormessage = mysqli_error($this->db);
    return new ResultSet($result);
    }

これが元の方法です。php7用に調整する必要がありましたが、失敗した可能性があります。私はプロの純粋な趣味のプログラマーではありません。

/**
* Query the database
*
* @param    string      sql query string
* @throws   DatabaseException
* @return   ResultSet
*/
function doQuery($sql) {
    $this->counter++;
    $result = $this->unbuffered ? @mysql_unbuffered_query($sql, $this->db) or $this->error = true and $this->errormessage = mysql_error() : @mysql_query($sql, $this->db) or $this->error = true and $this->errormessage = mysql_error();
    return new ResultSet($result);
}

今のところ私はこれに調整しました、ビル・カーウィンに感謝します。

function doQuery($sql)
{
    $this->counter++;
    if ($this->unbuffered) {
        $resultmode = MYSQLI_USE_RESULT;
    } else {
        $resultmode = MYSQLI_STORE_RESULT;
    }
    $result = mysqli_query($this->db, $sql, $resultmode) or $this->error = true and $this->errormessage = mysqli_error($this->db);
    return new ResultSet($result);
}

回答 1 件
  • そのコードを書いた人は誰でも、自分の利益のために賢すぎました。そのようなコードを書いてそれを渡すのは残酷で無責任です。それは機能しますが、不必要に不明確です。

    ブライアン・カーニハンによる引用があります。これは、プログラマーであるときに覚えておくことが重要です。

    "Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"

    同じように機能するが、より明確なコードを試してみてください。

    function doQuery($sql)
    {
        $this->counter++;
        if ($this->unbuffered) {
            $resultmode = MYSQLI_USE_RESULT;
        } else {
            $resultmode = MYSQLI_STORE_RESULT;
        }
        $result = mysqli_query($this->db, $sql, $resultmode);
        if ($result === false && $this->error) {
            $this->errormessage = mysqli_error($this->db);
        }
        return new ResultSet($result);
    }
    
    

    もちろん、私はあなたのプロジェクトでこのコードをテストしていません。したがって、プロジェクト内の他のコードがどのように機能するかについて気づかなかったことがあれば、それはわかりません。これを試す場合は、最初に現在のコードのコピーを保持することをお勧めします。これが機能しない場合は、前のコードを簡単に復元できます。

あなたの答え