精通one,學習another,關注next

2021-09-01 13:39:39 字數 2679 閱讀 2693

我的乙個程式設計師朋友常跟我說記住超過 200 個 c++ 函式是多麼的有幫助。

我從來不必去查詢函式的定義,因此我可以比其他程式設計師程式設計快上50%。

他自豪的說。可結果是什麼?

難道他不知道編譯器的**自動完成功能可以節約大量查詢函式及輸入函式的時間嗎,另外當c#發布出來後,他在記憶函式上面的努力就白費了。

我們都會有因為這樣或者那樣原因而不得不建立的**集。 我從來不記得連線資料庫的準確**語句,所以我每次都不得不在**集中花10分鐘去查詢它。 為了解決這個問題,我建立了乙個用於記錄**片段的 word 文件,以幫助我記憶和查詢。

我的乙個同事建了個記錄鏈結的書籤,另外乙個同事在他的郵件中儲存了這些內容。無論你的方法是什麼,都是一種可以使你方便查詢到檔案或內容的好習慣。 當你建立你的知識庫後,你會發現它將極大的幫助你去把**寫得更好和更快。

很多初級程式設計師問我「我怎樣做這個,或者我怎樣做那個?」我總是會跟他們說「你想做什麼呢?」 聽聞此言後,他們會死盯著我,就好像我跟他們的媽媽約會了一樣。

這就是我的下乙個觀點,絕不要在知道你想做什麼之前去學習怎樣做,比如乙個程式設計師想要搜尋乙個文字檔案中是否存在的某個特定的詞彙。

下面是用c#來實現該目的:

c#**  

string filecontent;    

system.io.filestream mystream = new filestream("c:\\aa.txt", filemode.open);    

system.io.streamreader mystreamreader = new streamreader(mystream);     

filecontent = mystreamreader.readtoend();    

mystreamreader.close();    

int idx = filecontent.    

indexof("string");     

if (idx)      

現在我給他這些**去做這件事,但是更重要的是理解自己正在試著做的是什麼。 在這個例子中我們想做的是:

開啟乙個檔案

讀其中的內容

關閉檔案

搜尋字串

如果找到了則輸出結果

用這個方法來解決事情產生了以下結果:

它使語言無關

使你的精力集中在需要做什麼上

使你的**更易讀和有效知道要做什麼將使你的**更有目的性。

現在在 c++、php、vb.net、ruby on rails 中編寫上述**是很容易的事情了,因為你理解了要做什麼而不是怎樣去做

每乙個程式設計師都討厭注釋,但是為了寫出更有質量和易讀的**,我們需要注釋

問題是大多數程式設計師常被告知如何注釋,一些公司希望每一行**都有注釋, 另外一些則想要在每個函式前面有一段注釋,還有的規定在不同的**塊前注釋。

我並不同意這種強制性的規定,只要**是可用的、易讀的和有效的, 那麼程式設計師應當可以用其個人喜好的格式來注釋。 對我來說在每一行都注釋將破壞**的節奏,我更喜歡在函式的前面注釋, 羅列我接下來一步步將要做什麼,然後在函式中參考注釋中所寫的步驟進行程式設計。

這是適合我的模式,這樣可以在我程式設計前幫助我組織設計,也保持了我的節奏,使我不會因為需要注釋而在程式設計時中斷,也有助於其他人閱讀我的**

下面是我怎樣注釋的例子:

c#**  

/* 1. open file*  

2. read file into string*  

3. close file*  

4. search for key word*  

5. if fond return true; 

*/string filecontent;    

//1.  

system.io.filestream mystream = new filestream("c:\\aa.txt", filemode.open);    

system.io.streamreader mystreamreader = new streamreader(mystream);    

//2.  

filecontent = mystreamreader.readtoend();    

//3.  

mystreamreader.close();     

//4.  

int idx = filecontent.indexof("string");    

if (idx)      

這種注釋風格使我和大多數程式設計師可以容易的閱讀它。 那麼,找乙個適合你的注釋風格吧。

有時有程式設計師發 email 問我他應該學習什麼語言,什麼是最好的程式語言等等。你至少應該精通一門程式語言,可以相當好的去編寫**,然後再去學習掌握另外一門,逐漸的成長

以我自己為例,我精通 c#,擅長 php,並且已經開始使用 ruby on rails 大概有一兩個月了。 為什麼呢?精通一門語言可以使你進步,在進步中寫更好的**,找到完成任務更好的方法等

進步也是我作為乙個程式設計師年復一年的工作,卻仍沒有覺得枯燥的原因。

Dubbo 學習記錄One

1.什麼是rpc?遠端服務呼叫。有服務的提供者也有呼叫者,rpc我自己的理解就是分布式。只不過它屬於系統間的呼叫,複雜度較高。我自己常用的有webservice 2.什麼是soa?統一的排程中心,將向外部提供的服務統一的管理起來。說白了就是把所有提供的服務全部集中在一起,然後做統一的排程,外界需要什...

Kinect 學習j記錄 one

kinect light coding 就是以紅外線發出人眼看不見的class1雷射光,透過鏡頭前的diffuser 光柵 擴散片 將雷射光均勻分布投射在測量空間中,再透過紅外線攝影機記錄下空間中的每個散斑,擷取原始資料後,再透過晶元計算成具有3d深度的影象。工具 sdk opencv vs2017...

機器學習先關概念

訓練樣本的標記資訊是未知的,目標是為了揭露訓練樣本的內在屬性,結構和資訊,為進一步的資料探勘提供基礎。1.1 聚類 聚類通常是指,對於未標記訓練樣本,根據樣本的內在相似性,將樣本劃分為若干個不相交子集的學習演算法。聚類涉及到資料點的分組。給定一組資料點,我們可以使用聚類演算法將每個資料點劃分為乙個特...