国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

成為優秀程序員的7個方法

工程師人生 ? 來源:網絡整理 ? 作者:工程師吳畏 ? 2018-11-21 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

程序員總是有很多的決定,不是嗎?如果你的新年待辦事項還是空白的話,那么可以考慮使用下面這些程序員的想法。即使是最聰明的人,也還有成長空間。以下內容摘錄自 Kevlin Henney 的《程序員應該知道的97件事》。

1.在怪罪其他東西之前先檢查自己的代碼

質疑一下你自己和他人的預設情況。來自不同供應商的工具,可能內置有不同的預設,也有可能相同的供應商提供不同的工具。

當有人想你報告一個你無法重復的問題之時,去看看他們做了些什么。他們可能會做一些你沒有想到的事情,或者是按照不同的順序來做那件事。

我的原則是,如果我遇到一個我無法避免的bug時,我會首先考慮是編譯器的錯誤,然后我就會去檢查堆棧是否被破壞了。這可以通過跟蹤代碼來實現,可以有效地移除問題。多線程問題是另一個絞盡腦汁也不容易找到的錯誤來源,通常還伴隨著機器的錯誤。當一個系統使用多線程的時候,所有的簡單的代碼的錯誤都會成倍地增長。不能依靠調試和單元測試去發現這樣的兼容性問題,所以簡單的設計是最重要的。

總之,在你怪罪你的編譯器之前,請記住福爾摩斯的忠告:“當你把所有的不可能都排除了,那么剩下的東西,無論他有多么的不可能,都必定是真相?!盌irk Gently也說了類似的話。

——Allan Kelly

2.持續學習

我們生活在一個有趣的時代。隨著全球化的發展,你要知道有大量的人都能勝任你的工作。你需要不斷地學習,以維持競爭力。否則,你會成為一個落伍的人,永遠做著相同的工作,直到你不再被需要,或者這個工作被廉價外包給其他人的那一天。

因此,你打算做些什么呢?有些大方的老板會提供訓練來拓寬你的技能。而其他的公司并不會給你空閑的時間和金錢去做任何的訓練。所以為了工作的穩定,你需要為自己的教育負責。

這里是一些讓你持續學習的方法清單。其中許多都能夠隨便在網上找到:

閱讀書籍、雜志、博客、Twitter和其他網站。如果你想對一個目標進行更深入的研究,考慮添加一個郵件列表或新聞組

如果你真想專注于某一種技術,那就動起手來——寫一些代碼

成為行業的頂尖人物可能會妨礙你的學習,你得盡量與導師合作。雖然你可以從任何人那里學到東西,但是從那些比你更聰明或更有經驗的人那里你能夠學得更多。如果你不能找到一個導師,那就繼續去找

使用虛擬的導師。在網上找一些作者或者開發人員,他們寫的東西你都會喜歡并且都會看的。訂閱他們的博客

了解你所使用的框架和庫。知道了他們是如何工作的,你使用起來就更得心應手。如果他們是開源的,你就很幸運了。使用調試器來單步執行,去觀察他們內部是如何運作的。你將會看到那些真正聰明的人所編寫和審閱的代碼

當你做錯了或者是在修復bug,或者是碰到一個問題的時候,嘗試去深入了解到底發生了什么。有可能其他人也遇到了同樣的問題,并且把2他發布在了網上。Google這時候就非常有用了

學習一樣東西的一個好方法就是去傳授和談論它。當人們想要聽你講解并且想問你問題的時候,你就會更加積極地去學習。在工作中使用lunch-‘ n’-learn方法,可以是一個用戶組或者是一個本地的協會

加入或者創辦一個研究小組(社區的模式)或本地用戶組,可以研究你們感興趣的語言,技術或者是法律

多去參加會議。如果你不能去,很多的會議都會把內容免費發布到網上的

想要長期通勤?聽一下博客吧

你是否曾經在一個代碼庫上運行一個靜態分析工具或者在你的IDE里看到一些警告?弄明白他們報告的是什么,為什么要報告

遵循高效程序員的建議,每年學習一門新的語言。至少學習一門新的技術或者是一個新的工具。弄一個分支出來添加上你的想法,以便你能夠在你目前的知識庫里使用

