良好的编程习惯:引用数组
Posted
技术标签:
【中文标题】良好的编程习惯:引用数组【英文标题】:Good programming practices: referencing arrays 【发布时间】:2012-01-02 23:23:40 【问题描述】:这个问题与我在 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])
?
希望会有一个相当非黑即白的答案 - 我不想引起长时间的讨论!
【问题讨论】:
风格很少是黑色或白色。一个例外是当它在官方风格指南中被提及时......但即便如此它也会受到质疑。 【参考方案1】:正如 FakeRainBrigand 所指出的,不会有绝对的答案。就我个人而言,我会说通知的存在是有原因的,为了避免被太多不相关的错误消息淹没,即使它使代码更长,看起来更冗长,也应该删除它们。
PHP 可能有点容易出错,因为它的不一致以及所有隐式完成某事或默认忽略潜在错误的地方(例如在这种情况下)。因此,明确地做事情可能是明智的,不要怀疑意图。
【讨论】:
【参考方案2】:生产代码不应发出通知。这会导致滚动盲区——你习惯了有很多无意义的消息,所以你不会注意到重要的消息(直到为时已晚)。
随机 cmets:
如何避免通知并不重要,在您的情况下,它可能会将 $errorsArray 初始化为一个空数组; 在这样的数组中保存错误可能不是最好的主意。现在您有两种将数据传递到视图的方式:一种通过全局变量($name, $password),另一种通过数字索引的值($errorsArray[0], $errorsArray[1])。第一个更好,第二个还可以,你可以想一些更好的($data['name']['errors'])。但一般规则是:坚持一种做事方式。正如一句古老的波兰谚语所说:“może być chujowo, byle jednakowo”(粗略翻译:可能不是最好的方式,但至少是统一的)。【讨论】:
谢谢 - 滚动失明是一个好点,也是摆脱所有警告/通知的好理由。您的第二个要点很有用 - 我不是专业程序员(您可能已经猜到了!) - 我是一名化学家,过去几年自学编程......以上是关于良好的编程习惯:引用数组的主要内容,如果未能解决你的问题,请参考以下文章