91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

程序員需要學(xué)習(xí)哪些技巧

工程師人生 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-11-13 10:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在過去的七年半中,我在Ronimo游戲公司指導(dǎo)過十幾個(gè)程序員實(shí)習(xí)生,審閱了數(shù)百份簡(jiǎn)歷。我發(fā)現(xiàn)他們中的大多數(shù)都需要學(xué)習(xí)一件事情。你可能以為這是某一技術(shù)、算法、數(shù)學(xué),或其它形式的某方面知識(shí)。當(dāng)然,他們的確需要彌補(bǔ)這些知識(shí),但是在我看來,這些都不是最重要的。他們要去學(xué)習(xí)的最重要的一件事是:自律。這種自律體現(xiàn)在:編寫盡可能清晰的代碼;重構(gòu)代碼以消除因后續(xù)開發(fā)中的變化所造成的混亂;移除從未用過的代碼并且添加注釋。

我指導(dǎo)實(shí)習(xí)生的大部分時(shí)間不是在高級(jí)技術(shù)或引擎細(xì)節(jié)的解釋上,而是讓他們寫出更好的代碼。我總是會(huì)問實(shí)習(xí)申請(qǐng)者:要成為一名優(yōu)秀的程序員,你們認(rèn)為哪些是重要的?他們的回答通常是:代碼要清晰,易懂,便于維護(hù)。這當(dāng)然是我想聽到的,但是很少有年輕的程序員能從一而終地去實(shí)踐。

做到這些需要自律,因?yàn)檫@意味著代碼不能停留于“實(shí)現(xiàn)了功能”。假設(shè)所有的變量都被隨意地命名,代碼依然能夠完美運(yùn)行,但是閱讀性很差。從短期看,從“功能型代碼”到“清晰型代碼”帶來的回報(bào)很少:代碼原本就可以運(yùn)行,對(duì)其清理之后代碼仍然可以運(yùn)行。這就是為什么需要自律來完成這一步,這也是為什么參加實(shí)習(xí)會(huì)很有幫助:一個(gè)好的導(dǎo)師會(huì)非常注重代碼的質(zhì)量(盡管不同的人對(duì)“好的代碼”有不同的定義),從而要求實(shí)習(xí)生進(jìn)一步改進(jìn)完善,走到下一個(gè)階段。

下面給出幾個(gè)例子,這些是我在新手程序員所寫的代碼里經(jīng)??吹降膯栴}:

名不副實(shí)的函數(shù)/變量/類

這些函數(shù)、變量、類所做的事情并不是他們名字所暗示的那樣,這些名字具有欺騙性。顯然名字應(yīng)該反映真實(shí)的內(nèi)容,但讓我吃驚的是,名不副實(shí)這種情況常常出現(xiàn)。

舉個(gè)例子,我最近偶然看到以前一個(gè)實(shí)習(xí)生寫的兩個(gè)類:EditorGUI 和 EditorObjectCreatorGUI,這代碼本是用來處理編輯器里的界面。令我吃驚的是,創(chuàng)建新對(duì)象的按鈕的代碼放在了 EditorGUI 里面,而EditorObjectCreatorGUI則是處理不同對(duì)象間的操作,這都跟名字所暗示的完全相反!盡管代碼比較簡(jiǎn)單,但我花了好大一會(huì)兒才弄明白,因?yàn)槲一陬惷Q作出了完全錯(cuò)誤的假設(shè)。這個(gè)案例的解決辦法很簡(jiǎn)單:重命名為 EditorObjectCreatorGUI和 EditorObjectNavigationGUI,僅僅做一小步就可以大大提高閱讀性。

命名不準(zhǔn)確這種情況我見到很多。之所以頻繁發(fā)生,是由于代碼在不斷地演變。最初選擇那個(gè)命名時(shí)可能是正確的,但一到代碼完成之后,命名可能就變得不準(zhǔn)確甚至錯(cuò)誤的了。這個(gè)陷阱提醒我們應(yīng)該始終把命名記在心上,在你添加一段代碼的時(shí)候就要弄清楚,這與函數(shù)或類的名稱是否相稱。

推薦閱讀:《程序員最頭疼的事:命名》

混淆不清的類

