如果PHP是用英式英語編寫的
PHP 之父Rasmus Lerdorf 在創(chuàng)造出PHP時,他并沒有用格陵蘭語或者丹麥語編寫(盡管他有格陵蘭和丹麥血統(tǒng)),這是非常明智的。雖然對他來說用英語編寫,并沒有用自己母語編寫來得容易。由于他以前在加拿大待過,所以他選擇了本地方言。不是法語,也不是不合純正英語標(biāo)準(zhǔn)的方言,我們通常稱其為“美式英語”。
從那以后,英國的PHP開發(fā)人員就對這件事情格外不滿。Rasmus 在想什么?更重要的是,我們要如何改變這個既成的事實?我們開發(fā)人員如何保證即使在數(shù)字時代,大英帝國的優(yōu)良傳統(tǒng)也能繼續(xù)發(fā)揚光大?
一記耳光
- $variable_name
最有必要更改就是要刪除一些深受美國人喜歡的符號,并用一些更加精煉的符號代替,讓PHP變得更加優(yōu)雅。
- £variable_name
開始吧
- <?php
- echo 'Hello World!';
- ?>
今天的英國程序員中,有多少人一開始接觸到的就是“Hello World”這個典型的美國式程序,雖然簡單但老套粗俗令人反感?一份更加冠冕正式的介紹將會促進大部分年輕的英國天才使用這種語言,從而為更廣闊的用戶群提供更加文雅的氣氛。
- <?php
- announce 'Good morrow, fellow subjects of the Crown.';
- ?>
縮寫詞
沒有東西比沒必要的縮寫詞更加讓英國人痛恨的。“縮寫詞”在倫敦的街道上聞所未聞,正如土生土長的英國文法家不肯自降身份去發(fā)送“c u soon traffic kthxbye”等各種信息,寧愿使用一些看起來更加文雅的詞句代替:“親愛的先生或女士。只要時間允許,我希望在一個小時之內(nèi),盡快到達。我向各位保證,你們的馬匹會得到妥善安置。敬上。”(輸入較慢,是的,但是不至于倉促)。
從另一方面來說,PHP里面包含很多毫無必要的縮寫字和縮寫字首字母。
- str_replace()
- is_int()
- var_dump()
- preg_match()
- json_encode()
- mysql_connect()
應(yīng)該改成下面這樣:
- string_replace()
- is_integer()
- variable_dump()
- perl_regular_expression_match()
- javascript_object_notation_encode()
- my_structured_query_language_connect()
校正:我已經(jīng)更正了“preg_match”的擴充——感謝指出來的朋友。
口才
- if ($condition) {
- // Code here
- } else {
- // Code here
- }
莎士比亞可不愿意看到他的母語被扭曲成這個怪物。簡練在適當(dāng)?shù)膱龊虾苁軞g迎——在一些偏僻的地方未必如此——但不是這里。“if … else”模塊是PHP之中用得最多的條件代碼,所以它在使用時必須是盡可能的安全無害。有很多選擇可以取代,但是這個條件語句也許是最穩(wěn)健的。
- perchance (£condition) {
- // Code here
- } otherwise {
- // Code here
- }
上述模塊同樣適用于美國化的,只能說是笨重的,讓人厭惡的switch … case概念,
- switch ($variable) {
- case $option1:
- //Code here
- break;
- case $option2:
- //Code here
- break;
- default:
- //Code here
- break;
- }
像”switch”, “break” and “default”這樣的關(guān)鍵字對讀者來說很有難度并且缺乏聯(lián)系。這種美式用法真是需要改進。(使用美式用法的人有一些有趣的想法,期望用i_might_be_partial_to()這樣的語句來代替include()來顯示他們天才的編程天賦):
- what_about (£variable) {
- perhaps £possibility:
- //Code here
- splendid;
- perhaps £other_possibility:
- //Code here
- splendid;
- on_the_off_chance:
- //Code here
- splendid;
- }
拼寫
- imagecolorallocate()
- serialize()
- newt_centered_window()
- connection_status()
在這點上,單詞讓我吃過不少虧。自重的紳士期待該如何看得懂這些“單詞”。它削弱了任何人接受編程語言中單詞的曲解含義的信念。這些“單詞”和眾多相似的錯誤,應(yīng)該立即恢復(fù)到適當(dāng)?shù)男问健?/p>
- imagecolourallocate()
- serialise()
- newt_centred_window()
- connexion_status()
習(xí)慣
- try {
- // Code here
- } catch (Exception $e) {
- // Handle exception
- die('Message');
- }
try … catch 語句塊是PHP缺乏特點的一個很好證明。新的PHP過于直接地允許使用該模塊,缺乏應(yīng)有的限制。另外,單詞“die”很讓人喪氣。這個新模塊,盡管更加冗長,但更為文雅和樂觀。
- would_you_mind {
- // Code here
- } actually_i_do_mind (Exception £e) {
- // Politely move on
- cheerio('Message');
- }
類
在英國人的心里,沒有什么東西跟類的概念一樣重要和根深蒂固,而且,PHP當(dāng)中的這一部分很少變動,除非是這里做出的重要更改。
- class Republic {
- public $a;
- private $b;
- protected $c;
- }
- $example = new Republic;
首先,流行的系統(tǒng)中并沒有類層次存在的余地,這是無法接受的。所以我們首先應(yīng)該賦予類的特定等級——上層,中層,工作層(upper, middle, working )——如果沒有更高等級指令類的明確許可,類就無法使用一個更高級的類的方法(當(dāng)然,即使它后來已經(jīng)訪問了更高級的類,但它并非更高級指令的正式成員,無法授予自身訪問其他低級別指令類的更高級指令)。“public”和“private”,在英國人的類系統(tǒng)中是同義詞(例如,學(xué)校制度命名),所以這些必須進行調(diào)整,“protected”的屬性可見性也一樣。單詞“new”,雖然可行,但在類問題上需要有一個更加恰當(dāng)?shù)脑~來代替。
- upper_class Empire {
- state £a;
- private £b;
- hereditary £c;
- }
- £example = nouveau Empire;
日不落…
希望這些少數(shù)簡單的變動能夠提升PHP在眾多編程語言之中的聲譽和地位。它不再是蹩腳美國人的遠親。相反,它能重新回到作為腳本語言之王的英國人的懷抱中。
英文原文:http://www.addedbytes.com/blog/if-php-were-british/
譯文原文:http://blog.jobbole.com/8792/
【編輯推薦】