轉(zhuǎn)眼間自學(xué)軟件已經(jīng)半年有余,所做軟件不能說(shuō)是很好,但是我認(rèn)為只要有用戶的軟件就是好軟件。今天把自己的開發(fā)軟件過(guò)程中的心得與體會(huì)總結(jié)起來(lái)、記錄下來(lái),希望新人少走彎路。
軟件開發(fā)之前,需要先構(gòu)思軟件大致功能、程序是否可行、程序具體實(shí)現(xiàn)辦法、程序代碼結(jié)構(gòu)、程序容錯(cuò)性、用戶體驗(yàn)設(shè)計(jì)、程序的執(zhí)行效率、軟件界面等。有必要的話建議新建個(gè)txt,保存程序具體開發(fā)流程,然后按照步驟一步步來(lái)。
明確軟件大致功能
首先我們要明確要做的這個(gè)軟件功能是什么、主要目的是干嘛的。我之前就在論壇上看到過(guò)一個(gè)網(wǎng)友發(fā)的記事本軟件,居然還帶音樂(lè)播放、3G掛Q等功能,實(shí)在是畫蛇添足了。比如為什么騰訊要開發(fā)那么多軟件,QQ音樂(lè)、QQ游戲、QQ影音等等等等..而不把他們綜合成為一個(gè)軟件?這是因?yàn)楦鬈浖δ艿尼槍?duì)性比較強(qiáng),因?yàn)橐粋(gè)使用QQ音樂(lè)聽歌的用戶,不可能會(huì)同時(shí)使用QQ影音看電影。當(dāng)然,如果副功能針對(duì)性不強(qiáng),和主功能有較強(qiáng)聯(lián)系的,可以合并開發(fā)。
程序是否可行
明確了軟件大致需要實(shí)現(xiàn)的功能之后,我們?cè)倏紤]這些功能是否可以實(shí)現(xiàn),如果某些功能根本沒有辦法實(shí)現(xiàn),后面的就不用看了。這里建議不能實(shí)現(xiàn)的問(wèn)題多多上網(wǎng)查查,論壇求助,一般情況下你遇到的問(wèn)題都是前輩們問(wèn)了好多次的問(wèn)題。
程序具體實(shí)現(xiàn)辦法
多個(gè)不同程序同樣的一個(gè)執(zhí)行結(jié)果,需要反復(fù)測(cè)試那種效率高、正確率高、用戶可能更喜歡哪一種、再選用哪一種。如做個(gè)程序判斷某QQ是否在線,你可以采用兩種方法:1:讓用戶在你的程序中登錄QQ,程序自動(dòng)尋找用戶指定的那個(gè)QQ好友,判斷他是否在線。2:直接讀取對(duì)應(yīng)QQ的QQ在線狀態(tài)圖標(biāo),進(jìn)行判斷。前者獲取的信息更詳盡,后者無(wú)需用戶登錄QQ即可查詢,兩者各有優(yōu)點(diǎn),采取哪一種取決于你程序的主功能。
程序代碼結(jié)構(gòu)
代碼結(jié)構(gòu)是十分需要重視的一個(gè)軟件開發(fā)階段,它差不多直接決定了你軟件的未來(lái)..一個(gè)代碼結(jié)構(gòu)混亂的程序,過(guò)段需要更新的時(shí)候,連你自己也看不出個(gè)所以然。在修改某些核心代碼的時(shí)候,甚至?xí)霈F(xiàn)牽一發(fā)而動(dòng)全身的情況。我在學(xué)習(xí)初期,就曾做過(guò)一個(gè)結(jié)構(gòu)混亂的程序,后來(lái)由于修改一個(gè)地方,報(bào)出10個(gè)錯(cuò)誤,最終無(wú)奈只好放棄了那個(gè)程序。建議大家在程序開發(fā)初期一定要注意這個(gè)問(wèn)題,盡量寫出無(wú)依賴性,可供其他程序任意調(diào)用的子程序,并做好備注。(推薦一篇關(guān)于程序代碼結(jié)構(gòu)的文章:防止代碼變質(zhì)的思考與方法)
程序容錯(cuò)性
程序容錯(cuò)性也是非常重要的一個(gè)地方,你的一個(gè)錯(cuò)誤彈窗,就可能讓一個(gè)用戶右上角,甚至直接刪掉你的軟件。比如“百度網(wǎng)盤搜索工具”的先前版本,軟件啟動(dòng)后,迅雷下載、快車下載、旋風(fēng)下載,這幾個(gè)按鈕,在用戶還未搜索文件時(shí)就是可點(diǎn)擊狀態(tài),一旦點(diǎn)擊就會(huì)數(shù)組成員超標(biāo)報(bào)錯(cuò)。這里建議開發(fā)者要全面考慮程序執(zhí)行中各種可能發(fā)生的情況,使不能讓用戶操作的組件都保持著“禁用”狀態(tài)。
用戶體驗(yàn)設(shè)計(jì)
用戶體驗(yàn)(簡(jiǎn)稱UE)FaceUI稱是一種純主觀的在用戶使用一個(gè)產(chǎn)品(服務(wù))的過(guò)程中建立起來(lái)的心理感受。因?yàn)樗羌冎饔^的,就帶有一定的不確定因素。個(gè)體差異也決定了每個(gè)用戶的真實(shí)體驗(yàn)是無(wú)法通過(guò)其他途徑來(lái)完全模擬或再現(xiàn)的。但是對(duì)于一個(gè)界定明確的用戶群體來(lái)講,其用戶體驗(yàn)的共性是能夠經(jīng)由良好設(shè)計(jì)的實(shí)驗(yàn)來(lái)認(rèn)識(shí)到。建議開發(fā)者合理運(yùn)用各種組件,塑造良好的用戶體驗(yàn)。
程序的執(zhí)行效率
功能大致開發(fā)好了,接下來(lái)就要看看能不能提高功能實(shí)現(xiàn)的效率,原來(lái)需要等5秒鐘的功能,看能不能3秒鐘搞定。建議開發(fā)者在軟件啟動(dòng)階段。功能執(zhí)行階段使用多線程調(diào)用事件,以加快軟件啟動(dòng)速度、功能執(zhí)行效率。
軟件界面
不注重界面的我把這條放在了軟件開發(fā)的末尾。其實(shí)這點(diǎn)也完全可以放在后面,因?yàn)橐粋(gè)不錯(cuò)的界面往往只需調(diào)用一個(gè)模塊、一句代碼就可以做到。除非是一些正規(guī)的軟件、需要用自繪搞好久。
發(fā)布前測(cè)試
切記,你所開發(fā)的軟件不是你一個(gè)人用的,不是只要你能運(yùn)行的軟件,別人就一定也可以運(yùn)行。軟件發(fā)布前要經(jīng)過(guò)虛擬機(jī)測(cè)試、QQ好友幫忙測(cè)試、確實(shí)沒問(wèn)題了再發(fā)布。
軟件發(fā)布
可以在你平時(shí)常逛的論壇、貼吧,也可以發(fā)表在軟件下載站等處。
收集用戶意見
軟件已經(jīng)開發(fā)完成并且發(fā)布了,接下來(lái)就是收集用戶的意見和建議,在軟件中適當(dāng)?shù)奈恢们度隥Q在線狀態(tài)按鈕、意見反饋按鈕都是不錯(cuò)的辦法。建議收集意見之后,除非重大BUG、漏洞,每1-2周更新一次足矣。(易語(yǔ)言程序推薦使用“凱旋留言反饋系統(tǒng)”,高效展示所有用戶的意見,甚至可以當(dāng)做專屬聊天室。)
開發(fā)中遇到問(wèn)題
最好自行解決,網(wǎng)上搜索,論壇發(fā)帖求助,等都是不錯(cuò)的辦法。建議平時(shí)學(xué)習(xí)過(guò)程中遇到牛人果斷加QQ,不懂的時(shí)候問(wèn)一下,不要太煩人,高手生氣直接拉黑了。
面對(duì)用戶的軟件才是軟件的最終形態(tài),軟件的存在價(jià)值在于:為用戶提供方便。