如果PHP是用英式英語編寫的

openkk 13年前發布 | 12K 次閱讀 PHP

注:原文作者 Dave 是一位英國開發人員。

PHP 之父 Rasmus Lerdorf 在創造出 PHP 時,他并沒有用格陵蘭語或者丹麥語編寫(盡管他有格陵蘭和丹麥血統),這是非常明智的。雖然對他來說用英語編寫,并沒有用自己母語編寫來得容易。由于他以前在加拿大待過,所以他選擇了本地方言。不是法語,也不是不合純正英語標準的方言,我們通常稱其為“美式英語”。

從那以后,英國的 PHP 開發人員就對這件事情格外不滿。Rasmus 在想什么?更重要的是,我們要如何改變這個既成的事實?我們開發人員如何保證即使在數字時代,大英帝國的優良傳統也能繼續發揚光大?

一記耳光

 $variable_name

最有必要更改就是要刪除一些深受美國人喜歡的符號,并用一些更加精煉的符號代替,讓 PHP 變得更加優雅。

 £variable_name

開始吧

 <?php

  echo 'Hello World!';

  ?>

今天的英國程序員中,有多少人一開始接觸到的就是“Hello World”這個典型的美國式程序,雖然簡單但老套粗俗令人反感?一份更加冠冕正式的介紹將會促進大部分年輕的英國天才使用這種語言,從而為更廣闊的用戶群提供更加文雅的氣氛。

<?php

  announce 'Good morrow, fellow subjects of the Crown.';

  ?>

縮寫詞

沒有東西比沒必要的縮寫詞更加讓英國人痛恨的。“縮寫詞”在倫敦的街道上聞所未聞,正如土生土長的英國文法家不肯自降身份去發送“c u soon traffic kthxbye”等各種信息,寧愿使用一些看起來更加文雅的詞句代替:“親愛的先生或女士。只要時間允許,我希望在一個小時之內,盡快到達。我向各位保證,你們的馬匹會得到妥善安置。敬上。”(輸入較慢,是的,但是不至于倉促)。

從另一方面來說,PHP 里面包含很多毫無必要的縮寫字和縮寫字首字母。

 str_replace()

  is_int()

  var_dump()

  preg_match()

  json_encode ()

  mysql_connect()

應該改成下面這樣:

 string_replace ()

  is_integer()

  variable_dump ()

  perl_regular_expression_match ()

  javascript_object_notation_encode ()

  my_structured_query_language_connect ()

校正:我已經更正了“preg_match”的擴充——感謝指出來的朋友。

口才

if ($condition) {

      // Code here    } else {

      // Code here    }

莎士比亞可不愿意看到他的母語被扭曲成這個怪物。簡練在適當的場合很受歡迎——在一些偏僻的地方未必如此——但不是這里。“if … else”模塊是 PHP 之中用得最多的條件代碼,所以它在使用時必須是盡可能的安全無害。有很多選擇可以取代,但是這個條件語句也許是最穩健的。

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”這樣的關鍵字對讀者來說很有難度并且缺乏聯系。這種美式用法真是需要改進。(使用美式用法的人有一些有趣的想法,期望用 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()

在這點上,單詞讓我吃過不少虧。自重的紳士期待該如何看得懂這些“單詞”。它削弱了任何人接受編程語言中單詞的曲解含義的信念。這些“單詞”和眾多相似的錯誤,應該立即恢復到適當的形式。

 imagecolourallocate ()

  serialise ()

  newt_centred_window ()

  connexion_status ()

習慣

 try {

      // Code here    } catch (Exception $e) {

      // Handle exception        die('Message');

  }

try … catch 語句塊是 PHP 缺乏特點的一個很好證明。新的 PHP 過于直接地允許使用該模塊,缺乏應有的限制。另外,單詞“die”很讓人喪氣。這個新模塊,盡管更加冗長,但更為文雅和樂觀。

would_you_mind {

      // Code here    } actually_i_do_mind (Exception £e) {

      // Politely move on        cheerio ('Message');

  }

在英國人的心里,沒有什么東西跟類的概念一樣重要和根深蒂固,而且,PHP 當中的這一部分很少變動,除非是這里做出的重要更改。

class Republic {

      public $a;

      private $b;

      protected $c;

  }

  $example = new Republic;

首先,流行的系統中并沒有類層次存在的余地,這是無法接受的。所以我們首先應該賦予類的特定等級——上層,中層,工作層(upper, middle, working )——如果沒有更高等級指令類的明確許可,類就無法使用一個更高級的類的方法(當然,即使它后來已經訪問了更高級的類,但它并非更高級指令的正式成員,無法授予自身訪問其他低級別指令類的更高級指令)。“public”和“private”,在英國人的類系統中是同義詞(例如,學校制度命名),所以這些必須進行調整,“protected”的屬性可見性也一樣。單詞“new”,雖然可行,但在類問題上需要有一個更加恰當的詞來代替。

  upper_class Empire {

      state £a;

      private £b;

      hereditary £c;

  }

  £example = nouveau Empire;

日不落…

希望這些少數簡單的變動能夠提升 PHP 在眾多編程語言之中的聲譽和地位。它不再是蹩腳美國人的遠親。相反,它能重新回到作為腳本語言之王的英國人的懷抱中。

英文原文:http://www.addedbytes.com/blog/if-php-were-british/
      來自: blog.jobbole.com

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!