1、當(dāng)性能遇到問題時,如果能在應(yīng)用層進(jìn)行計算和處理,那就把它從數(shù)據(jù)庫層拿出來。排序和分組就是典型的例子。在應(yīng)用層做性能提升總是要比在數(shù)據(jù)庫層容易的多。就像對于MySQL,sqlite更容易掌控。
2、關(guān)于并行計算,如果能避免就盡量避免。如果無法避免,記住,能力越大,責(zé)任越大。如果有可能,盡量避免直接對線程操作。盡可能在更高的抽象層上操作。例如,在iOS中,GCD,分發(fā)和隊列操作是你的好朋友。人類的大腦沒有被設(shè)計成用來分析那些無窮臨時狀態(tài)——這是我的慘痛教訓(xùn)所得。
3、盡可能簡化狀態(tài),盡可能局部本地化。適用至上。
4、短小可組合的方法是你的好朋友。
5、代碼注釋是危險的,因為它們很容易更新不及時或給人誤導(dǎo),但這不能成為不寫注釋的理由。不要注釋雞毛蒜皮的事情,但如果需要,在某些特殊地方,戰(zhàn)略性的長篇注釋是需要的。你的記憶會背叛你,也許會在明天早上,也許會在一杯咖啡后。
6、什么讓工作變得有樂趣?在你考慮將樂趣融入到你的日常工作之前,你必須先定義對于你而言樂趣意味著什么。對我來說,樂趣是指通過完成我以前認(rèn)為不可能的事情——歸咎于感知到的復(fù)雜——而實現(xiàn)的某種啟迪。因此,挑戰(zhàn)自我去探索和學(xué)習(xí)新的東西,而不是工作于那些陳詞濫調(diào)的任務(wù),使我更享受于我的工作。這讓我明白了我應(yīng)該少做那些沒有這種特點的工作,多做那些有這些特點的工作。
7、享受工作
當(dāng)然,享受的工作,別人可能會覺得難以茍同,這很正常。但是我依然想分享一些東西,這些東西讓我覺得自己像一只快樂的小蜜蜂,你可以借鑒我的點子,制作出你自己的清單。
工作于我自己的項目/思路
工作于促使我學(xué)習(xí)的項目
致力于開源
探索新的編程技術(shù)
探索新的編程語言
磨礪我的編輯技巧
擺弄我的編輯器配置
8、估算解決問題所需要的時間。
不要怕,承認(rèn)吧!我曾見過一些程序員為了解決一個特殊問題而坐在顯示器前面8小時。為自己定一個時間限制吧,1小時、30分鐘或甚至15分鐘。如果在這期間你不能解決問題,那就去尋求幫助,或到網(wǎng)上找答案,而不是嘗試去做“超級堆碼員”。
9、編程語言是一種語言,只是一種語言。
隨著時光推移,只要你理解了一種語言的原理,你會發(fā)現(xiàn)各種語言之間的相似之處 。你所選擇的語言,你應(yīng)該覺得“舒服”,并且能夠?qū)懗鲇行Вǘ液啙崳┑拇a。最重要的,讓語言去適應(yīng)項目,反之亦然。
10、不要過于注重程序的“設(shè)計模式”。
有時候,寫一個簡單的算法,要比引入某種模式更容易。在多數(shù)情況下,程序代碼應(yīng)是簡單易懂,甚至清潔工也能看懂。
11、經(jīng)常備份代碼。
在我年輕時,我就有過因硬盤故障而丟了大量代碼的經(jīng)歷,這經(jīng)歷很恐怖的。只要你一次沒有備份,就應(yīng)當(dāng)像有著嚴(yán)格的期限,客戶明天就需要。此時就該源碼/版本控制軟件大顯身手了。
12、帶著問題睡覺
如果你正在解決一個很難的問題,那么不妨帶著問題睡覺。有科學(xué)研究表明,這樣做雖然你表明上并沒有在主動思考,但你的潛意思卻這么做了。其結(jié)果就是,第二天再去研究問題,解決方案已經(jīng)呼之欲出了。
13、改變/跳槽
不要害怕角色變化。和不同的人共事,開發(fā)不同的產(chǎn)品,感受不同的公司文化是非常有意思的。在我看來,太多的人只是被動地呆在同樣的地方年復(fù)一年的工作,只有在被迫的情況下才去改變。
14、活到老學(xué)到老