程序員如何才能寫出區(qū)別于IF?
對(duì)于這個(gè)問題,首先要弄明白“if else”的作用是什么,為什么會(huì)有那么多“if else”的代碼邏輯;然后再來考慮如何解決這個(gè)問題。
一分為二“if else”表述的是一分為二的情況,表示一個(gè)業(yè)務(wù)邏輯只有有種狀態(tài),要么是這樣,反之,就是那樣。通常是應(yīng)用在一些能夠簡(jiǎn)單分為兩種情況的環(huán)境中,在這種環(huán)境中,只有兩種可能,如果不是前一種,那么就一定是后一種。這樣的情況放到現(xiàn)實(shí)環(huán)境中,似乎聽起來過于極端,也過于簡(jiǎn)單粗暴,畢竟現(xiàn)實(shí)環(huán)境是很復(fù)雜的;這樣子的極端情況畢竟是少數(shù)。
那為什么會(huì)出現(xiàn)那么多“if else”的代碼呢?其實(shí),原因很簡(jiǎn)單,因?yàn)楹?jiǎn)單;
很多程序員,特別是初級(jí),偏向于簡(jiǎn)單處理問題,并沒有深入考慮過要實(shí)現(xiàn)的業(yè)務(wù)邏輯,簡(jiǎn)單粗暴地將問題一分為二的處理;
對(duì)語(yǔ)言基礎(chǔ)知識(shí)、算法和數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí)和了解不夠,沒有一個(gè)深厚的基礎(chǔ)知識(shí)加持,很多基礎(chǔ)知識(shí)基本上是來自于各種論壇,技術(shù)分享,而這些信息良莠不齊,所以導(dǎo)致基礎(chǔ)知識(shí)一知半解,只知其然,不知其所以然,實(shí)現(xiàn)代碼邏輯的時(shí)候就會(huì)以最簡(jiǎn)單的方式來處理;
時(shí)間限制,很多公司、項(xiàng)目給的開發(fā)時(shí)間是見很急、很倉(cāng)促的;有的時(shí)候連需求都沒有整理清楚就開始了,因?yàn)橐焖偻瓿扇蝿?wù),實(shí)現(xiàn)代碼的時(shí)候就會(huì)按照最簡(jiǎn)單粗暴的方式來處理;
if-else 代碼優(yōu)化else 不到萬(wàn)不得已,不要輕易使用,即便使用,也要清楚的在注釋中清楚、詳細(xì)的說明為什么要使用;
遇到一分為二的代碼邏輯時(shí),可以考慮換種方式來處理:先在if 中使用一種情況做判斷,并在其中處理完相應(yīng)的代碼邏輯后,返回處理結(jié)果;剩下的就是另一種情況了,這時(shí)就不用再使用“else”來處理了;
對(duì)于if - else if else這樣的情況,可以考慮使用“枚舉 + switch”來配合處理不同情況的代碼邏輯;
持續(xù)學(xué)習(xí)作為一個(gè)技術(shù)人員,深厚的基礎(chǔ)知識(shí)是行走IT江湖的內(nèi)功心法,擁有深厚的內(nèi)功,才能做到處變不驚;無論是學(xué)習(xí)新技術(shù)、新語(yǔ)言,還是提升自身實(shí)力,都是需要很深的基礎(chǔ)、底層知識(shí);因?yàn)椴粩鄬W(xué)習(xí),積累、進(jìn)步就顯得尤為重要。
1.語(yǔ)言基礎(chǔ)、底層知識(shí):
良好的語(yǔ)言基礎(chǔ);基礎(chǔ)的數(shù)據(jù)類型,運(yùn)算符、語(yǔ)法、語(yǔ)言的各種特性,也才能更好的使用語(yǔ)言來實(shí)現(xiàn)業(yè)務(wù)邏輯;
明確語(yǔ)言的邊界:明確該語(yǔ)言能做什么、不能做什么;有何不足,不足該如何解決;有何優(yōu)勢(shì),如何更好的發(fā)揮優(yōu)勢(shì);
語(yǔ)言底層編譯、解釋原理:掌握源程序的編譯、解釋過程,才能知道如何才能寫出高效、性能俱佳的代碼,也能更好的實(shí)現(xiàn)程序優(yōu)化;
2.數(shù)據(jù)結(jié)構(gòu)和算法
算法是程序的靈魂,數(shù)據(jù)結(jié)構(gòu)是算法的精髓;優(yōu)秀的算法基礎(chǔ),能夠幫助你寫出高效率、高性能的代碼;使用幾千行代碼才能實(shí)現(xiàn)的極其復(fù)雜的代碼邏輯,使用算法實(shí)現(xiàn)后,可能只需要幾百行、甚至是幾十行代碼,不過這就得要求你及其熟練的掌握數(shù)據(jù)結(jié)構(gòu)和多種算法實(shí)現(xiàn);
3.網(wǎng)絡(luò)、通信協(xié)議
網(wǎng)絡(luò)交互協(xié)議、通信協(xié)議、網(wǎng)絡(luò)分層模型的學(xué)習(xí)也是非常有必要的,比如:TCP/IP,HTTP、HTTPS\SSL\TLS、IPFS等。
4.操作系統(tǒng)
無論是Windows、Mac OSX還是Linux系統(tǒng),不一定都要精通,但要精通其一,在Linux系統(tǒng)的良好性能、優(yōu)秀設(shè)計(jì)的大背景下,Linux系統(tǒng)是一個(gè)不錯(cuò)的方向,當(dāng)然Windows也是可以考慮的方向;將來還有鴻蒙、方舟編譯、Fuchsia等。
5.架構(gòu)設(shè)計(jì)
在完成了多個(gè)項(xiàng)目以后,就可以開始著手整理、總結(jié)整個(gè)項(xiàng)目的架構(gòu)設(shè)計(jì)了;剛開始可以是一個(gè)簡(jiǎn)單的小型項(xiàng)目,然后不斷更新,迭代,要堅(jiān)持下去;等項(xiàng)目達(dá)到一個(gè)體量之后,可以考慮分模塊,分庫(kù)分表的設(shè)計(jì);然后可以考慮引進(jìn)分布式部署,微服務(wù)技術(shù)。
在項(xiàng)目中不斷更新技術(shù),讓自己的技術(shù)跟著自己的項(xiàng)目一起成長(zhǎng)。
完結(jié),希望以上回答能對(duì)你有所幫助。