另一個(gè)問題是混淆不清的類,即一個(gè)類做了很多不相關(guān)的事情。當(dāng)你長(zhǎng)時(shí)間專注于同一塊代碼時(shí),就可能這個(gè)問題。新功能用最簡(jiǎn)單的方法實(shí)現(xiàn),到了某種程度,類就會(huì)變得臃腫,做了很多不相關(guān)的事情。有時(shí)候類變得臃腫不在于代碼規(guī)模的大?。阂粋€(gè)類可能只有幾百行,但它卻包含了不屬于本類功能的代碼。

舉個(gè)例子,如果一個(gè)GUI類需要“分析哪些紋理可供使用”(設(shè)想有個(gè)按鈕用于選擇紋理),如果GUI類是唯一一個(gè)需要這種分析結(jié)果的類,那么在GUI類里實(shí)現(xiàn)它是很合理的。但是,這時(shí)一個(gè)完全不相關(guān)的gameplay類也需要這種分析結(jié)果的信息,因此你將GUI類傳遞給gameplay類來查詢紋理信息。這個(gè)時(shí)候GUI類就多出一種東西了:它是GUI類,同時(shí)也是TextureAnalyser類。這個(gè)案例的解決方案很簡(jiǎn)單:從TextureAnalyser類分割出一個(gè)獨(dú)立的類,這個(gè)類可同時(shí)被GUI類和gameplay類使用。

避免這種問題的最好方法是在每次寫代碼前三思:我在這里添加的功能跟類的名稱符合嗎?如果不符合,那么就要對(duì)類重命名,或者將其分割成獨(dú)立的類,或者把這段代碼放到其他的類中。

如果想不出來一個(gè)跟類非常匹配的名字,這通常是代碼異味(Bad Smell)。如果找不到合適的名字描述這個(gè)類,可能因?yàn)樗龅氖虑樘祀s了。這時(shí)可以將它分割成幾個(gè)部分,并且每個(gè)部分用一個(gè)恰當(dāng)?shù)拿謥砻枋觥?/p>

體積龐大的類

這問題跟上面所說混淆不清的類很相似:隨著時(shí)間的推移,越來越多的代碼被添加到一個(gè)類里,使得其變得臃腫。在這種情況下盡管放在一個(gè)類是很合理的,但是類的體積變得很大。超大的類處理起來是很麻煩的,當(dāng)很多代碼對(duì)同一個(gè)私有成員變量進(jìn)行操作時(shí),bug就很容易出現(xiàn),并且人也很容易忽略很多細(xì)節(jié)。

分割一個(gè)超大的類是件相當(dāng)無聊的工作。當(dāng)代碼高度交錯(cuò)時(shí),這也具有很大的挑戰(zhàn)性。分隔代碼需要高度的自律,因?yàn)檫@只是對(duì)已有的代碼進(jìn)行增加或修改而保持原有的功能不變。

Ronimo公司有一個(gè)規(guī)定,保持類的代碼在500行以下,函數(shù)的代碼在50行以下。有時(shí)候這是不可行也不合理的,但是通常來說,不管哪一個(gè)類或函數(shù)超出了這個(gè)規(guī)定,我們都會(huì)尋找辦法將其重構(gòu)或者分割成更小的,更易于管理的片段。(這讓我很好奇:你覺得這個(gè)限制應(yīng)該是多少行?可以在評(píng)論中留言。)

代碼注釋

實(shí)習(xí)申請(qǐng)人給我們發(fā)過來的樣本代碼幾乎都有一些被注釋的代碼塊,但并沒有說明為什么會(huì)做這個(gè)注釋。是代碼存在錯(cuò)誤需要修改嗎?還是代碼過舊需要更新?注釋掉的代碼為什么會(huì)在這里?當(dāng)我們問起申請(qǐng)人時(shí),他們對(duì)這些被注釋的代碼也顯得很疑惑,但是奇怪的是,總會(huì)有一些原因不明的被注釋的代碼。

代碼重復(fù)

另一個(gè)我經(jīng)??吹降膯栴}是有相似功能的代碼重復(fù)出現(xiàn)。

舉個(gè)例子,從紋理名字也許可以看出這東西的用途,如TreeBackground.dds。為了知道這個(gè)紋理是否可以用于一棵樹,我們檢查以Tree開頭的文件名。也許當(dāng)使用SDK后我們能很快找到,使用beginsWith(”Tree”)就行了。這個(gè)代碼很短,如果需要用到它,直接粘貼到那兒就可以了。這就是代碼重復(fù),并且人人都知道代碼重復(fù)是應(yīng)該避免的,如果重復(fù)的代碼很短,那么最吸引人的做法是直接復(fù)制粘貼。在這兒的問題很明顯:以后如果要檢查這個(gè)紋理是否適用于別的東西,我們就要進(jìn)行散彈式修正,一個(gè)地方一個(gè)地方修正了。

通常比較好的做法是,如果代碼功能特殊,不要去復(fù)制,而是把它放到一個(gè)函數(shù)里。盡管代碼很短很短,并且調(diào)用一個(gè)函數(shù)比粘貼需要寫更多的代碼,但是你要學(xué)會(huì)這么做,這也需要高度的自律。

本文所討論的主題很淺顯,大多數(shù)人在上大學(xué)一年級(jí)的時(shí)候已經(jīng)學(xué)過了。難就難在從知道這些東西到實(shí)際花時(shí)間遵循它們,再到把它們記在心里。這就是為什么所有在Ronimo實(shí)習(xí)過的人學(xué)到的最重要的東西不是知識(shí),而是自律。

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

    關(guān)注

    30

    文章

    4970

    瀏覽量

    74019
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    956

    瀏覽量

    30946
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    堆棧的原理揭秘

    百度百科試圖傳遞的信息翻譯為人話: 2. 為什么需要堆棧?首先,為什么需要堆棧?真的是搞計(jì)算機(jī)的那幫宅男吃飽了撐的嗎? 【編者注:必須不是!魯迅曾經(jīng)說過:“不想偷懶的程序員不是好程序員
    發(fā)表于 01-23 07:08

    芯盾時(shí)代SDP助力企業(yè)應(yīng)對(duì)核心機(jī)密泄露危機(jī)

    無論你是程序員、文案、財(cái)務(wù),無論你想擼代碼、出海報(bào)、做報(bào)表,各式各樣的AI總能滿足你的需求,讓你的工作更加輕松。
    的頭像 發(fā)表于 12-26 11:49 ?686次閱讀

    大理的AI野心藏不住了——風(fēng)花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會(huì)暨大理人工智能與應(yīng)用國(guó)際開發(fā)者大會(huì)在大理圓滿落幕。
    的頭像 發(fā)表于 12-24 17:45 ?728次閱讀
    大理的AI野心藏不住了——風(fēng)花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    程序員最常見謊言

    了。 28我已經(jīng)測(cè)試過了,這個(gè)功能沒問題,可以上線了。 29別擔(dān)心,這個(gè)問題很快就能解決。 30代碼快寫完了,已經(jīng)完成 90% 了 。 希望大家對(duì)程序員多一些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點(diǎn)
    發(fā)表于 12-10 08:24

    軟通國(guó)際亮相2025沙中開源與AI科技峰會(huì)

    2025年11月11日,由沙特程序員協(xié)會(huì)(parmg)主辦的"2025沙中開源與AI科技峰會(huì)"在利雅得盛大啟幕。
    的頭像 發(fā)表于 11-14 17:45 ?1489次閱讀

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動(dòng)圓滿收官

    1024程序員日”系列活動(dòng)至此劃上了一個(gè)圓滿句號(hào)。本屆1024程序員節(jié)以“AI構(gòu)建世界,智能引領(lǐng)未來”為主題,廣邀技術(shù)大咖、產(chǎn)業(yè)領(lǐng)袖、企業(yè)代表與全球開發(fā)者齊聚星城
    的頭像 發(fā)表于 10-27 18:59 ?792次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動(dòng)圓滿收官

    開鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開源鴻蒙構(gòu)建大會(huì)圓滿落幕!

    10月24日,由開鴻智谷聯(lián)合主辦的長(zhǎng)沙1024程序員節(jié)暨開源鴻蒙構(gòu)建大會(huì)在長(zhǎng)沙圓滿落幕。本次活動(dòng)以“湘聚長(zhǎng)沙,共赴熱AI”為主題,通過技術(shù)分享與實(shí)戰(zhàn)競(jìng)賽相結(jié)合的方式,著力培養(yǎng)“開源鴻蒙+AI”領(lǐng)域
    的頭像 發(fā)表于 10-27 17:58 ?720次閱讀
    開鴻智谷“以賽促學(xué)、以賽選才”|1024<b class='flag-5'>程序員</b>節(jié)暨開源鴻蒙構(gòu)建大會(huì)圓滿落幕!

    如何在機(jī)器視覺中部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

    人士而言往往難以理解,人們也常常誤以為需要扎實(shí)的編程技能才能真正掌握并合理使用這項(xiàng)技術(shù)。事實(shí)上,這種印象忽視了該技術(shù)為機(jī)器視覺(乃至生產(chǎn)自動(dòng)化)帶來的潛力,因?yàn)樯疃?b class='flag-5'>學(xué)習(xí)并非只屬于計(jì)算機(jī)科學(xué)家或程序員。 從頭開始:什么
    的頭像 發(fā)表于 09-10 17:38 ?919次閱讀
    如何在機(jī)器視覺中部署深度<b class='flag-5'>學(xué)習(xí)</b>神經(jīng)網(wǎng)絡(luò)

    跟老齊學(xué)Python:從入門到精通

    礎(chǔ)的學(xué)習(xí)者介紹一門時(shí)下比較流行、并且用途比較廣泛的編程語(yǔ)言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關(guān),但與學(xué)習(xí)者未來程序員職業(yè)生涯有關(guān)的內(nèi)容。 獲取完整文檔資料可下載附件哦?。。?! 如果內(nèi)容
    發(fā)表于 06-03 16:10

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語(yǔ)言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗(yàn)】+ 入門篇學(xué)習(xí)

    10.AI Agent開發(fā)模式走向了零代碼可視化模式(需要我們程序員對(duì)此有著觀念上的轉(zhuǎn)變),但是掌握編程技術(shù),有助于AI Agent的開發(fā)進(jìn)階
    發(fā)表于 05-02 09:26

    計(jì)算機(jī)網(wǎng)絡(luò)排錯(cuò)思路總結(jié)

    明人不說暗話,這篇文章我們來聊一個(gè)非常有用,同時(shí)也是程序員必備的技能,那就是網(wǎng)絡(luò)排錯(cuò)思路大總結(jié)。
    的頭像 發(fā)表于 04-01 17:32 ?904次閱讀
    計(jì)算機(jī)網(wǎng)絡(luò)排錯(cuò)思路總結(jié)

    如何在 樹莓派 上編寫和運(yùn)行 C 語(yǔ)言程序?

    ,一本很好的書是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。這本書對(duì)經(jīng)驗(yàn)豐富的程序員和想學(xué)習(xí)C語(yǔ)
    的頭像 發(fā)表于 03-25 09:28 ?1174次閱讀
    如何在 樹莓派 上編寫和運(yùn)行 C 語(yǔ)言<b class='flag-5'>程序</b>?

    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python程序?

    是一種非常有用的編程語(yǔ)言,其語(yǔ)法易于閱讀,允許程序員使用比匯編、C或Java等語(yǔ)言更少的代碼行。Python編程語(yǔ)言最初實(shí)際上是作為L(zhǎng)inux的腳本語(yǔ)言而開發(fā)的。Py
    的頭像 發(fā)表于 03-25 09:27 ?2068次閱讀
    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python<b class='flag-5'>程序</b>?

    Gemini Vision + Raspberry Pi 化身“數(shù)字導(dǎo)盲犬”?

    本文討論了一位程序員利用樹莓派、攝像頭、Gemini和Python構(gòu)建PeregrineEye設(shè)備,使其成為“數(shù)字導(dǎo)盲犬”為視障者服務(wù)的項(xiàng)目經(jīng)歷,包括項(xiàng)目靈感、功能、構(gòu)建過程、遇到的挑戰(zhàn)及未來計(jì)劃等
    的頭像 發(fā)表于 03-25 09:20 ?1944次閱讀
    Gemini Vision + Raspberry Pi 化身“數(shù)字導(dǎo)盲犬”?