Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我应该重构这段代码吗?_Php_Refactoring_Kohana - Fatal编程技术网

Php 我应该重构这段代码吗?

Php 我应该重构这段代码吗?,php,refactoring,kohana,Php,Refactoring,Kohana,该代码用于查看辩论页面。该代码用于确定是否向查看用户显示添加回复表单 如果用户已登录,且该用户不是辩论的创建者,则检查该用户是否已回复辩论 如果用户尚未回复辩论,则显示表格。。。 否则,通过在url中查找回复id,检查用户是否要编辑其已存在的回复 如果这些测试中有任何一个没有通过,那么我将原因保存为int,并将其传递给视图中的switch语句 逻辑似乎很简单,但我的代码似乎有点马虎 这是密码。。(使用Kohana V2.3.4) 这里是视图,这里有一些逻辑决定了向用户显示什么消息 <!--

该代码用于查看辩论页面。该代码用于确定是否向查看用户显示添加回复表单

如果用户已登录,且该用户不是辩论的创建者,则检查该用户是否已回复辩论

如果用户尚未回复辩论,则显示表格。。。 否则,通过在url中查找回复id,检查用户是否要编辑其已存在的回复

如果这些测试中有任何一个没有通过,那么我将原因保存为int,并将其传递给视图中的switch语句

逻辑似乎很简单,但我的代码似乎有点马虎

这是密码。。(使用Kohana V2.3.4)

这里是视图,这里有一些逻辑决定了向用户显示什么消息

<!-- Add Reply Form -->
<?php if (isset($add_reply_form)): ?>

    <?php echo $add_reply_form; ?>

<?php else: ?>

    <?php
        switch ($reason)
        {
            case 1 :
                // not logged in, show a message
                $message = 'Add your ' . html::anchor('login?url=' . url::current(TRUE), '<b>vote</b>') . ' to this discussion';
                break;

            case 2 :
                // started the debate. dont show a message for that.
                $message = NULL;
                break;

            case 3:
                // already replied, show a message
                $message = 'You have already replied to this debate';
                break;

            default:
                // unknown reason. dont show a message
                $message = NULL;
                break;
        }
    ?>

    <?php echo app::show_message($message, 'h2'); ?>

<?php endif; ?>
<!-- End Add Reply Form -->

我是否应该将add-reply逻辑重构为另一个函数或其他东西。。。。这一切都很有效,只是看起来很马虎

谢谢


编辑:我考虑了所有的答案。因为我当时没有添加任何新的内容,所以我选择了重构代码。经过一番思考,我想到了一个更好的解决办法。整个过程花了我大约30分钟,我认为这是值得的。谢谢大家的回答

是的,重构。删除PHP并使用真正的语言。;)


严肃地说,进行重构——避免将if语句嵌套得太深(这样做会混淆逻辑并使测试更加困难),并将整体部分分为单独的函数/方法。

否。如果您在本项目的其他地方还有一行代码要写,请将时间花在这上面


通常情况下,会有很多不同的方法来解决代码正在解决的同一个问题。但是,如果你已经解决了这个问题,那么记下你在这里学到的东西,然后继续前进。如果这段代码在以后的开发中确实是一个薄弱环节,那么很好;你已经得到了证据和具体的验证,证明它应该被重新考虑。在那之前,你是在浪费时间,而这些时间本可以通过重新发明轮子来推进项目。

避免嵌套if语句:)

我会说是的。重构它,测量它所花费的时间,然后在所有工作完成后评估改进。花了多少时间?值得吗?所以重构它作为一个实验。请让我们知道你的结果。一句话:它值得重构吗?

是的,重构。如果对这段代码运行圈复杂度分析,它可能会返回一个相当高的数字(坏)。精心设计的case/switch语句,嵌套的if都有助于获得更高的分数


可能需要使用此代码库的未来开发人员可能会在深入研究之前运行圈复杂度分析,并可能估计处理此代码库的风险/复杂性相对较高。

-1他不是在问重构背后的原理。他在问上面的代码质量是否好。我不知道为什么这有这么多的赞成票。@ryeguy请重读这个问题。他问他是否应该重构编辑上方的两行。按照你的逻辑,我希望你在这里记下所有其他问题,而不仅仅是挑我的毛病!:)还有,为什么不添加一些积极的东西。。。就像一个回答。@MatW:是的,他问他是否应该重构下面的代码示例。就这样。如果有人发布代码并询问是否应该对其进行重构,他们会问是否可以以更容易理解的方式更改代码。这是一个编码问题,不是哲学问题。事实上,我在这篇文章中对所有其他答案进行了投票,因为他们都给出了与代码相关的答案(对于与代码相关的问题)。仅仅因为我不同意你的答案并不意味着出于某种原因我必须提供自己的答案。你给出的答案应该是一个问题,比如“如果某个东西仍然有效,我花时间重构它是否值得?”但他问的问题更像是“下面的代码还有改进的余地吗?”注意其他4个答案,所有人都对实际代码本身进行了评论-您没有。
<!-- Add Reply Form -->
<?php if (isset($add_reply_form)): ?>

    <?php echo $add_reply_form; ?>

<?php else: ?>

    <?php
        switch ($reason)
        {
            case 1 :
                // not logged in, show a message
                $message = 'Add your ' . html::anchor('login?url=' . url::current(TRUE), '<b>vote</b>') . ' to this discussion';
                break;

            case 2 :
                // started the debate. dont show a message for that.
                $message = NULL;
                break;

            case 3:
                // already replied, show a message
                $message = 'You have already replied to this debate';
                break;

            default:
                // unknown reason. dont show a message
                $message = NULL;
                break;
        }
    ?>

    <?php echo app::show_message($message, 'h2'); ?>

<?php endif; ?>
<!-- End Add Reply Form -->