av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

一步步教你編寫(xiě)不可維護(hù)的PHP代碼

這是一篇很棒文章,使用有趣的敘述方式,從反面講解了作為一個(gè)優(yōu)秀的 PHP 工程師,有哪些事情是你不能做的。請(qǐng)注意哦,此篇文章羅列的行為,都是你要盡量避免的。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的金川網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

隨著失業(yè)率越來(lái)越高,很多人意識(shí)到保全自己的工作是多么的重要。那么,什么是保住自己工作,并讓自己無(wú)可替代的好方法呢?一個(gè)很簡(jiǎn)單的事實(shí)是只要你的代碼沒(méi)有人能夠維護(hù),那么你就成功保住了工作。編寫(xiě)不可維護(hù)的代碼是一個(gè)特殊的技能,但奇怪的是,似乎對(duì)某些開(kāi)發(fā)者來(lái)說(shuō)是很自然的。不過(guò)對(duì)于剩下的開(kāi)發(fā)者來(lái)說(shuō),這里有一些技巧和提示來(lái)讓你開(kāi)始寫(xiě)不可維護(hù)的代碼。

首先要做的事情

第一步,從找工作開(kāi)始。你應(yīng)該尋找合適的公司,在那里你可以盡情發(fā)揮并實(shí)現(xiàn)你那不可維護(hù)的潛力。 你不一定需要成為公司的 PHP 大牛如果是那更好。找工作時(shí),如果工作描述提到需要從其它的遷移到 PHP (所以你知道你會(huì)做主),或者也可以搜索那種需要10年 PHP5 工作經(jīng)驗(yàn)的誤導(dǎo)性工作,再加上熟練使用 FrontPage 和 Netscape Composer 。

一旦你獲得這種千載難逢的機(jī)會(huì),從第一天開(kāi)始就要采取措施。在會(huì)議上發(fā)言,讓你的意見(jiàn)被聽(tīng)到。大膽談?wù)撁嫦驅(qū)ο蟮募軜?gòu)設(shè)計(jì),企業(yè),改革方案,怎樣讓夠好變得更好,當(dāng)然你也得做出相應(yīng)的承諾。確保每個(gè)人在重要的編碼環(huán)節(jié)都咨詢你的意見(jiàn)。

不可維護(hù)的核心

靈感來(lái)源于優(yōu)秀的文章 “Writing unmaintainable code” (想要保住工作的人一定會(huì)看的), 以下是你需要掌握和精通的兩個(gè)重要概念:

  1. 你應(yīng)該讓別人無(wú)法輕易地修改任何東西,除非他破壞另外一些東西。

    維護(hù)人員沒(méi)有時(shí)間去理解你的代碼。 可維護(hù)的代碼意味著能夠在堆積如山的代碼中快速定位到特定的部分,能夠快速明白它是如何工作的并且在不破壞一些東西的情況下進(jìn)行修改。你不能這樣做。 不能讓別人能輕易地搜索到某些東西或者在他們期待的地方找到。

  2. 你的代碼不能“看起來(lái)”不可維護(hù)(因?yàn)閯e人會(huì)懷疑的), 它必須“是”不可維護(hù)。

    代碼在維護(hù)人員看起來(lái)應(yīng)該是正常的,但要在他們最意想不到的時(shí)候給他們一個(gè)驚喜。

最佳實(shí)踐

  1. 禁止代碼約定。 關(guān)于編碼和命名約定的對(duì)罵無(wú)窮無(wú)盡。這樣的情況絕不能在你優(yōu)秀的組織中出現(xiàn)。你有牛逼的項(xiàng)目要做,你不可能花上無(wú)數(shù)的時(shí)間來(lái)討論用 tab 還是還是空格。再說(shuō)了,約定就是限制。如果一個(gè)新人入職,并且他不習(xí)慣你的約定,他會(huì)很痛苦。不快樂(lè)的程序員是沒(méi)有效率的程序員。誰(shuí)問(wèn)你你就向他們解釋。讓每個(gè)人都用他們自己喜歡的風(fēng)格寫(xiě)代碼。至于你自己的代碼 - 變換你的約定。周一用 camelCase 小駝峰命名,周二用 all_lowercase 全小寫(xiě)命名,周五混合著用,在每個(gè) 2 月 29 日 使用匈牙利命名法。
  2. 不寫(xiě)注釋。 你的代碼很優(yōu)美,它不需要注釋。如果有人不理解你的代碼,那么很有可能他們不是那么好的程序員。如果,有這個(gè)可能的話,你被強(qiáng)迫要求寫(xiě)注釋,那么直接夸張的寫(xiě)。詳細(xì)描述最明顯和最不重要的代碼,跳過(guò)其它的。

       
       
       
    1. // 下面這一塊代碼
    2. // 我們?cè)黾觾蓚€(gè)變量:
    3. // 命名為變量 a 和變量 b
    4. // 兩個(gè)都是整數(shù)
    5. // 聲明變量 a
    6. // 并給它賦值整數(shù) 1
    7. $a = 1;
    8. // 聲明變量 b
    9. $b = 2;
    10. // 給變量 a 和 b 求和
    11. // 聲明和初始化見(jiàn)上面
    12. // 并且將結(jié)果賦值給
    13. // 一個(gè)新的變量 c
    14. $c = $a + $b;
  3. 使用記事本編碼。或者使用其他沒(méi)有代碼縮進(jìn)展示的編輯器。使得其他人忍受痛苦最終離開(kāi)團(tuán)隊(duì)。這樣你就不用總是聽(tīng)他們的抱怨了。如果有人問(wèn)你為什么使用記事本,準(zhǔn)備好解釋:因?yàn)樗鼇?lái)自于 Windows (當(dāng)今唯一一個(gè),為富有創(chuàng)造性的程序員準(zhǔn)備的操作系統(tǒng)),無(wú)需任何必要的培訓(xùn),也不需要花費(fèi)任何代價(jià)。我相信你能在網(wǎng)上找到你可以使用任何程序的參考文獻(xiàn),甚至包括 Word,來(lái)編寫(xiě)你的網(wǎng)頁(yè)代碼,但是只有記事本才是真正的權(quán)威,畢竟,你們公司雇傭的人只有你才是權(quán)威。
  4. 拒絕單元測(cè)試。向任何質(zhì)疑你的人解釋,你是被雇傭過(guò)來(lái)編寫(xiě)高質(zhì)量并且沒(méi)有漏洞的代碼的(因此,無(wú)需測(cè)試)。為什么會(huì)有頭腦正常的人會(huì)花時(shí)間來(lái)寫(xiě)無(wú)關(guān)緊要的測(cè)試來(lái)證實(shí)代碼能否正常運(yùn)行?有些事情在生活中就像-天空是藍(lán)色的,太陽(yáng)從東方升起,你的代碼是能夠正常運(yùn)行的,因此非常感謝。繼續(xù)(就像評(píng)論一樣,如果被迫接受測(cè)試,那么準(zhǔn)備好測(cè)試那些顯而易見(jiàn)的內(nèi)容然后跳過(guò)其他的部分)
  5. 不使用模板引擎。模板引擎能夠幫助你區(qū)分業(yè)務(wù)邏輯層與展示層。它可以保證代碼的可維護(hù)性所以你不能遵守這個(gè)規(guī)定。PHP 之父 Rasmus Lerdorf 說(shuō)過(guò):“PHP 就是模板引擎”。即使你迫不得已使用模板引擎,也要找到對(duì)應(yīng)的方法濫用它,例如放一些業(yè)務(wù)代碼在模板中,或者是小心的將HTML(和 CSS 和 JavaScript)代碼混合在數(shù)據(jù)庫(kù)訪問(wèn)層中。

一般來(lái)說(shuō),盡可能在同一行代碼中的將你的 PHP,HTML,CSS 和 JavaScript 代碼理直氣壯地混合在一起。在 PHP 代碼中創(chuàng)建 JavaScript 和帶內(nèi)聯(lián)樣式的 HTML 代碼。如果別人問(wèn)到,告訴他們這種模式叫做“封裝”,你會(huì)對(duì)你的代碼負(fù)全部責(zé)任。

  1. 版本控制。 雖然這很難避免,但是使自己擺脫任何形式或版本控制很值得嘗試。你可以在討論的時(shí)候向大家證明這樣做提高了團(tuán)隊(duì)成員之間的溝通,而不是去依賴?yán)溲陌姹究刂栖浖?。如果你沒(méi)有說(shuō)服任何人,請(qǐng)不要絕望。 你提交的時(shí)候可以不 commit all 。 在本地保留一些自己的代碼。這樣如果你以外的人試圖構(gòu)建和部署的話,這些小而致命的代碼片段將會(huì)破壞這個(gè)項(xiàng)目。 如果被抓了,就辯解說(shuō)這些代碼還不適合展示,畢竟,你提交了能夠教育初級(jí)團(tuán)隊(duì)的高質(zhì)量的代碼和優(yōu)秀的解決方案。這些小男孩和小女孩將會(huì)仰望著你并充滿期待!
  2. 構(gòu)建一個(gè)框架。 然后你不可避免地成為架構(gòu)師,你的權(quán)威毋庸置疑。這樣你就可以添加一些秘密約定(當(dāng)然其中大多數(shù)有時(shí)是自相矛盾的),即使是最有經(jīng)驗(yàn)的維護(hù)人員也察覺(jué)不出。 你的框架將負(fù)責(zé)所有的事情,不需要任何人費(fèi)心地去理解它,大家會(huì)很開(kāi)心因?yàn)槟阋粋€(gè)人讓開(kāi)發(fā)變得更容易而且提高了整個(gè)公司的產(chǎn)能。不要以開(kāi)源的方式發(fā)布你的框架,因?yàn)?a) 這個(gè)框架是公司的資產(chǎn)而且公司投入了人大量的資金, b) 開(kāi)源社區(qū)會(huì)嘲笑你,而且這將成為你虛張聲勢(shì)的結(jié)局。

命名相關(guān)

你的變量名應(yīng)該起的神秘一些,最好只有一個(gè)字母。 這樣誰(shuí)都無(wú)法通過(guò)簡(jiǎn)單的搜索找到需要的內(nèi)容。

類名和方法最好也使用一個(gè)字母來(lái)定義。如果你確實(shí)想定義一個(gè)正常點(diǎn)的名字,那就一直使用它吧 —— 記住,隱藏信息的最好方法就是頻繁的使用它。 當(dāng)重復(fù)使用相同名稱(稱為“面向?qū)ο蟮木幊獭保r(shí),如果將圓括號(hào)和花括號(hào)放在新的一行,這將有助于提高代碼的可讀性,并且讓隊(duì)友在你的代碼中尋找任何東西時(shí),都得重溫一下正則表達(dá)式??紤]一下吧:

 
 
 
  1. $noodles = 1;
  2.     class
  3.     noodles
  4.     {
  5.         var $noodles = 2;
  6.         function
  7.             noodles
  8.             ()
  9.         {
  10.             $noodles['noodles'] = 'noodles';
  11.         }
  12.     }
  13.     function
  14.         noodles() {
  15.             return new noodles;
  16.         }
  17.     $noodles = noodles();
  18.     var_dump($noodles);

你也可以使用奇特的字符集來(lái)命名變量。西里爾字母就非常合適,因?yàn)橛行┳帜缚雌饋?lái)跟羅馬字母一樣, 但其實(shí)不是(所有這些:xopekacMEBCTAKXOPH)。那么下面的輸出是:

 
 
 
  1. $alert = 1;
  2. $аlert = 2;
  3. echo $alert;

2?如果第二個(gè) alert以西里爾字母"a"開(kāi)頭,則不可以!

引用相關(guān)

即使你非常正常的定義來(lái)一些東西,但并不意味著你不能以有趣的方式來(lái)使用它。主要的武器有:

  • eval()
  • 可變變量
  • 可變類,比如$strudels = "noodles"; $noo = new $strudels;
  • call_user_func()

基本上任何將代碼視為字符串的語(yǔ)言結(jié)構(gòu)都是你的好朋友。

 
 
 
  1. // calling abc();
  2.     $z = 'A';
  3.     call_user_func($z .'bC');

大寫(xiě)

字母例子,函數(shù)方法名不區(qū)分大小寫(xiě),濫用這個(gè)特點(diǎn)。

 
 
 
  1. function abc(){
  2.     echo "abc";
  3. }
  4. AbC();

另一方面,數(shù)組的?。╧ey) 對(duì)大小寫(xiě)敏感,也濫用這個(gè)特點(diǎn)。

 
 
 
  1. $a['UseConvetionsOnlyTobreakThem'] = 1;
  2. if (isset($a['UseConvetionsOnlyToBreakThem'])) {
  3.     // ?? 大寫(xiě) B !!1!
  4. }

重寫(xiě)

在不期望的情況下重寫(xiě)全局變量,尤其是超全局變量。盡早重寫(xiě)$_GET數(shù)組中的屬性,多次重寫(xiě),$_POST亦是如此。在$_REQUEST上做一些不起眼的重寫(xiě)作為點(diǎn)綴。如果是在WTF-ed上,你可以解釋是在防止用戶輸入的 XSS 攻擊、注入攻擊以及其他的病毒攻擊。

控制結(jié)構(gòu)

使用、混合、匹配所有備選的if,while,for,foreachswitch語(yǔ)法。如果被問(wèn)起來(lái),所有的這些,請(qǐng)解釋說(shuō)你正在培訓(xùn)新員工學(xué)習(xí)真正的語(yǔ)言。

 
 
 
  1. if ($a > 5):
  2.   if ($a > 4) {
  3.       while ($a > 0):
  4.         echo --$a;
  5.       endwhile;
  6.   }
  7. endif;

嵌套三元運(yùn)算符,沒(méi)有比這個(gè)更好、更簡(jiǎn)潔的代碼了。

 
 
 
  1. // 猜猜這里輸出什么
  2. echo true ? 'true' : false ? 't' : 'f';

for的循環(huán)體內(nèi),再次增加$i以保持所有人的注意?;蛘撸ㄟ^(guò)不使用$i來(lái)實(shí)現(xiàn)循環(huán)增量的驚喜。從不。

嵌套循環(huán)、深入,然后突然跳出它們(循環(huán))。像 break 2break 3 這樣的代碼存粹是為了娛樂(lè),尤其是當(dāng)混合了奇怪的縮進(jìn)代碼時(shí)。

這是一個(gè)開(kāi)始!

這就是今天的全部。我希望你相信你自己也能做到,你也可以編寫(xiě)不可維護(hù)的代碼。現(xiàn)在你的未來(lái)就在你的手中!當(dāng)然,你也可以編寫(xiě)可讀性比較高的代碼,但是冒著被替代的風(fēng)險(xiǎn)。


分享題目:一步步教你編寫(xiě)不可維護(hù)的PHP代碼
文章源于:http://uogjgqi.cn/article/dhpigci.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流