在使用松散类型语言时,是否应该使用强类型编码概念?

时间:2017-12-29 17:46:17

标签: php strict loose-typing

例如,在PHP或其他松散类型语言中,我可以使用这样的代码:

{{1}}

因为我可以用PHP和类似的语言来做这件事,这是否意味着我应该这样做?

另一种选择可能是强迫自己编写类似于C ++的代码,我将重新设计代码或创建数据结构以保持其类型。但我应该这样做吗?

1 个答案:

答案 0 :(得分:1)

PHP不是强类型的事实既是礼物又是诅咒。它非常适合您希望能够处理多种类型,但如果处理不当,也会导致一些错误的代码。就个人而言,我使用的是强大的打字和#39;尽可能在PHP中避免错误(它看起来更清晰,通常更容易阅读/理解)。即便如此,PHP可以并且通常会随时随地自动进行转换(见下文),这就是“诅咒”的地方。进来了。

function foo(string $string) : int{
    //$string will be cast as string if possible, return value is cast as int if possible
    return $string;
}

echo foo(1);

<强>输出:

1

不幸的是,强制类型(不使用 declare(strict_types=1);)的唯一真正方法是进行类型检查;

function foo($string){
    if(is_string($string) && is_numeric($string)){
        return (int)$string;
    }else{
        return null;
    }
}

var_dump(foo(1));
echo '<br>';
echo foo('1');

<强>输出:

NULL
1

或者,您可以告诉PHP使用严格类型;

declare(strict_types=1);

...但当然你会失去松散类型语言的一些好处。在一天结束时,它取决于你!

相关问题