極客時間-左耳聽風-程序員攻略-程序員修養

程序員素養帖子:What are some of the most basic things every programmer should know?javascript

Bad architecture causes more problems than bad code.
壞的體系結構比壞的代碼引發更多的問題。
You will spend more time thinking than coding.
你會花更多的時間思考而不是編碼。
The best programmers are always building things.
最好的程序員老是在構建東西。
There’s always a better way.
總有更好的方法。
Code reviews by your peers will make all of you better.
你的同齡人的代碼審查會讓大家全部人都變得更好。
Fewer features for better code is always the right answer in the end.
減小特性以得到更好的代碼始終是正確的答案。
If it’s not tested, it doesn’t work.
若是沒有測試,它就不起做用。
Don’t reinvent the wheel, library code is there to help.
不要從新發明輪子,圖書館的代碼是有幫助的。
Code that’s hard to understand is hard to maintain.
難以理解的代碼很難維護。
Code that’s hard to maintain is next to useless.
難以維護的代碼幾乎是無用的。
Always know how your business makes money, that determines who gets paid what.
老是知道你的生意是如何賺錢的,這決定了誰會獲得什麼報酬。
If you want to feel important as a software developer, work at a tech company.
若是你想成爲一名軟件開發人員,在一家技術公司工做。

97 Things Every Programmer Should Know其中有 97 個很是不錯的編程方面的建議。這篇文章是比較經典的,別被 "97" 嚇住,你能夠快速瀏覽一下,會讓你有不一樣的感受的。另外,在工做一段時間後再來讀,你會更有感受。php

英文能力

必須指出,再往下走,有一個技能很是重要,那就是英文。若是對這個技能發怵的話,那麼你可能無緣成爲一個程序員高手了。由於咱們全部的計算機技術所有來自於西方國家,因此若是你要想成爲一個高手的話,那麼必須到信息的源頭去。英文的世界真是有價值的信息的集散地。你能夠在那裏,到官網上直接閱讀手冊,到 StackOverflow 上問問題,到 YouTube 上看不少演講和教學,到 GitHub 上參與社區,用 Google 查詢相關的知識,到國際名校上參加公開課……css

一、堅持 Google 英文關鍵詞,而不是在 Google 裏搜中文。html

二、在 GitHub 上只用英文。用英文寫代碼註釋,寫 Code Commit 信息,用英文寫 Issue 和 Pull Request,以及用英文寫 Wiki。前端

三、堅持到 YouTube 上天天看 5 分鐘的視頻。YouTube 上有相關的機器字幕,實在不行就打開字幕。java

四、堅持用英文詞典而不是中文的。好比:劍橋英語詞典(https://dictionary.cambridge.org/) 或是 Dictionary.com 。你能夠安裝一個 Chrome 插件 Google Dictionary。node

五、堅持用英文的教材而不是中文的。好比:BBC 的 Learning English ,或是到一些 ESL 網站上看看,如 ESL: English as a Second Language 上有一些課程。python

六、花錢參加一些線上的英文課程,用視頻和老外練習。jquery

問問題的能力

寫代碼的修養

  • 《代碼大全》
  • 重構:改善既有代碼的設計》這本書是 Martin Fowler 的經典之做。這本書的意義不只僅在於 " 改善既有代碼的設計 ",也指導了咱們如何從零開始構建代碼的時候避免不良的代碼風格。這是一本程序員必讀的書。
  • 修改代碼的藝術》,做者將理解、測試和修改代碼的原理、技術和最新工具(自動化重構工具、單元測試框架、仿對象、集成測試框架等),與解依賴技術和大量開發和設計優秀代碼的原則、最佳實踐相結合,許多內容很是深刻。這本書可讓你不只能掌握最頂尖的修改代碼技術,還能夠大大提升對代碼和軟件開發的領悟力。
  • 代碼整潔之道》,這本書提出一種觀念:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較爲可靠,也爲後期維護和升級奠基了良好基礎。本書做者給出了一系列行之有效的整潔代碼操做實踐。這些實踐在本書中體現爲一條條規則(或稱 " 啓示 "),並輔以來自現實項目正反兩面的範例。
  • 程序員的職業素養》,講解成爲真正專業的程序員須要什麼樣的態度、原則,須要採起什麼樣的行動。做者以本身以及身邊的同事走過的彎路、犯過的錯誤爲例,意在爲後來人引路,助其職業生涯邁上更高臺階。

另外,做爲一個程序員,Code Review 是很是重要的程序員修養。 Code Review 對個人成長很是有幫助,我認爲沒有 Code Review 的公司都沒有必要呆(由於不作 Code Review 的公司必定是不尊重技術的)。下面有幾篇我以爲還不錯的 Code Review 的文章,供你參考。

除了 Code Review 以外,Unit Test 也是程序員的一個很重要的修養。寫 Unit Test 的框架通常來講都是從 JUnit 衍生出來的,好比 CppUnit 之類的。學習 JUnit 使用的最好方式就是到其官網上看 JUnit User Guide中文版)。而後,有幾篇文章你能夠看看(也能夠自行 Google):

