0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編程的三大經(jīng)驗(yàn)方法總結(jié)

m3eY_edn_china ? 2018-03-05 10:20 ? 次閱讀

今年將迎來(lái)我編程的第十七個(gè)年頭。我的編程之旅始于九十年代末,上大學(xué)的時(shí)候,主要涉足基于表格的網(wǎng)頁(yè)設(shè)計(jì),傳統(tǒng)的ASP,和Microsoft Access數(shù)據(jù)庫(kù)。原來(lái)只是當(dāng)作業(yè)余愛(ài)好的編程現(xiàn)在已經(jīng)成為了我的事業(yè)和激情。我一生一半的時(shí)間都在學(xué)習(xí)、蹣跚、成功、失敗,并且經(jīng)常情不自禁地為代碼美麗和復(fù)雜的天性而折腰。

我在代碼上淫浸了足夠長(zhǎng)的時(shí)間,因此看到了很多語(yǔ)言和平臺(tái)的興盛和消亡,看到了很多模式被普及,被苛責(zé),然后再次被推廣。在某些時(shí)候,我常常分不清這是大勢(shì)所趨還是明日黃花。

編程的流行趨勢(shì)是短暫的,但我堅(jiān)守的規(guī)則,往往在生活中的其他地方也能發(fā)揮作用。事實(shí)上,生活就像代碼(我已經(jīng)買(mǎi)了這個(gè)域名來(lái)證明這一點(diǎn)?。?。以下是我總結(jié)的3個(gè)偉大的經(jīng)驗(yàn)教訓(xùn),歷經(jīng)一次又一次編程和生活的大浪淘沙。

1.可商榷的決定往往是一種權(quán)衡。

偉大的辯論總是發(fā)生在開(kāi)發(fā)社區(qū)中。無(wú)論它是最近關(guān)于TDD作為web開(kāi)發(fā)的一種可行方法的辯論,還是什么水平的開(kāi)發(fā)人員應(yīng)該使用ORM(或micro-ORMs)。無(wú)論是.NET MVC應(yīng)該優(yōu)于WebForms還是以JavaScript為中心的app應(yīng)該比基于頁(yè)面的app更受青睞,對(duì)我來(lái)說(shuō),答案都一樣:看你權(quán)衡之后的取舍?

在任何比較兩種流行方法的辯論中,我們總是會(huì)從自己的立場(chǎng)出發(fā),兩利相權(quán)取其重,兩害相權(quán)取其輕。在我的職業(yè)生涯早期,我曾執(zhí)著于追求所謂的正確答案。感覺(jué)過(guò)程是線(xiàn)性的:擺脫做事的老辦法,轉(zhuǎn)而投向新的并且更好的方法的懷抱。曾經(jīng)有一段時(shí)間我深信,編寫(xiě)自己的SQL查詢(xún)是一種過(guò)時(shí)的練習(xí),并且ORMs是最后贏家。

但是,我了解到,更好的辦法應(yīng)該由內(nèi)容決定的。例如,今天完全成熟的ORMs在隔離映射相關(guān)數(shù)據(jù)網(wǎng)格到對(duì)象的冗長(zhǎng)管道提供了偉大服務(wù),但隔離也使得某種非標(biāo)準(zhǔn)查詢(xún)變得困難并且有潛在的效率低下問(wèn)題。n+1 select problem就是經(jīng)典的在少寫(xiě)代碼和寫(xiě)更多高效代碼之間做權(quán)衡。我使用ORM的程度完全受我期待應(yīng)用程序使用的數(shù)據(jù)量,我所受到的潛在的時(shí)間限制,app長(zhǎng)期可擴(kuò)展性需求這三者的影響。(順便說(shuō)一句,我目前是micro-ORMs,比如說(shuō)Dapper的忠實(shí)粉絲,它能讓我編寫(xiě)我自己的SQL和一些精巧的對(duì)象-關(guān)系映射)。

我已經(jīng)將這個(gè)經(jīng)驗(yàn)應(yīng)用到了我生活的其他方面。我是應(yīng)該買(mǎi)一套公寓還是長(zhǎng)租房子?我是應(yīng)該啟動(dòng)自己的生意還是工作于已經(jīng)成立的公司?沒(méi)有絕對(duì)正確的選擇。當(dāng)你權(quán)衡利弊了之后,你便可以更好地應(yīng)對(duì)生活中的各種難題。

2.清晰并不總和簡(jiǎn)潔相關(guān)。

和大多數(shù)工程師一樣,我對(duì)持續(xù)重構(gòu)一直到代碼盡可能地少和簡(jiǎn)潔的機(jī)會(huì)垂涎三尺。如果可以選擇更少又更簡(jiǎn)潔的代碼來(lái)完成同樣的任務(wù),那么我為什么要選擇要個(gè)更多代碼的方案呢?通常情況下,更簡(jiǎn)潔的語(yǔ)言會(huì)導(dǎo)致更好的交流。畫(huà)蛇添足只會(huì)阻礙核心信息的提取。但是,最終的目標(biāo)不應(yīng)該是簡(jiǎn)潔——而應(yīng)該是可交流。于我而言,下面這段直截了當(dāng)?shù)拇a,在它更長(zhǎng)的時(shí)候……

