程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#編程普通型計算器 經驗與感悟,

C#編程普通型計算器 經驗與感悟,

編輯:C#入門知識

C#編程普通型計算器 經驗與感悟,


先貼圖:

 

這是用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 ,退格 ,根號, 小數點, 根號。事先計劃好這些鍵的功能目標,可以少走不少彎路。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved