良好的编程习惯:引用数组
这个问题具体涉及我对PHP的使用经验,但没有理由不适用于其他语言。良好的编程习惯:引用数组
在测试过程中设置了ERROR_REPORTING(E_ALL);
,我注意到我有一些通知,例如Notice: Undefined offset: 0 in ChrisW/public_html/admin.php on line 122
。这都对我存储在数组中有关表单的警告(未填充值,无效值等),然后访问它们:
echo $errorsArray[0] . '<label for="name" id="name-label">Your Name</label>
<input id="name" name="name" value="' . $name . '" />';
与我的错误数组中的我的验证功能是$errorsArray = array($nameError, $emailError);
。加载页面的第一时间,我展示的形式:
if(count($_POST) == 0)
{
$name="";
$email="";
$errorsArray = array();
form_display($name, $number, $errorsArray);
}
在一个理想的世界:
- 不要紧,有关通知书?
- 我应该做
$errorsArray("","");
,或 - 初始化数组我应该检查,如果数组为空时,我引用它(如通过改变
echo $errorsArray[0]
到echo (count($errorsArray[0])==0 ? "" : $errorsArray[0])
?
希望,就会有一个相当黑白的答案 - 我不想引起长时间的讨论!
生产代码不应该发出通知。这导致了眼睛失明 - 你习惯了有很多毫无意义的信息,所以你不会注意到重要信息(直到太晚)。
乱评:
- 它,你如何避免通知,在你的情况下,它可能会被初始化$ errorsArray为空数组不是真的很重要;
- 像这样的阵列中存在错误可能不是最好的主意。现在,您有两种将数据传递到视图的方式:一种使用全局变量($ name,$ password),另一种使用由数字索引的值($ errorsArray [0],$ errorsArray [1])。第一个更好,第二个更好,你可以考虑一些更好的($ data ['name'] ['errors'])。但一般的规则是:坚持一种做事方式。正如波兰古老的一句老话:“możebyćchujowo,byle jednakowo”(粗略翻译:可能不是最好的方法,但至少是统一的)。
谢谢 - 滚动失明是一个很好的观点,也是摆脱所有警告/通知的好理由。你的第二个重点是有用的 - 我不是一个交易程序员(正如你可能已经猜到的那样) - 我是一位在过去几年里教过自己编程的化学家...... – ChrisW 2012-01-03 23:06:17
正如FakeRainBrigand指出的那样,我们不会有绝对的答案,我个人认为通知是有原因的,为了避免被太多不相关的错误信息所淹没,人们可能会摆脱这种困境即使它使代码更长,看起来更冗长。
由于PHP的不一致性以及隐含地执行某些事情或默认情况下忽略潜在错误(例如本例中)的所有位置,PHP可能会有点容易出错。因此明智地做明智的做法可能是明智的,毫无疑问的意图。
风格很少黑色或白色。例外是当它在官方风格指南中提到时......但即使这样,它也会受到争议。 – FakeRainBrigand 2012-01-02 23:26:52