if (HasFarm() && HasBoat()) { Broadcast("You are wealthy!"); } else if (HasFarm() && !HasBoat()) { Broadcast("You are OK!"); } else if (!HasFarm() && HasBoat()) { Broadcast("You are OK!"); } else if (!HasFarm() && !HasBoat()) { Broadcast("You are poor!"); }

……反而比這個(gè)簡(jiǎn)潔版本更明確。

(HasFarm() && HasBoat()) ? Broadcast("You are wealthy!") : (HasFarm() || HasBoat()) ? Broadcast("You are OK!") : Broadcast("You are poor!");

雖然這是一個(gè)品味問(wèn)題(有些人可能會(huì)覺(jué)得后者看上去更加一目了然),但是我在這里要表述的觀點(diǎn)是,有時(shí)候解釋的最偉大方法并不是簡(jiǎn)化。這個(gè)經(jīng)驗(yàn)也適用于日常生活,我花了大量時(shí)間來(lái)思考怎么樣才能更好地傳達(dá)消息以便于對(duì)方接收——有時(shí)更詳細(xì)的講解并非沒(méi)有價(jià)值,而是更明確傳達(dá)信息的必須。

舉例來(lái)說(shuō),我想要更明確和更詳細(xì)地告訴我爸爸應(yīng)該如何關(guān)閉iPad(“按住右側(cè)的按鈕一段時(shí)間……”)?;蛘?,我看似多此一舉地鍵入了一些我已經(jīng)提交到本地分支的內(nèi)容給我的同事(“剛剛犯的錯(cuò)誤已被修復(fù)”),然后當(dāng)它涉及到部署更新到產(chǎn)品中時(shí),我就能很明確地知道哪些具體的提交被合并和出現(xiàn)(“檢查4812-4822行,其中包括在6/15發(fā)行版本中的DoneDone問(wèn)題,將在今晚的產(chǎn)品發(fā)布中提出來(lái)?!保?。

3.累計(jì)良性債務(wù),并且要持續(xù)償還。

我在一個(gè)特別害怕欠債的家庭中長(zhǎng)大。八十年代中期,我的父母傾其所有又東拼西湊,付了他們第一套房子75%的首付,然后在七年內(nèi)付清了剩余款項(xiàng)。用現(xiàn)金支付是常態(tài)。信用支付在他們看來(lái)幾乎是一種罪過(guò)。作為一個(gè)孩子,我的看法是,債務(wù)完全是壞的。我從不認(rèn)為欠債是一種優(yōu)勢(shì)。

直到我看到其他人是如何對(duì)待債務(wù)的——在我20出頭的時(shí)候——我終于知道了債務(wù)也可以是有益的。如果你能夠合理地承擔(dān)債務(wù),那么之后你也能獲得成功。如果借助現(xiàn)在更好的上升空間可以加速你之后的成長(zhǎng),那么債務(wù)可以成為一筆巨大的財(cái)富。

代碼也是如此。有時(shí)它值得你現(xiàn)在承擔(dān)一點(diǎn)債務(wù)——錯(cuò)過(guò)抽象或者有一些未優(yōu)化的SQL代碼——如果這樣做可以讓你更快地發(fā)布內(nèi)容給不斷增長(zhǎng)的觀眾的話(huà)。關(guān)鍵是要了解你必須償還它,以及你可以在適當(dāng)?shù)臅r(shí)間段之后償還。