并不是你應該學的每一樣東西都必須跟技術有關。學習你工作領域的一些東西,能夠讓你更加了解需求,并且能夠給幫助你解決一些商業問題。學習如何提高工作效率,學習怎樣更高效低工作是一個不錯的選擇

返回學校

如果你有《黑客帝國》里的尼奧那樣的能力就好了,能夠直接下載我們需要的東西到大腦里面去。但是我們并沒有,所以必須花費一定的時間去學習。你不必每時每刻都在學習。一點點時間足以,比如一周一次,有總比沒有好。我們總得有一些工作之外的生活。

科技發展如此迅速,我們不要被甩在后面了。

——Clint Shank

3.不要害怕破壞某些東西

每一個具有行業經驗的人無疑曾在一個充滿不穩定性的項目中工作過。這個系統是很難重構的,通常改變一個地方就會觸及到另一個不相關的地方。每當要添加一個模塊的時候,程序員的目標都是盡量少改動,在每一個版本中都是小心翼翼的。這就和把建造摩天大樓當做搭積木一樣,容易造成災難。修改對的時候是非常傷腦筋的,因為系統已經生病了。它需要一個醫生,否則狀況就會越來越差。雖然你已經知道了你系統發生了什么錯誤,但是你還是害怕“打破雞蛋去煮你的煎蛋卷”。一個熟練的醫生知道,為了做手術就必須開刀,而且她也知道開刀只是暫時的,而且很快就會愈合。對于最初的疼痛來說,做手術是非常有價值的,患者通常都會獲得比做手術前更好的狀態。

不要去擔心你的代碼。當你在做事的時候如果暫時被打斷,誰會去擔心呢?對改變的恐懼會讓你的項目將進入這樣的狀態?;ㄒ恍r間去重構項目會讓你節約很多的時間。還有一個額外的好處就是一個團隊面對這個損壞的系統的處理經驗會讓你們明白該怎樣才能讓它正常工作。要學會運用這些知識,而不是抵觸他們。每個人都不應該把時間花在自己所討厭的東西上。重新定義內部接口,重組模塊,重構、復制、粘貼代碼,并通過減少依賴來簡化設計。你可以通過消除極端情況來減少代碼的復雜度,他們通常會產生不當的耦合性。慢慢地將舊架構過渡到新的架構,邊改邊測試。試圖在一個可能產生很多問題的大項目上進行一次大的重構,這些問題可能慧然你在中途就放棄之前所作的所有的努力。

作為一個醫生,是不應該害怕切除患病的部位,以留出愈合的空間。態度是會傳染的,并且會激勵其他人去對那些一直拖延著的項目進行修改。去列出一個團隊都感覺良好的項目的清單。雖然這些任務可能不會產生明顯的效果,但你得去說服管理層,他們就會減少開支,加速對新版本的開發。永遠不要停止關心代碼的總體“健康度”。

——Mike Lewis

4.做專業的程序員

一個專業的程序員最重要的特征就是個人責任感。專業的程序員會對自己的生涯、自己的估計、自己的日程安排、自己的錯誤以及自己的作品負責。一個專業的程序員是不會把這些責任推給其他人的。

如果你是一個專業人員,那么你就會對自己的工作負責。你有責任閱讀和學習。你有責任追趕業界及技術的潮流。而很多程序員都認為這是他們上司的工作。對不起,這是大錯特錯的。你認為醫生也會那樣做嗎?你認為律師也是那樣的嗎?不是的,他們會利用自己的時間和金錢去學習。他們花費大量的下班時間去閱讀期刊和做出計劃。他們會時刻更新自己,我們也必須這樣做。你和雇主之間的關系只是為了履行合同。總之:你的雇主承諾給你工資,你就得承諾去把這份工作做好。

專業的程序員會對他們編寫的代碼負責。如果他們不清楚代碼是否會正常的工作,就絕不會輕易放出代碼。試想一下,如果打算放出一個不確定的代碼,你還有可能是一個專業的程序員嗎?專業的程序員都不希望QA來發現他們的錯誤,因為他們如果不經嚴格測試是不會放出代碼的。當然,QA也許會找到一些問題,因為沒有什么是完美的嘛。但是作為專業人士,重要的是我們的態度,我們決不能讓QA找到什么問題。

