碼農(nóng)是一種游離于在二維世界(二進制)和人類現(xiàn)實世界之間的一種奇異的生物。關(guān)于程序,有人形容“程序有如生命。總處于演化之中。新需求就是基因突變。可能進化,可能劣化,可能崩潰。版本控制保存眾多樣本,提供重試的機會。單元測試就像DNA雙鏈。將不自洽的細節(jié)揪出來。”
每個人的觀點和看法可能不太一樣,畢竟每個人達到的境界不一樣,觀看的視角也不一樣,但是不管怎么樣,但凡程序員就避免不了要寫代碼,或者要懂代碼,那么寫代碼的目的又是什么呢?
當你水平達到了一定程度之后,你經(jīng)常面對的是“效率”和“簡潔”的選擇,這已經(jīng)沒有辦法讓你的程序在這兩方面變得絕對更優(yōu),魚和熊掌很難兼得。
對于那些年薪百萬的,或者真正的大神來說,并不是每一行程序性能都需要優(yōu)化到極致,而是在這二者之間掌握一個所需要的平衡。當代碼量上去之后,對于大部分代碼而言,可讀性和穩(wěn)定性的重要性就會逐漸超過性能,也就是說寫得清晰易懂不犯錯比下筆就是神算法要簡單得多。
舉個比較簡單的例子,一個有序搜索,做過10道算法題的人都知道logn的,但是當你確定數(shù)據(jù)量不會超過15,并且這段算法不是critical path的時候,是完全可以直接寫線性解的,因為線性解比logn要清晰簡明得多,而且不會出現(xiàn)錯誤。
因此在成為大神的路上,思考遠遠要比書寫重要,反思遠遠比重復重要。想清楚了再下筆去寫,知道你要的是什么。在實現(xiàn)一個功能之前,腦子里先相處三種實現(xiàn)的方式,然后問自己我需要的最重要的東西是什么。而不是見到什么都先brute force,然后開始調(diào),調(diào)好了發(fā)現(xiàn)原來這算法可以變成logn,然后推翻了重寫。這完全是在浪費自己的時間和精力。當然了另一個極端就是,遇到什么東西都先想最優(yōu)解,不是最優(yōu)解堅決不寫。
總而言之,寫代碼的目的,不是追求,也不是追求最簡單,而是最好用。
責任編輯:wv
-
程序員
+關(guān)注
關(guān)注
4文章
950瀏覽量
29768
發(fā)布評論請先 登錄
相關(guān)推薦
評論