增加工作質量及持久性

。WWDC2019
。當提到craft時,你會想到手藝設計,但其實是包含計畫、製作、執行。當然coding時,也是類似的概念。

。身為一位開發者,當我們面臨各式各樣的需求時,我們想必是非常困難,技巧是由時間而累積而成,學習享受過程,如同享受達成目的一樣。
。起初需要養成focus的習慣,這種習慣如同開車一樣會自動專注,養成良好習慣 — 注意細節(雖然使用者無法直接看到,但其可能會影響性能、可靠性、穩定性)

1. Organize — 組織
Functional organization with groups,
Mirror project structure and file structure,
Break apart large storyboards,
Modernize your project file,
Throw away code scraps,
Address the root cause of warnings
保持工作項目整齊有序,善於Organize你的檔案及文件,能夠讓你更快速又清楚找到問題並解決問題,以group方式去分類你的文件,減少日後的混淆及錯誤。
並刪除不需要的code,不要只是注解掉,倘若真的有天需要用到,也會在你的歷史文件裡面找到。
warning警告,永遠不要將警告留在代碼中,要一邊開發邊修復,因為你以後不會有時間回頭解決了,日積月累只會越來越多。


2. Track — 控制代碼
Use source control,
Keep commits small and isolated,
Write useful commit messages,
Utilize branches for bug and feature work
啟動代碼控制(create Git repository),可以追蹤你的代碼變量,保持小量遷入代碼、並使用分支,填寫有用的提交訊息:更改的原因、想法、變動哪些將會是你對未來查看的注釋,merge時可以透過訊息找到需要的代碼部分

3. Document — 文檔及註釋
Comments are critical for future understanding
Good comments provide background and reasoning
Use descriptive variable and constant names
Include documentation
好的文檔或註釋能夠讓讀者理解,並理解代碼的順序跟步驟,但最後為什麼需要寫這段代碼?
可以幫助未來的你更快理解這段代碼。
變數名稱需要有意義 ,或是加入文擋來標註
option⌥ + command⌘ + /

4. Test — 測試
Unit Tests
Write unit tests
Run unit tests before committing code
Build a foundation for continuous integration

5. Analyze — 分析
Simulate poor networks with Network link Conditioner
Use sanitizers and checkers
Measure performance and efficiency with Debug Gauges
Investigate issues with Instruments
需要列入工作流程的一部分,網路問題可能在家中或辦公室測試,但有可能得到一個不確定的結果,可透過xcode內建的網路調節器去做測試,這部分也是需要被觀察的,
可透過scheme tool:Address Sanitizer、Thread Sanitizer、Undefined Behavior Sanitizer、Main Thread Checker

6. Evaluate — 評估、鑑定
Include code review as part of your practice
Understand each line
Build it
Run tests
Proofread for style, spelling, and syntax
一位獨立工作者,可以靈活且快速完成,因為你的想法可以決定一切,缺點是你沒有機會和同事學習如何更好的使用語言、框架、SDK,雖然說解決問題可以用很多種方式,但總有一個是better way,某些方法更好是因為他更加精確或擁有更好的性能、可維護性、可靠性。
能夠運行不代表是完全正確的,他可能可以獲得更好的提升。
在Apple團隊都有一項政策,未審核過的代碼都無法成為專案的一部分,我們透過審核代碼可以學習更多且風格保持一致,當然可靠性也提升,這也保證整個團隊了解代碼更廣泛,解決bug範圍也更廣泛。
聽取他人意見,改善代碼。

7. Decouple — 不重複的
Determine functional segments and break the them out
Scale your work across multiple apps
Improve efficiency with extensions
Share your efforts with the broader community
Documentation is critical
簡潔、準確、可重複使用的代碼。
package、framework都是一種集中代碼的方式,同時也具有可移植性。
為了方便使用,當然package中需要具有良好的文檔。


8. Manage — 管理
Use community and open source projects responsibly
Understand dependencies thoroughly
Ensure that privacy is respected
Have a plan if a dependency goes away or is no longer maintained
package同時帶來好處,也帶有風險。
使用package、框架、其他函式庫,會有許多好處。在使用前你一定知道在使用前你要知道裡面是什麼,需要確保你了解、依賴性、數據會產生什麼,直白的說,你需要為你app內容及使用者數據負責,確認框架沒有收集不必要的資訊、從手機發送數據。
並注意其依賴性,畢竟多層依賴意味著你的app實際上取決於整個供應鏈的安全及成功,如果這個框架crash?如果沒有維護了呢?或是框架不提供了?你要自己修復這個公開bug?或是你要完全替代掉這個框架?你必須在使用前有一個計畫。



很久沒寫文章了,前陣子太多事情。
不錯的話拍個手吧~


