標籤:style blog http io ar os sp strong 資料
先貼圖:
這是用C# 語言編寫的普通型計算機,功能基本模仿Windows8內建計算機程式(版本6.3,組建9600)。支援加、減、乘、除、退格、清除、平方根、倒數、相反數、連續四則、連續等號、自動補齊、記憶、鍵盤輸入等功能。可以應對已知的多種形式輸入而不發生崩潰,計算結果基本正確。
但是該計算機與Windows內建版本相比還有很多不足:例如,精度無法達到後者水平;“顯示屏”部分只有一行,無法顯示當前運算式子;未對運算時十進位與二進位相互轉化資料丟失現象做最佳化(例如 12.45 – 12.4 ,即“安卓計算機Bug http://www.guokr.com/article/27173/ ”);功能相比後者也更為簡單。
該計算機程式特點:色彩較為鮮豔,至於美不美,就仁者見仁智者見智了;由於“顯示屏”只有一行,設計當M中存有資料時,使MR按鈕顏色變化來提示;另外在某處藏有彩蛋,數目不詳。
下面甩,請諸位對存在的問題批評指正。
:(需安裝 .Net Framework才能運行)
http://pan.baidu.com/s/1gdzkigN
編寫的感悟:
1.開始一項工作時,計劃要清晰,要對目標有深入的瞭解。例如,我在編程過程中發現,Windows計算機具有自動補齊功能(如按鍵 1 + 2 = 5 = ,顯示 7,即 5 + 2)。而原來頭腦中以為,運算完畢,就可以清空資料。
2.編程風格的規範很重要。命名是一個有技術的工作,要反映一個變數、函數等的性質、從屬,讓人一目瞭然;善於寫注釋,使之簡明、保持有效。修改代碼,先改注釋。如果像某著名C語言教材一樣亂寫代碼,很容易誤入歧途,自己也認不清程式,從而走向重寫之路。我想到了Python的一個彩蛋,作為參考:
The Zen of Python, by Tim Peters
Python之道
Beautiful is better than ugly.
美觀勝於醜陋。
Explicit is better than implicit.
顯示勝於隱式。
Simple is better than complex.
簡單勝於複雜。
Complex is better than complicated.
複雜勝於過度複雜。
Flat is better than nested.
平面勝於嵌套。
Sparse is better than dense.
稀少勝於稠密。
Readability counts.
可讀性需要考慮。
Special cases aren‘t special enough to break the rules.
即使情況特殊,也不應打破原則,
Although practicality beats purity.
儘管實用勝於純淨。
Errors should never pass silently.
錯誤不應悄無聲息的通過,
Unless explicitly silenced.
除非特意這麼做。
In the face of ambiguity, refuse the temptation to guess.
當有混淆時,拒絕猜測(深入的搞明白問題)。
There should be one-- and preferably only one --obvious way to do it.
總有一個,且(理想情況下)只有一個,明顯的方法來處理問題。
Although that way may not be obvious at first unless you‘re Dutch.
儘管那個方法可能並不明顯,除非你是荷蘭人。(Python的作者Guido是荷蘭人,這是在致敬)
Now is better than never.
現在開始勝過永遠不開始,
Although never is often better than *right* now.
儘管永遠不開始經常比倉促立即開始好。
If the implementation is hard to explain, it‘s a bad idea.
如果程式實現很難解釋,那麼它是個壞主意。
If the implementation is easy to explain, it may be a good idea.
如果程式實現很容易解釋,那麼它可能是個好主意。
Namespaces are one honking great idea -- let‘s do more of those!
命名空間是個絕好的主意,讓我們多利用它。
3.在測試時,要兼顧普遍情況和特殊情況。我搞了一個隨機指令碼,產生隨機的提示符,對照Windows計算機操作,一連測了800行都沒有問題。但是馬上,又發現了BUG。這說明隨機指令碼的代表性不夠,如果真要用代表性的運算測試,實際上30-50次運算就夠了。計算機裡面的特殊鍵有很多,例如 0 ,退格 ,根號, 小數點, 根號。事先計劃好這些鍵的功能目標,可以少走不少彎路。
C#編程普通型計算機 經驗與感悟