安全防範

OWASP - Open Web Application Security Project

OWASP 是一個開源的、非盈利的全球性安全組織,致力於應用軟件的安全研究。其被視爲 Web 應用安全領域的權威參考。2009 年,國際信用卡數據安全技術 PCI 標準將其列爲必要組件,美國國防信息系統局、歐洲網絡與信息安全局、美國國家安全局等政府機構所發佈的美國國家和國際立法、標準、準則和行業實務守則參考引用了 OWASP。

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

OWASP Top 10 項目 是程序員很是須要關注的最基本的也是最嚴重的安全問題,如今其已經成了一種標準,這裏是其中文版《OWASP Top 10 2017 PDF 中文版

下面是安全編程方面的一些 Guideline。

伯克立大學的 Secure Coding Practice Guidelines

卡內基梅隆大學的 SEI CERT Coding Standards

一篇和 HTTP 相關的安全文章也是每一個程序員必需要讀的——《Hardening Your HTTP Security Headers》。

防護性編程(Defensive Programming):The Art of Defensive ProgrammingOverly defensive programming

軟件工程和上線

系統上線是一件比較嚴肅的事,這代表你寫的軟件不是跑在本身的機器上的玩具,或是實驗室裏的實驗品,而是交互給用戶使用的,甚至是用戶付費的軟件。對於這樣的軟件或系統,咱們須要遵照一些上線規範,好比,須要認真測試,並作上線前檢查,以及上線後監控。下面是幾個簡單的規範,供你參考。

完美軟件:對軟件測試的各類幻想》,這本書重點討論了與軟件測試有關的各類心理問題及其表現與應對方法。做者首先闡述軟件測試之因此如此困難的緣由–人的思惟不是完美的,而軟件測試的最終目的就是發現對改善軟件產品和軟件開發過程有益的信息,故軟件測試是一個信息獲取的過程。

Google 軟件測試之道》,描述了測試解決方案,揭示了測試架構是如何設計、實現和運行的,介紹了軟件測試工程師的角色;講解了技術測試人員應該具備的技術技能;闡述了測試工程師在產品生命週期中的職責;講述了測試管理,並對在 Google 的測試歷史上或者主要產品上發揮了重要做用的工程師的訪談,這令那些試圖創建相似 Google 的測試流程或團隊的人受益很大。

Checklist :

Server Side checklist

Single Page App Checklist

Monitoring 101

附錄:編程規範

有修養的程序員纔可能成長爲真正的工程師和架構師,而沒有修養的程序員只能淪爲碼農。

編程語言相關

C 語言

C++ 語言

Go 語言

  • Effective Go ,Go 的語法不復雜,因此,Go 語言的最佳實踐只須要看這篇官方文檔就夠了。

Java 語言

JavaScript 語言

PHP 語言

  • PHP FIG,PHP 編碼規範及標準推薦。
  • PHP The Right Way,除了編碼規範以外的各類 PHP 的最佳實踐,還包括一些設計模式,安全問題,以及服務部署,Docker 虛擬化以及各類資源。
  • Clean Code PHP,《代碼整潔之道》的 PHP 實踐。

Python 語言

Ruby 語言

Rust 語言

Scala 語言

Shell 語言

Node.js 相關

Mozilla 的編程規範

前端開發相關

最後是一個前端開發的各類注意事項列表,很是有用。

  • Front-End Checklist ,一個前端開發的 Checklist,其中包括 HTML、CSS 和 JavaScript,還和圖片、字體、SEO、性能相關,還包括關一些和安全相關的事項,這個列表真的是太好了。

移動端相關

  • Kotlin

Coding Conventions

  • Objective-C 語言

Objective-C Style guide,Style guide & coding conventions for Objective-C projects。

Google Objective-C Style Guide

NYTimes Objective-C Style Guide ,The Objective-C Style Guide used by The New York Times。

  • Swift 語言

API Design Guidelines

Swift - 一個 Swift 的相關編程規範的教程。

Swift style guide

Metova’s Swift style guide:https://github.com/metova/swift-style-guide

Xmartlabs Swift Style Guide:https://github.com/xmartlabs/Swift-Style-Guide

API 相關

開發工具相關

Markdown 相關

JSON

Git 相關

正則表達式相關

相關文章
相關標籤/搜索