优化代码问题,多个If Else语句PHP
我是一个非常可怕的程序员,但我想要变得更好.我最近编写了一些有用的东西,万岁!但我觉得必须有一个更清洁的方式.对象是:
如果存在GET变量,则将其用作cookie值.如果变量不存在,请使用默认值.如果Cookie已存在,请使用该值而不是新值. if (!isset($_COOKIE['id'])) { if (!isset($_GET[id])) { $cookid="115"; } else { $cookid= $_GET["id"]; } setcookie("id",$cookid,time() + 31536000); } else { $cookid= $_COOKIE['id']; } 解决方法
这是我写的方式:
if(isset($_COOKIE['id'])) { $cookid = $_COOKIE['id']; } else { $cookid = isset($_GET["id"]) ? $_GET["id"] : "115"; setcookie("id",time() + 31536000); } 首先,根据一些约定,您应该测试正面情况(isset(…)),而不是负面(!isset()).我认为它使代码更具可读性,所以我已经改变了它. 其次,我使用了ternary operator(条件?expr1:expr2)来消除if / else块,这是可以接受的,因为你只是使用if / else块来决定分配给变量的两个值中的哪一个.但是,应谨慎使用三元运算符,因为如果过度使用它会使代码的可读性降低. 第三,我更喜欢使用花括号,即使对于单行if / else块,但至少我认为如果你将if用于if,你应该使用花括号. 最后,只是一个可读性说明:尝试与您的空白保持一致.在第四行,你在=周围没有任何空格,但在第六行和第十行你有一个空格,但之前没有空格.为了便于阅读,几乎总是优选在运算符的两侧都有空格. 哦,$_GET [“id”]是正确的; $_GET [id]不是.如果您的错误报告级别足够高,它(正确地)会发出警告(并且您通常应该使用error_reporting(E_ALL)进行开发;因此您可以看到它们). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |