良好的编程习惯:引用数组

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”(粗略翻译:可能不是最好的方式,但至少是统一的)。

【讨论】:

谢谢 - 滚动失明是一个好点,也是摆脱所有警告/通知的好理由。您的第二个要点很有用 - 我不是专业程序员(您可能已经猜到了!) - 我是一名化学家,过去几年自学编程......

以上是关于良好的编程习惯:引用数组的主要内容,如果未能解决你的问题,请参考以下文章

漫谈C++:良好的编程习惯与编程要点

漫谈C++:良好的编程习惯与编程要点

漫谈C++:良好的编程习惯与编程要点

良好的编程习惯

如何养成良好的 C++ 编程习惯—— 内存管理

防病毒和文件访问冲突:良好的编程习惯?