這就是債務(wù)在生活和編程中的竅門(mén)。償還債務(wù)需要持續(xù)進(jìn)行。將一周10%的時(shí)間用于重構(gòu),相當(dāng)于你是在按時(shí)支付編碼的信用卡賬單。如果你保持一種持續(xù)、可支撐的還債狀態(tài),那么累積債務(wù)實(shí)際上對(duì)你是有好處的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3565

    瀏覽量

    93536

原文標(biāo)題:17年編程生涯的三大經(jīng)驗(yàn)總結(jié)

文章出處:【微信號(hào):edn-china,微信公眾號(hào):EDN電子技術(shù)設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)設(shè)計(jì)與KeilC編程總結(jié)

    本內(nèi)容總結(jié)了一些單片機(jī)設(shè)計(jì)與KeilC編程經(jīng)驗(yàn)規(guī)則來(lái)方面大家學(xué)習(xí)
    發(fā)表于 12-14 10:41 ?5533次閱讀

    單片機(jī)軟件編程的五大經(jīng)驗(yàn)

    經(jīng)驗(yàn)之一:用“軟件陷阱+程序口令”對(duì)付PC指針的彈飛經(jīng)驗(yàn)之二、不要輕信軟件狗經(jīng)驗(yàn)、話(huà)說(shuō)RAM冗余技術(shù)經(jīng)驗(yàn)之四、話(huà)說(shuō)指令冗余技術(shù)
    發(fā)表于 07-30 22:21

    電力設(shè)備高壓試驗(yàn)方法有哪些?

    華天電力專(zhuān)業(yè)生產(chǎn)串聯(lián)諧振裝置,可進(jìn)行各種高壓試驗(yàn)。電力設(shè)備高壓試驗(yàn)的方法有哪些?高壓試驗(yàn)是檢測(cè)電力設(shè)備能否正常運(yùn)行的一種常見(jiàn)且有效的手段,試驗(yàn)方法當(dāng)然也有很多,華天電力為您整理總結(jié)主要的
    發(fā)表于 11-01 10:11

    3種保護(hù)LED電路方法經(jīng)驗(yàn)總結(jié)

    3種保護(hù)LED電路方法經(jīng)驗(yàn)總結(jié) 1.保護(hù)LED電路中采用保險(xiǎn)絲(管) 由于保險(xiǎn)絲是一次性的,且反應(yīng)速度
    發(fā)表于 11-14 09:57 ?656次閱讀

    線(xiàn)圈天線(xiàn)設(shè)計(jì)經(jīng)驗(yàn)總結(jié)

    線(xiàn)圈天線(xiàn)設(shè)計(jì)經(jīng)驗(yàn)總結(jié)
    發(fā)表于 09-12 17:21 ?224次下載

    PCB布線(xiàn)經(jīng)驗(yàn)(九大經(jīng)典文檔)

    PCB布線(xiàn)經(jīng)驗(yàn)(九大經(jīng)典文檔),PCB布線(xiàn)經(jīng)驗(yàn)(九大經(jīng)典文檔)。
    發(fā)表于 12-25 09:54 ?0次下載

    PCB布線(xiàn)經(jīng)驗(yàn)技巧總結(jié)

    PCB布線(xiàn)經(jīng)驗(yàn)技巧總結(jié),好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-20 15:20 ?0次下載

    我和LabVIEW 一個(gè)NI工程師的十年編程經(jīng)驗(yàn)(PDF及實(shí)例程

    《我和LabVIEW:一個(gè)NI工程師的十年編程經(jīng)驗(yàn)》是作者在學(xué)習(xí)和使用LabVIEW過(guò)程中的經(jīng)驗(yàn)總結(jié)。書(shū)中由淺入深地對(duì)LabVIEW最常用的功能和LabVIEW學(xué)習(xí)過(guò)程中常見(jiàn)的問(wèn)題進(jìn)行了一一
    發(fā)表于 05-06 11:47 ?0次下載

    基于verilog的FPGA編程經(jīng)驗(yàn)總結(jié)

    用了半個(gè)多月的ISE,幾乎全是自學(xué)起來(lái)的,碰到了很多很多讓人DT好久的小問(wèn)題,百度也百不到,后來(lái)還是都解決了,為了盡量方便以后的剛學(xué)ISE的童鞋不再因?yàn)橐恍┬?wèn)題而糾結(jié),把這幾天的經(jīng)驗(yàn)總結(jié)了一下。好了,廢話(huà)不多說(shuō),上料!
    發(fā)表于 02-11 11:22 ?1456次閱讀
    基于verilog的FPGA<b class='flag-5'>編程</b><b class='flag-5'>經(jīng)驗(yàn)總結(jié)</b>

    指針經(jīng)驗(yàn)總結(jié)

    指針經(jīng)驗(yàn)總結(jié)
    發(fā)表于 10-27 15:44 ?19次下載
    指針<b class='flag-5'>經(jīng)驗(yàn)總結(jié)</b>

    深度解讀PLC的編程實(shí)例及經(jīng)驗(yàn)方法總結(jié)

    PLC控制系統(tǒng)的輸入信號(hào)和輸出負(fù)載:繼電器電路圖中的交流接觸器和電磁閥等執(zhí)行機(jī)構(gòu)用PLC的輸出繼電器來(lái)控制,它們的線(xiàn)圈接在PLC的輸出端。
    的頭像 發(fā)表于 11-24 15:39 ?1.5w次閱讀
    深度解讀PLC的<b class='flag-5'>編程</b>實(shí)例及<b class='flag-5'>經(jīng)驗(yàn)方法</b><b class='flag-5'>總結(jié)</b>

    機(jī)器學(xué)習(xí)的12大經(jīng)驗(yàn)總結(jié)

    本文整理了關(guān)于機(jī)器學(xué)習(xí)研究者和從業(yè)者的 12 個(gè)寶貴經(jīng)驗(yàn),包括需要避免的陷阱、需要關(guān)注的重點(diǎn)問(wèn)題、常見(jiàn)問(wèn)題的答案。希望這些經(jīng)驗(yàn)對(duì)機(jī)器學(xué)習(xí)愛(ài)好者有一些幫助。
    的頭像 發(fā)表于 12-13 15:29 ?2644次閱讀

    學(xué)習(xí)plc編程經(jīng)驗(yàn)總結(jié)

    我們以最熟悉的可編程控制器來(lái)說(shuō)說(shuō)如何進(jìn)行理論學(xué)習(xí)和實(shí)踐操作。我認(rèn)為學(xué)習(xí)編程軟件最重要的是理論和實(shí)踐相結(jié)合,特別是編程軟件很難通過(guò)只學(xué)理論就學(xué)會(huì)的,必須輔助大量的實(shí)踐,按時(shí)間上的分配來(lái)說(shuō)應(yīng)該是
    的頭像 發(fā)表于 10-19 09:25 ?4195次閱讀

    常用的種PLC編程方法

    常用的PLC編程方法經(jīng)驗(yàn)法、解析法、圖解法。
    發(fā)表于 05-03 17:45 ?6944次閱讀

    EMI整改經(jīng)驗(yàn)總結(jié)

    EMI整改經(jīng)驗(yàn)總結(jié)
    發(fā)表于 12-20 15:55 ?45次下載