專業人士都是團隊合作。他們會對整個團隊的未來負責,這并不是他們個人的工作。他們互相幫助,彼此教導,互相學習,甚至包括別人需要的任何時候。當一個隊友倒下,其他人都會去關心,因為他們知道他們都有互相需要的時候。

專業的人士是不會容忍一大串bug列表的。一個巨大的bug清單是非常粗心的。一個在問題跟蹤數據庫里有成百上千問題的系統是粗心釀成的悲劇。事實上,在大多數的項目中,如果非常依賴問題跟蹤系統,那么他們肯定總是粗心大意的。只有非常大的系統才可能會又這么長的bug清單,這個時候需要的是自動化的管理。

專業人士不會把事情弄得一團糟,他們會對自己的工作引以為豪。他們保持代碼的整潔,結構的良好,而且便于閱讀。他們跟隨著默認的標準而且做出了很好的實踐。他們永遠不會趨之若鶩。假設你能夠在醫生給你做開放式心臟手術的時候靈魂出竅。這個醫生有一個最后期限(只是字面意義上的)。他必須在心肺循環功能損失過量血細胞之前完成。你覺得他該怎么做?你是想要他們像典型的軟件開發人員那樣匆忙而且混亂嗎?或者想要他們說“我待會兒再回來解決”?還是你要他們小心地遵循著紀律,抓緊時間,相信他自己的做法是目前可以采取的最好的方法。你是想要一片混亂還是專業精神呢?

專業人員得有責任感。他們會對自己的事業負責。他們會對代碼的正常運行負責。他們對自己工作的質量負責。即使最后期限迫在眉睫,他們也不會放棄自己的原則。事實上,當壓力越來越大的時候,專業人員甚至會對這些原則要求得更緊,因為他們認為這是對的。

——Robert C. Martin (Uncle Bob)

5.利用代碼分析工具

測試的價值是在他們編程之旅的早期階段就灌輸給開發者的。今年來,單元測試,測試驅動開發,以及敏捷方法的興起都被大量地用于開發周期的每一個過程。然而,測試只是眾多能夠提高代碼質量的工具之一。

回到早期階段,當C語言還是一個新興的技術的時候,CPU的時間和存儲的形式都是非常珍貴的。第一個C語言編譯器注意到了這一點,所以通過一些語義分析減少了便利代碼的次數。這意味著在編譯階段,只能檢測到一小部分的錯誤。為了彌補這個,Stephen Johnson編寫了一個叫做lint的工具,這個工具能夠取出你的代碼中的一些冗余,實現了在其相似的C編譯器中已經去除的靜態分析。然而,靜態分析工具,會增加大量的無用警告或者是一些關于文體問題的不必要的警告。

當前,語言、編譯器和靜態分析工具的情況是非常不同的。內存和CPU時間現在也變得非常的便宜,所以編譯器能夠承擔更多的錯誤檢測。幾乎每一種語言都至少擁有一個工具來檢查違規的格式和常見的問題,不過有時,那些隱含的錯誤并不會被檢測到,比如潛在的空指針引用。對于更復雜的工具,比如針對C的SPlint,針對Python的Pylint,都是可配置的,也就是說,你可以通過一個配置文件選擇這個工具在命令行或者是IDe里要發出什么錯誤和警告。SPlint甚至會讓你在注釋里注釋你的代碼,以給別人更多關于程序運行的提示。

如果一切都失敗了,你發現你自己正在尋找一些你的編譯器或IDE或lint工具沒有捕獲的簡單的bug或者是一些違規行為,你就得收起你所有的靜態分析工具。這并不像聽起來那么困難。大多數編程語言,尤其是那些聲稱是動態的語言,都會把他們的抽象語法樹和編譯工具作為其標準庫的一部分。去了解你正在使用的這個語言的開發團隊的標準庫的細節是非常有意義的,因為這樣你就能發現一些有價值的東西,這對于靜態分析和動態測試是非常有用的。比如:Python標準庫包含了一個反匯編程序,它會告訴你生成一些編譯程序和目標程序的字節代碼。這對編譯器作者python-dev團隊來說貌似是一個不起眼的工具,但是它實際上在日常工作中發揮著不同尋常的作用。這個庫能夠反匯編出來你最后一次堆棧跟蹤的信息,這會給你恰當的反饋,因為字節碼指令會把最后一次未捕獲的異常扔在那里。

