作為程序員搏恤,工作中我經(jīng)常會(huì)遇到一些復(fù)雜的需求不知道怎么編寫(xiě)代碼。下面是我被難住時(shí)采取的步驟魏滚。這些建議可以使問(wèn)題解決變得容易。
1坟漱、在編寫(xiě)任何代碼之前鼠次,花時(shí)間仔細(xì)考慮一下這個(gè)問(wèn)題。
2芋齿、編寫(xiě)一個(gè)函數(shù)或編寫(xiě)一個(gè)具有您需要的輸入和輸出的類腥寇。
3、將功能分解為具有明確目標(biāo)的多個(gè)步驟∶倮Γ現(xiàn)在你可能不知道如何實(shí)現(xiàn)這些目標(biāo)赦役,不要擔(dān)心,這是以后的問(wèn)題≌こ矗現(xiàn)在你只是寫(xiě)出你的想法掂摔。
4、為每個(gè)步驟創(chuàng)建一個(gè)函數(shù)赢赊,并在每個(gè)函數(shù)中拋出新的 NotImplementedException()
異常乙漓。函數(shù)的名字可以很長(zhǎng)但要易于解釋,可以明確地表示這個(gè)函數(shù)的作用域携。如果你不知道怎么寫(xiě)也沒(méi)關(guān)系簇秒。
5、現(xiàn)在秀鞭,去實(shí)現(xiàn)其中的一些函數(shù)趋观。你知道他們并不都是很難的扛禽,有些甚至可能很簡(jiǎn)單有趣!樹(shù)立你的信心把容易的函數(shù)先實(shí)現(xiàn)皱坛。取得進(jìn)展的感覺(jué)很好编曼,當(dāng)你專注于編寫(xiě)代碼時(shí),你的想法會(huì)在在大腦中后臺(tái)運(yùn)行剩辟。
6掐场、是時(shí)候解決一些更難的函數(shù)了。就像你之前做的那樣贩猎,把問(wèn)題繼續(xù)分解成幾個(gè)步驟熊户。再將這些步驟中的每一個(gè)都變成具有明確名稱的函數(shù)。把簡(jiǎn)單的實(shí)現(xiàn)吭服。然后再把難的分解成步驟嚷堡。一遍又一遍地這樣做。你會(huì)驚訝于你實(shí)際上能完成多少工作艇棕。
7蝌戒、很快你會(huì)發(fā)現(xiàn) 80% 問(wèn)題已經(jīng)解決了,只剩下幾個(gè)討厭的函數(shù)會(huì)拋出 NotImplemented
≌恿穑現(xiàn)在去搜索你最喜歡的擴(kuò)展庫(kù)北苟、代碼倉(cāng)庫(kù)、問(wèn)答網(wǎng)站等打瘪。您可能不是第一個(gè)需要此功能或組件的人友鼻。站到巨人的肩膀上,然后你會(huì)感慨 “我靠瑟慈,世界上有這么多聰明的程序員桃移!”屋匕。
8葛碧、好的,你已經(jīng)從網(wǎng)上搜索過(guò)了过吻,但你仍然有一些討厭的 NotImplemented
異常进泼。是時(shí)候檢索一下科學(xué)論文了。將問(wèn)題輸入到 arXiv 查詢一下纤虽,這上面有很多計(jì)算機(jī)領(lǐng)域的論文乳绕。可能其他人已經(jīng)解決了與您要解決的問(wèn)題相關(guān)的問(wèn)題逼纸。他們很可能會(huì)提供見(jiàn)解或不同的思路洋措,可以幫助您將問(wèn)題重新組織為可解決的問(wèn)題。如此杰刽,重新構(gòu)思你的問(wèn)題并淘汰那些 NotImplemented
異常菠发。
9王滤、現(xiàn)在你有麻煩了。如果您仍然有一些 NotImplemented
異常滓鸠,并且沒(méi)有可以參考的前人的方案雁乡,也沒(méi)有學(xué)者癡迷于這個(gè)特定領(lǐng)域,那就只能靠你自己了糜俗。大膽思考踱稍,創(chuàng)造性思考。你的事業(yè)就靠它了悠抹。
我認(rèn)為這些是所有程序員都會(huì)采取的步驟珠月,但有時(shí)最好把它列出來(lái)。
我特別看重功能分解楔敌。函數(shù)是一種強(qiáng)大的抽象概念桥温,不僅用于編寫(xiě)更少的代碼,還用于思考問(wèn)題梁丘。
請(qǐng)不要將我對(duì)“函數(shù)”一詞的使用誤解為僅表示函數(shù)式程序員喜歡的那些東西侵浸。我的意思是任何數(shù)據(jù)轉(zhuǎn)換形式:從低級(jí) lambdas 到有狀態(tài)的 IO 處理對(duì)象。
謝謝閱讀氛谜!現(xiàn)在去解決那些難題吧掏觉!
————————————————
本文由木偶筆記發(fā)表于 2022-03-29
轉(zhuǎn)載請(qǐng)務(wù)必保留本文鏈接:https://www.muouseo.com/article/wjkv8gqe62.html