從剛剛接觸程式的時候,我一直是推崇,程式的數學之美,即,程式中的演算法是經過數學處理以後的展現。我認為計算機就是現代數學的體現。我知道我的理解是沒有錯誤的,因為,幾乎所有的計算機大家都是數學出身,他們提出的演算法,他們發明的語言,無疑都是經典的,不衰的。
但是,自從工作以來,我發現了,程式的語文是勝過數學的。因為,我發現,讀懂別人的**更重要。最近我在看martin fowler的重構,是人民郵電出版社出的影印注釋版(沒注發布個所以然),雖然是英文的,我覺得寫得很簡單易懂, 還是推薦大家看英文的。我覺得書中說的一點特別好,就是程式是寫個今天的,更重要的是寫給明天的。從這句話,我理解是兩點,首先是為了明天的擴充套件,做好準備,其次,就是為了給別的程式設計師能看懂你的程式。乙個優秀的程式是自解釋的,一張uml類圖,乙份需求,乙份**足以,從需求我們看功能,從uml類圖,我們看架構,從**我們看細節。一切都是很簡單的。重構的書中還說道,完成同樣功能的**僅出現一次,一旦有多處出現同樣的**,重構之。也說得非常的好,我們現在總認為,複製貼上就行了,其實這就錯了,我們沒有為以後做打算,軟體的生命中,大部分是在維護,開發只是滄海之一粟。
這裡說到了重構,我想在說兩句,重構的意思是不改變介面,而只改變內部的結構,所以請大家不要說,把整個程式都推翻了,就說是重構了,這就錯了。我記得anders曾經說過一句話,介面一旦定下了,就不能再改,即使是錯的,我們只能增加新的介面。所以,介面是永遠不變的,所以,重構就只是內部的變化而已。
程式中的語文體現在,變數的命名,方法的命名,類的命名,命名空間的命名,減少分支的判斷,增加有用的注釋。其實我發現很多程式中的注釋(尤其是國人的程式中),是為了注釋而注釋的。所以增加些有用的注釋,才是正道。當你寫完注釋的時候,那給乙個新手看,如果他能看懂,說明你的注釋也寫到位了。白居易的詩歌是老嫗能懂,而我們的**要人人能懂。
從leetcode學到更多
4sum class solution public list foursum int num,int target arraylist ans new arraylist if num.length 4 return ans arrays.sort num for int i 0 itarget ...
從dir學到的
dir函式可以接受任何型別引數,如型別,物件,模組等.下面一段程式將說明dir乙個模組,類,物件時的情況 先寫乙個模組 python class person def init self,name self.name name def getname self return self.name he...
考了語文數學的學生
問題 專案4 考了語文數學的學生 下面提供了類stu的資料成員定義,和用於測試的main函式,參考如圖的執行結果,完成類的定義,並用多檔案形式組織程式 main include include h using namespace std int main endif h included stu.c...