开发软件真是一件有意思的事情
這兩天在做一個小軟件,不知道怎么的,做了近10年的程序員,現在才有這樣的體會,原來開發程序真的很有意思。
當然,要想開發軟件有意思,必須具備一些前提條件,首先,你要有足夠的空余時間,其次,所開發的軟件是自己的創意,而不是公司用來忽悠客戶的,最后,你必須要有十分的熱情。
那么,有意思在什么地方呢?說出來可能有人會笑,有兩方面,一是創意源源不斷地涌出來,二是這些新的創意被逐步地實現。在實現了自己的想法以后,會很有成就感,也很想與人分享。所以,我會在稍后將這個軟件發布出來與大家共享。
這個軟件最初源于一個突然閃出的念頭,某一天我看到一篇關于如何截屏的文章,文章寫得比較粗,不過指出了關鍵點,也就是如何截取屏幕的內容。說白,這也沒什么,在.net里也就一條語句能夠實現,于是我便萌發了做一個截屏軟件的念頭。
不過我沒有立即動手,直到有一天這個念頭在我睡覺的時候都在想,于是便開始動手。在流了1滴汗以后,截屏的基本功能做好了,可以在屏幕上畫個區域,并且調整這個區域的大小,然后再將區域里的畫面保存為一個圖片。
做完以后馬上就有新的創意,因為用過SnagIt,知道它有一個編輯器可以對截下來的圖片再進行一些處理,加點方塊、線條、文字什么的,于是就打算做一個圖片的編輯器。可是,圖片的的編輯功能可沒有這么容易,至少對我來說是這樣的,不過既然想到了,就一定要做,否則晚上睡不好。
于是,大概策劃了一下,編輯器的功能與VS的窗體設計器類似,可以添加、刪除、選擇、拖動對象,而在這里,所謂的對象就是指一個個的形狀,比如方塊、圓形、文字框什么的。做這些功能,花了我3滴汗。
等這些功能有了以后,我發現要修改形狀的樣式也是件麻煩的事,比如背景色、線條顏色等,開始的時候放了一個.net自帶的屬性編輯器,可立即發現效果并不是太好,于是就想干脆做個形狀編輯的架構吧,類似于屬性編輯器,不過在界面形式上可以更松散。就這樣,花了我5滴汗的功夫把它完成了。
在做編輯器的同時,我發現一個單純的圖片文件根本不可能保存附加的形狀數據,必須要自己定義一個文件格式來存儲數據,這樣,花了我2滴汗設計和文件格式,以及實現了文件讀和寫的功能。
等編輯器做得差不多了,我又覺得界面上的菜單與功能的對應不是很方便,需要進行硬編碼,這樣開發起來很不方便。這樣,我又花了4滴汗模仿了VS的命令子系統。也就是說,一個菜單或按鈕可以綁定到一個命令,點擊后直接執行命令,菜單由配置文件來生成。
下面輪到主窗體了,一開始不知道怎么設置好,后來想來想去就做了類似資源管理器的樣子,右邊是截屏圖片的列表,那左邊是什么呢?是目錄列表,在這里,我又引入了“本地庫”的概念。本地庫就是存放截屏的容器,可以在庫中建立目錄和子目錄,這與Windows的文件系統相同,不同的目錄可以存放不同用途的截屏,當然,截屏文件是可以在不同的目錄中移來移去的。于是,我又花了2滴汗。
既然主窗體做得象Windows資源管理器,那應該支持文件的拖放咯。稍微研究了一下,這個功能就實現了。可是能不能直接拖到Windows資源管理器或者其它應用軟件,比如Word里呢?又是一番研究,實現了。還好這些功能都不是太復雜,只用了1滴汗。
所有的截屏都在庫里,怎么把它弄出來呢?當然要提供導出功能啦。導出圖片得仔細做,因為它可能會是用戶經常使用的功能,于是花了2滴汗做成功了。
到此為止,大部分功能都有了,但我突然又想到有些人截了屏以后喜歡在圖上放自己的個人信息,于是想到了增加一個水印的功能。水印應該是可以有多個,并且可以編輯,這樣就必須與原來的程序兼容,利用現有的代碼。又是一頓對原來程序的猛改,水印的功能又有了,花了我3滴汗。
是不是大致可以了呢?沒有!選項啊,這是增加用戶體驗一個很重要的方面,又是一陣子改動,花了2滴汗,做好了。
還有什么?對了,本地化,這可是邁出國門的必要手段,又花了4滴汗。
現在總行了吧,呵呵。雖然軟件的功能到這里已經全部說完了,可是創意遠遠不止這些……
?
如果你在看這篇文章,可能會很奇怪為什么總是要標出幾滴汗這樣。其實我只是想告訴你,這某個功能的工作量與最初的想法相比,其復雜程度有多少大。開始的時候根本不會想到最后會是什么樣的東西,回過頭來看,原來真的很有成就感。
轉載于:https://www.cnblogs.com/effun/archive/2011/01/19/1939522.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的开发软件真是一件有意思的事情的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java进阶 | Proxy动态代理机制
- 下一篇: maven nexus 说明