摘要:為了成為一個(gè)專家,他必須先成為中級(jí)者。它非常適合于急于求成或者沒(méi)有太多技術(shù)的人,但掌握絕對(duì)無(wú)法使你成為一個(gè)專業(yè)的開(kāi)發(fā)者它使用意大利面條式的編碼,教你的是不合適的設(shè)計(jì)原則。
這一篇文章是“Becoming a PHP Professional”系列 4 篇博文中的第 1 篇。
當(dāng)瀏覽各類與PHP相關(guān)的博客時(shí),比如Quora上的問(wèn)題,谷歌群組,簡(jiǎn)訊和雜志,我經(jīng)常注意到技能的等級(jí)分化。問(wèn)題都類似于“我如何連接到MySQL數(shù)據(jù)庫(kù)?”或者“我該如何擴(kuò)展郵件系統(tǒng)才能在每小時(shí)發(fā)送超過(guò)一萬(wàn)封郵件,而不需要引入新的服務(wù)器?”
我將PHP能力水平分為4個(gè)等級(jí)(可能適用于任何編程語(yǔ)言或?qū)I(yè)):初級(jí)、中級(jí)、專家和精英。
等級(jí)對(duì)于PHP初級(jí)者,他們學(xué)習(xí)如何使用變量,包含文件,表單處理等。他們學(xué)習(xí)簡(jiǎn)單的邏輯結(jié)構(gòu)。在教程的指導(dǎo)下,實(shí)現(xiàn)了用PHP發(fā)送郵件,甚至觸及了面向?qū)ο缶幊痰珔s沒(méi)有完全理解它。他們還能修改WordPress的幾個(gè)CSS文件。有了這些知識(shí),他們就開(kāi)始找工作,但不幸的是通常都會(huì)失敗。
專家是指那些經(jīng)歷過(guò)許多項(xiàng)目并有了豐富經(jīng)驗(yàn)的人。他們已經(jīng)開(kāi)發(fā)了許多商業(yè)應(yīng)用,但沒(méi)有完全使用框架來(lái)做。他們能夠使用PHP與不同的數(shù)據(jù)庫(kù)進(jìn)行高效地開(kāi)發(fā),以及通過(guò)會(huì)議來(lái)討論解決問(wèn)題的方案。他們熟悉設(shè)計(jì)模式,能夠輕松地將項(xiàng)目的工程圖用代碼實(shí)現(xiàn)。他們遠(yuǎn)離過(guò)程式地編程。
精英程序員是那些努力了10000+小時(shí)磨練自己專業(yè)技能的人。他們能夠根據(jù)自己的需要編寫(xiě)PHP的擴(kuò)展,只是瞧一下源代碼文件就能發(fā)現(xiàn)BUG,并且非常了解自己的代碼布局。他們只做最復(fù)雜的項(xiàng)目,并且能夠找到可選的和富有創(chuàng)造力的方案來(lái)解決問(wèn)題。他們已經(jīng)寫(xiě)了一些深受歡迎的關(guān)于編程語(yǔ)言的書(shū)籍,開(kāi)過(guò)幾十次講座,甚至可能擁有自己的PHP語(yǔ)言版本或者非常成功的框架,或兩者都擁有。
那么,誰(shuí)屬于中級(jí)呢?
缺失的環(huán)節(jié)初學(xué)者怎樣才能成為和超越專業(yè)人士?如果一個(gè)人不知道超出基本知識(shí)的東西,他如何能提高自己的技能,摒棄錯(cuò)誤的開(kāi)發(fā)方式和學(xué)習(xí)更先進(jìn)的開(kāi)發(fā)方法。這個(gè)問(wèn)題是許多初學(xué)者向我提問(wèn)過(guò)的。為了成為一個(gè)專家,他必須先成為中級(jí)者。
下面的列表中指出了一個(gè)人成為中級(jí)者所需經(jīng)歷的PHP學(xué)習(xí)路程:
放棄意大利面條式的代碼很多人認(rèn)為使用了類就意味著在編寫(xiě)面向?qū)ο蟮拇a,而使用了函數(shù)則意味著編寫(xiě)過(guò)程式的代碼。然而這是錯(cuò)誤的,為了支撐這一觀點(diǎn),我們假設(shè)一個(gè)廣為流傳的定義:過(guò)程式代碼是沒(méi)有使用到類和對(duì)象的代碼,而OOP代碼是盡可能地使用類和對(duì)象的代碼。
我的建議是完全放棄過(guò)程式代碼。盡可能地使用面向?qū)ο蟮娘L(fēng)格編程-編寫(xiě)類,封裝邏輯,考慮使用真實(shí)世界中的術(shù)語(yǔ)。相比適當(dāng)?shù)腛OP代碼所帶給你的可重用性和未來(lái)開(kāi)發(fā)者能方便地在你的項(xiàng)目繼續(xù)開(kāi)發(fā)的好處,過(guò)程式代碼的性能優(yōu)勢(shì)顯得微不足道。針對(duì)這個(gè)觀點(diǎn)的反對(duì)聲音是“但是,WordPress是過(guò)程式的!”。坦白地說(shuō),這聽(tīng)起來(lái)可能有點(diǎn)刺耳,“WordPress的開(kāi)發(fā)者”并不是真正的PHP開(kāi)發(fā)者,好比擁有了Instagram 就會(huì)是攝影師一樣。請(qǐng)不要認(rèn)為這意味著WP是沒(méi)用的—當(dāng)你不希望花太多時(shí)間開(kāi)發(fā)一個(gè)博客,簡(jiǎn)單的站點(diǎn)和為期一天的小項(xiàng)目時(shí),使用WP開(kāi)發(fā)會(huì)讓你感到驚奇。它非常適合于急于求成或者沒(méi)有太多技術(shù)的人,但掌握WP絕對(duì)無(wú)法使你成為一個(gè)專業(yè)的PHP開(kāi)發(fā)者—它使用意大利面條式的編碼,教你的是不合適的設(shè)計(jì)原則。
從小事做起。想想現(xiàn)實(shí)世界的概念,并嘗試以O(shè)OP代碼表示它。通過(guò)一些基本的教程,并慢慢地熟練掌握OOP。在過(guò)渡到合適的框架和樸所迷離的術(shù)語(yǔ)例如“模型”,“視圖”和“控制器”之前,堅(jiān)持用OOP思想編寫(xiě)代碼直到你大體上理解了類-所有這些都是云里霧里,抽象術(shù)語(yǔ)在OOP中并沒(méi)有堅(jiān)實(shí)的基礎(chǔ)。
剖析現(xiàn)有項(xiàng)目深入到現(xiàn)有的你所能尋找到的源代碼中。例如,查看 PHP projects on Github,克隆它們,部署到自己的主機(jī)上并且試著去閱讀代碼。每一個(gè)文件,每一行,直到你理解它們是做什么的。
尋找具備規(guī)范的注釋,結(jié)構(gòu)良好,而且還在不斷開(kāi)發(fā)的項(xiàng)目。在2008年之前更新的項(xiàng)目并不是太好,如果你要開(kāi)始使用PHP5.5的話—否則你可能會(huì)錯(cuò)過(guò)能使你在已經(jīng)人口過(guò)剩的領(lǐng)域里脫穎而出的PHP最新和最強(qiáng)大的特性。
學(xué)會(huì)搭建自己的PHP開(kāi)發(fā)環(huán)境如果能夠建立自己的環(huán)境是非常不錯(cuò)的能力。自己搭建環(huán)境時(shí)不僅允許你根據(jù)實(shí)際情況進(jìn)行一些微小的調(diào)整,還能讓你熟悉如何從源代碼構(gòu)建擴(kuò)展。
放棄在Windows上開(kāi)發(fā)—如果你主要的桌面環(huán)境是Windows,那么安裝個(gè)虛擬軟件和運(yùn)行一個(gè)Linux虛擬機(jī)—Windows中不區(qū)分大小寫(xiě),它的行結(jié)束符,以及其他的一些東西與大多數(shù)服務(wù)器環(huán)境并不相符,在Windows上開(kāi)發(fā)只會(huì)出現(xiàn)許多麻煩,所以最好在一個(gè)你最終運(yùn)行項(xiàng)目的系統(tǒng)上進(jìn)行開(kāi)發(fā)。
虛擬機(jī)還可以幫助你進(jìn)行一些實(shí)驗(yàn)-如果出現(xiàn)錯(cuò)誤,你可以重新開(kāi)始或者進(jìn)行回滾。你可以盡可能多低去嘗試,只要你想,而不必?fù)?dān)心把事情搞亂了。掌握工具固然重要,但有一個(gè)良好的工作平臺(tái)也是很重要的。
自己進(jìn)行實(shí)驗(yàn)也能讓你熟悉不同的服務(wù)器—是否使用Apache或者Nginx,還是使用Appserver等。
盡早地進(jìn)行最佳實(shí)踐當(dāng)編寫(xiě)代碼的時(shí)候,請(qǐng)確保你有充足的文檔注釋,精美的縮進(jìn)和良好的結(jié)構(gòu)。當(dāng)你構(gòu)建一個(gè)類、項(xiàng)目或庫(kù)的時(shí)候,使用眾所周知的文檔工具(PHPDocumentor, ApiGen)來(lái)提取你的文檔注釋并加以改進(jìn)。
一個(gè)好的IDE也是非常值得的—使用一個(gè)跨平臺(tái)的編輯器能幫助你在任何時(shí)間建立一個(gè)新的開(kāi)發(fā)環(huán)境時(shí),保證你將注意力集中在編寫(xiě)代碼而不是把時(shí)間浪費(fèi)在修改鍵盤(pán)快捷鍵和主題上。確保你備份了IDE的配置文件到谷歌云服務(wù)等地方,這樣你就可以隨時(shí)導(dǎo)入你的配置文件進(jìn)行全新安裝。一個(gè)好的IDE是PHPStorm,或者如果你買(mǎi)不起,或者沒(méi)有需要免費(fèi)許可的開(kāi)源項(xiàng)目,Netbeans是一個(gè)好的選擇,并且兩者都是跨平臺(tái)的。
盡早的進(jìn)行最佳實(shí)踐能幫助你的代碼保持一致,以及其他人能夠更加流暢的閱讀你的代碼。找到你的風(fēng)格,并堅(jiān)持下去-你幫助到的將不只是你自己,還有他人。試著遵循PSR標(biāo)準(zhǔn)(PSR-0, PSR-1, PSR-2, PSR-3)—它們能成為標(biāo)準(zhǔn)是有原因的。我們大多數(shù)人都使用并且喜愛(ài)這些標(biāo)準(zhǔn),它讓每個(gè)人的代碼都具有良好的可重用性和可讀性。
對(duì)于一個(gè)初級(jí)者非常好的且不斷更新的資源是 PHP the right way —學(xué)習(xí)它將能熟悉最新的實(shí)踐,基本的OOP,安全,部署,編碼標(biāo)準(zhǔn)等我所提到的,甚至更多。
嘗試不同的框架,然后選擇一個(gè)長(zhǎng)期以來(lái),PHP是大多數(shù)框架使用的語(yǔ)言(最近JavaScript成為了最多者)。這是否說(shuō)明我們的社區(qū)或者語(yǔ)言的流行程度不一致,我也說(shuō)不清,但事實(shí)仍是,選擇一個(gè)框架是一項(xiàng)艱巨的任務(wù),特別是第一次開(kāi)始選擇。
嘗試過(guò)了其中的大部分框架,我可以全心全意推薦Phalcon框架,因?yàn)樗哂胁诲e(cuò)的魯棒性和質(zhì)量,而事實(shí)上,它是用C編寫(xiě)的并作為PHP的擴(kuò)展被安裝(因此比現(xiàn)在的任何框架都要快)。然而,親自嘗試不同的框架是很有必要的。
當(dāng)你嘗試不同框架的時(shí)候,你會(huì)發(fā)現(xiàn)對(duì)于同樣的問(wèn)題可以用新的方法解決。每個(gè)框架都有你所喜歡的優(yōu)點(diǎn)和你所厭惡的缺點(diǎn),但更重要的是,你將能了解到他人的心態(tài)(尤其是框架的開(kāi)發(fā)者)。你會(huì)看到新的用法和方法,并且最好的實(shí)踐是使用盡可能多的框架重構(gòu)相同的實(shí)驗(yàn)項(xiàng)目。這將幫助你有效地衡量一個(gè)特定框架的功效:使用它進(jìn)行開(kāi)發(fā)的速度和它的性能。
別低估別人的提示和技巧。盡可能多地閱讀—如果你一直堅(jiān)持著,它并不會(huì)花費(fèi)你所想象的那么多時(shí)間。找一個(gè)好的博客并跟隨它,閱讀本站的指南,遍歷StackOverflow的問(wèn)題和答案,訪問(wèn)SitePoint論壇,訂閱簡(jiǎn)訊,跟隨在Google+上的良好資源。避開(kāi)基本的PHP教程書(shū)籍—因?yàn)樵谒鼈円怀霭娴臅r(shí)候就過(guò)時(shí)了—相反,專注于你所能在網(wǎng)上找到的含有最新代碼的片段和指南。即使遇到你已經(jīng)學(xué)習(xí)過(guò)的話題,試著閱讀下—通過(guò)閱讀他人對(duì)于同一個(gè)問(wèn)題的觀點(diǎn),你經(jīng)常會(huì)發(fā)現(xiàn)一些新的東西。
如果沒(méi)有什么事可以做,試著創(chuàng)造一些總是有事可做。永遠(yuǎn)不要說(shuō)“我沒(méi)有項(xiàng)目可做”,或者更糟的“我很無(wú)聊”。如果你沒(méi)有一個(gè)正在進(jìn)行的項(xiàng)目可以做—那就創(chuàng)造一個(gè)。你每天使用的工具是否讓你感到受挫因?yàn)樗煌晟频墓δ??自己做出一個(gè)更好的!對(duì)新產(chǎn)品沒(méi)有想法?那就復(fù)制一個(gè)現(xiàn)有的—試著重建一個(gè)基本的Facebook,重建一些你已經(jīng)知道了的,為了能夠?qū)嵺`一下。
最重要的是永不停止—如果不珍惜每一個(gè)小時(shí),你將不可能積累到10000小時(shí)!繼續(xù)努力,保持自己的興趣和參與熱情。做一個(gè)簡(jiǎn)單的地址簿應(yīng)用。然后用另外一個(gè)框架重建它。并且使用不同的數(shù)據(jù)庫(kù)(例如使用Mongo代替MariaDB)。保持忙碌!
找到一個(gè)搭檔/導(dǎo)師如果有人能和你一起的話,學(xué)習(xí)會(huì)變得更加容易。找到能夠與你共享激情的搭檔。也許你就是那幸運(yùn)的少數(shù)人之一,已經(jīng)擁有一個(gè)搭檔共享你的獨(dú)特興趣。也許你在學(xué)?;蛘叽髮W(xué)里有一個(gè)同行愿意和你一起開(kāi)始并努力學(xué)習(xí)。你甚至可以找到一個(gè)導(dǎo)師,并接受專家的指導(dǎo)。
不要低估搭檔的力量—三人行必有我?guī)熝桑?/p> 總結(jié)
當(dāng)你專注于所有這些條目并且盡可能地掌握它們時(shí),當(dāng)你意識(shí)到這就是你所想要的,那么請(qǐng)堅(jiān)持下去—你正走在成為一個(gè)高級(jí)PHP開(kāi)發(fā)者的路上。維持原則,絕不放棄(即使你身邊有人放棄了)并且堅(jiān)持實(shí)踐。
如果你有一些有用的資源并且想要與我們分享你是如何跨越(或正在跨越)中級(jí)開(kāi)發(fā)者這道坎,請(qǐng)?jiān)谙旅媪粞裕屛覀冎溃?/p>
原文:Becoming a PHP Professional: The Missing Link
轉(zhuǎn)載自:伯樂(lè)在線 - rokety
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/31852.html
摘要:可以說(shuō),美團(tuán)要建設(shè)的就是配送系統(tǒng)的超級(jí)大腦。美團(tuán)超腦配送系統(tǒng)目前互聯(lián)網(wǎng)技術(shù),很大部分還是針對(duì)線上產(chǎn)品和系統(tǒng)研發(fā),整個(gè)流程可以在線上全部完成,而這也正是配送技術(shù)最大的不同和挑戰(zhàn)。 在2018 AI開(kāi)發(fā)者大會(huì)(AI NEXTCon)上,美團(tuán)配送AI方向負(fù)責(zé)人何仁清,分享了美團(tuán)在即時(shí)配送領(lǐng)域中機(jī)器學(xué)習(xí)技術(shù)的最新進(jìn)展,以及如何通過(guò)大數(shù)據(jù)和機(jī)器學(xué)習(xí)手段,建立對(duì)線下真實(shí)世界各種場(chǎng)景的感知能力,還原...
閱讀 3658·2021-11-25 09:43
閱讀 652·2021-09-22 15:59
閱讀 1756·2021-09-06 15:00
閱讀 1779·2021-09-02 09:54
閱讀 699·2019-08-30 15:56
閱讀 1189·2019-08-29 17:14
閱讀 1849·2019-08-29 13:15
閱讀 890·2019-08-28 18:28