跳转到内容

用户:Tusooa/Sand/0

维基百科,自由的百科全书

http://www.google.com/search?q=there%27s+more+than+one+way+to+do+it&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

不止一种方法去做一件事There's more than one way to do itTMTOWTDITIMTOWTDI,发音为“Tim Toady”)是一条Perl俗语。这个语言本身就是用这个“不要教程序员如何编程”的主意设计的。这使得很容易可以写出极度杂乱的程序,但是,根据支持者对这个俗语的理解,这也可以很容易地写出简洁的语句。

例子

以下3种等价。

print if 1..3 or /match/

或者更传统的:

if(1..3 || /match/) {print}

或者甚至更详细:

use English;
if( $INPUT_LINE_NUMBER >= 1 and $INPUT_LINE_NUMBER <= 3 or $ARG =~ m/match/ )
{ print $ARG; }

发展

这条俗语在Perl社区里被讨论了很多,而且扩充成了“不止用一种方法去做一件事,但有时统一也不错”(There’s more than one way to do it, but sometimes consistency is not a bad thing eitherTIMTOWTDIBSCINABTE,发音“Tim Toady Bicarbonate”[1]

例如,以下3种:

if (not flaky_operation){
    die;
}

flaky_operation or die;

die unless flaky_operation;

比较这3种方式,哪一种更好。从阅读方面说,die unless flaky_operation似乎表明了这个操作很难成功,if块又需要输太多代码,而flaky_operation or die似乎说明要么全有,要么全没有[2]

事实上,更好的方式是一个错误时抛出异常而不是返回假的flaky_operation。但大部分Perl函数都不是这样的。另一种做法是:

flaky_operation or die "$!"; #这样die,能给出更多信息。

[2]

和Python哲学的比较

Python哲学有一个和TMTOWTDI相反的俗语: “应当只用一种——而且是最好的一种——明确的方式去做一件事。”(“There should be one – and preferably only one – obvious way to do it.”)[3]。这鼓励用最好的方法做事,但在需要的情况下也有次要的替代方法。它的目的是让这个语言易学,尤其是易读,因为当做一件事有很多不同方法时,如果要理解现有的代码,就需要知道所有方法。

参考

外部链接