2015-09-15 82 views
0

这是关于代码的可读性:将参数传递给函数的最佳方法?

我一直在处理这个很长一段时间,我总是想知道什么是最好的方法来处理传递参数。

很多次了,阅读从其他程序员的代码,我觉得行这样:

$Instance->functionCall('Abc123', 5, 1.24, 'XYZ', 642); 

这使我不得不去的类文件,看看那些是什么参数表示。

我尽我所能,通过这样来写可读的代码:

$user_name = 'Abc123'; 
$age = 5; 
$height = 1.24; 
$hobbies = 'XYZ'; 
$num_brothers = 642; 

$Instance->functionCall($user_name, $age, $height, $hobbies, $num_brothers); 

或者这样:

$Instance->functionCall($user_name = 'Abc123', $age = 5, $height = 1.24, $hobbies = 'XYZ', $num_brothers = 642); 

但这个变量占用内存,不使用其他任何地方。 我喜欢认为这个'丢失'的内存空间是值得的,更可读,但我想知道是否有更好的方法。

任何想法?

谢谢大家!

+0

对phpdoc使用第一种方法(将文档记录到您的方法和变量中),并且您很好 - 您的IDE会告诉您需要知道的内容 –

回答

1

什么是这样的:

$Instance->functionCall([   // or $Instance->functionCall(array(
    'user_name' => 'Abc123', 
    'age'   => 5, 
    'height'  => 1.24, 
    'hobbies'  => 'XYZ', 
    'num_brothers' => 642 
]); 

数组传递到函数。这样您就可以读取各个变量,并且可以根据需要轻松添加/减少功能。

+0

我喜欢这一点,实际上我已经使用了它一些。我认为这是一个好方法,但是当我使用它时,我问自己:“单独传递参数或包含所有参数的数组之间的界限在哪里?只传递一个int证明使用数组来包含它?如果不是,传递一个字符串呢?”。而且,你失去了默认参数值的功能。 – Didhack

0

首先,只有在极端情况下,所有函数都可以有很多参数,但通常情况下,如果您有很多参数 - 重构。在给定的情况下,它看起来应该有一些User对象只能被传递给函数,并且您可以从该函数内的对象中获取所有必需的数据。也可以使用PHPDoc,因为@m_pro_m表示你的IDE会告诉你你需要什么。

而且这种做法

$Instance->functionCall('Abc123', 5, 1.24, 'XYZ', 642); 

是不好的,因为所谓的 “magic numbers and strings”。如果你发现这些东西,将它们导出为常量或某个配置。