所以,不要把測試放在質量保證工作的最后,利用好分析工具,不要害怕把自己的錯誤展示出來

——Sarah Mount

6.和你的朋友一起使用Ubuntu哲學

所以很多時候,我們獨立地編寫代碼,這些代碼反映了我們個人對問題的理解,也反映了一個非常個性化的解決方案。我們可能會是團隊的一部分,但是我們仍然會是獨立的,因為這是一個團隊。我們很容易忘記這些獨立編寫的代碼會被其他人所執行、使用、擴展和依賴。這是在開發軟件中容易被忽略的社交的一面。創造軟件是一個混合了技術和社交的活動。我們只需要經常抬頭,這樣才會意識到我們并不是孤立地工作的,我們都有責任去提高個人成功的可能性,而不只是為了開發團隊。

你可以在孤立的環境下寫出高質量的代碼,但這樣會失去自我。從一個角度來看,那是一個以自我為中心的方法(不是自大,而是自我)。這也是一個禪宗的觀點,他就是針對你編寫代碼那一過程的。我總是試著進入這個環節,因為它會讓我離高質量更加接近,但那之后我就會陷入這個環節。我的團隊現在處于什么環節?我的環節和團隊的是一樣的嗎?

在祖魯語中,Ubuntu的哲學被概括為“Umuntu ngumuntu ngabantu”,可以大致翻譯為“A person is a person through (other) persons.”(人與人之間是互相聯系的。我會變得更好因為是你,通過你的行為讓我變得更好。在另一方面,當我做自己的事做得糟糕的時候你也會在你所做的事情上變糟。對于開發者來說,我們可以這樣理解“A developer is a developer throuth (other) developers.”(開發者與開發者之間是相互聯系的),也可以說“Code is code through (other) code.”(代碼與代碼之間是相互聯系的)

我寫的代碼的質量會影響到你寫的代碼的質量。如果我的代碼質量很差會怎樣呢?即使你寫了很整潔的代碼,但由于你會使用我的代碼,所以你的代碼也會降低到和我的代碼質量差不多的地步。你可以使用很多模式和技術去降低損失,但是損失已經造成了。我建議你去做一些必須做的事之外的一些事情,這是因為當我在做自己的事情的時候我并不會去考慮你。

我會認為我的代碼是非常整潔,但我還是認為如果我使用Ubuntu哲學我可以做得更好。Ubuntu哲學到底是什么?它看起來就像是一段良好的整潔的代碼。它并不是簡單的代碼,而是一件藝術品。它是跟創造藝術有關的行為。和你的朋友一起使用Ubuntu哲學將會幫助你的團隊守住你們的價值觀,增強你們的原則。如果有其他人在任何情況下接觸到你的代碼,都會變成一個更加優秀的開發者。

禪宗是有關個人的。對于一群人來說,Ubuntu也是一種禪宗。我們幾乎不會看到只為自己而寫的代碼。

——Aslam Khan

7.你必須關心你的代碼

不用福爾摩斯我們就會知道好的程序員才能寫出好的代碼。糟糕的程序員嘛…就不會。他們會產生我們必須清理的垃圾。你想寫出好的東西,是不是?那你其實就是想去做一個好的程序員。

優秀的代碼并不會無中生有。它并不像行星對齊那樣是靠運氣才產生的。為了獲得優秀的代碼,你就得努力去爭取。這有些辛苦。如果你真的關心優秀的代碼你就會寫出很好的代碼。

優秀的程序并不單單來自技術能力。我曾見過一些有很高能力的程序員,他們能夠寫出給人很深印象的算法,他們把編程語言的標準爛熟于心,但是他們卻寫出了最糟糕的代碼。這些代碼閱讀起來非常痛苦,用起來也痛苦,修改起來也痛苦。我也曾見過更多謙卑的程序員,他們堅持寫出更加簡單的代碼,他們寫出來非常優雅非常富有表現力的程序,和他們工作簡直就是享受。

根據我在軟件行業多年的經驗,我得出了這樣的結論,一般的程序員和偉大的程序員之間真正的區別是:態度。優秀的程序使用了專業的方法,并在現實世界的約束和軟件產業壓力之下盡量寫出最好的軟件。

代碼的鋪就都得有一個良好的計劃。要想成為一個優秀的程序員,你就必須做出很好的計劃,并且真正關心起代碼——培養積極的觀點,養成良好的態度。偉大的代碼是由工匠大師精心打造的,絕不是由滿湖的程序員或自稱編碼大師的程序員在不經意間就完成的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序員
    +關注

    關注

    4

    文章

    956

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何成為編程高手

    的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重
    發表于 12-29 06:57

    芯盾時代SDP助力企業應對核心機密泄露危機

    無論你是程序員、文案、財務,無論你想擼代碼、出海報、做報表,各式各樣的AI總能滿足你的需求,讓你的工作更加輕松。
    的頭像 發表于 12-26 11:49 ?665次閱讀

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

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

    程序員最常見謊言

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

    Unix的相關知識

    1 Unix哲學 Unix 哲學注重實效,立足于豐富的經驗,并不會在正規方法學和標準中找到它,它更接近于隱性的半本能的知識。Unix程序員在探索開發的過程中積累的經驗,非Unix的程序員也能夠從這
    發表于 12-10 07:13

    堆和棧的區別

    程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。
    的頭像 發表于 11-27 18:13 ?1084次閱讀

    軟通國際亮相2025沙中開源與AI科技峰會

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

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

    1024程序員日”系列活動至此劃上了一圓滿句號。本屆1024程序員節以“AI構建世界,智能引領未來”為主題,廣邀技術大咖、產業領袖、企業代表與全球開發者齊聚星城
    的頭像 發表于 10-27 18:59 ?775次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促學、以賽選才”|1024程序員節暨開源鴻蒙構建大會圓滿落幕!

    10月24日,由開鴻智谷聯合主辦的長沙1024程序員節暨開源鴻蒙構建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術分享與實戰競賽相結合的方式,著力培養“開源鴻蒙+AI”領域
    的頭像 發表于 10-27 17:58 ?704次閱讀
    開鴻智谷“以賽促學、以賽選才”|1024<b class='flag-5'>程序員</b>節暨開源鴻蒙構建大會圓滿落幕!

    程序設計與數據結構

    的地址)出發,采用推導的方式,深入淺出的分析了廣大C程序員學習和開發中遇到的難點。 2. 從方法論的高度對C語言在數據結構和算法方面的應用進行了深入講解和闡述。 3. 講解了絕大多數C程序員開發
    發表于 05-13 16:45

    CY7C68013A無PID和VID,如何制作PDF?

    我用 CY7C68013A MCU 設計了一 PCB,所以這意味著我不是程序員之類的。 但是我嘗試上傳一些代碼,但沒有 PID 和 VID。 我找到了一些關于如何制作的 PDF,但那些對我來說很難。 有人可以幫我嗎?
    發表于 05-13 07:50

    計算機網絡排錯思路總結

    明人不說暗話,這篇文章我們來聊一非常有用,同時也是程序員必備的技能,那就是網絡排錯思路大總結。
    的頭像 發表于 04-01 17:32 ?891次閱讀
    計算機網絡排錯思路總結

    如何在 樹莓派 上編寫和運行 C 語言程序?

    ,一本很好的書是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。這本書對經驗豐富的程序員和想學習C語
    的頭像 發表于 03-25 09:28 ?1156次閱讀
    如何在 樹莓派 上編寫和運行 C 語言<b class='flag-5'>程序</b>?

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

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

    Gemini Vision + Raspberry Pi 化身“數字導盲犬”?

    本文討論了一位程序員利用樹莓派、攝像頭、Gemini和Python構建PeregrineEye設備,使其成為“數字導盲犬”為視障者服務的項目經歷,包括項目靈感、功能、構建過程、遇到的挑戰及未來計劃等
    的頭像 發表于 03-25 09:20 ?1923次閱讀
    Gemini Vision + Raspberry Pi 化身“數字導盲犬”?