日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何编写优秀软件

發(fā)布時(shí)間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何编写优秀软件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  作為每一名程序員,都希望自己能編寫出非常優(yōu)秀的軟件,而要寫出好的軟件,并非易事,需要有良好的編程習(xí)慣,一流的技術(shù)水平和豐富的實(shí)踐經(jīng)驗(yàn)。作為北大青鳥的一名老師,我一直從事著ACCP課程的教學(xué)工作。通過(guò)多年的開發(fā)經(jīng)驗(yàn)和教學(xué)經(jīng)驗(yàn)以及在學(xué)生中發(fā)現(xiàn)的問(wèn)題,我現(xiàn)在來(lái)談?wù)勡浖_發(fā),希望能幫助各位學(xué)員編寫出優(yōu)秀的軟件,成為出色的軟件工程師。

  1、?? 需要的便是最好的。對(duì)于公雞來(lái)說(shuō),麥粒勝過(guò)鉆石。

  需要的東西才是最好的。對(duì)于公雞來(lái)說(shuō),鉆石對(duì)它沒(méi)有任何價(jià)值,它不能吃,也不能用。而對(duì)于人來(lái)說(shuō),鉆石可能非常有用,因?yàn)槲覀冃枰?/p>

  那么什么樣的軟件才是最好的軟件呢?需要的便是最好的,滿足用戶需求的軟件才是最好的軟件。我們開發(fā)軟件的時(shí)候一定要以用戶為中心,為用戶設(shè)計(jì)軟件。而不要站在自己的角度來(lái)設(shè)計(jì)軟件,更不能更改用戶的需求。

  有些學(xué)生在考試的時(shí)候,更改試題的題目,不按題目要求來(lái)做,這是非常錯(cuò)誤的。我跟他們說(shuō),試題就是用戶的需求,如果試題要求的你沒(méi)有做,就不能得分,做多了不能加分。同樣,用戶要求你開發(fā)一個(gè)軟件,你沒(méi)有按照他的要求來(lái)開發(fā),他不會(huì)給你錢,你開發(fā)了多余的功能,他也不會(huì)多給你錢。我們開發(fā)軟件,一定要按照用戶的要求來(lái)開發(fā),需要的便是最好的。

  開發(fā)軟件一定要以用戶為中心,不要以自己為中心。你是為用戶開發(fā)軟件,軟件是賣給用戶的,不是賣給你自己的。所以你覺(jué)得好不一定好,只有用戶覺(jué)得好才是好軟件。一次答辯會(huì)上,一個(gè)學(xué)生的界面用鮮艷的顏色做背景,我覺(jué)得不太合適,我就問(wèn):“你項(xiàng)目中的背景顏色合理嗎?”,他說(shuō):“我覺(jué)得很好看”。很明顯,這樣的軟件一定是失敗的,他不是站在使用者角度看問(wèn)題。同樣在答辯會(huì)上,有些學(xué)生講解項(xiàng)目的時(shí)候,如果是可視化的項(xiàng)目,一個(gè)菜單一個(gè)菜單的講,如果是Web程序,一個(gè)網(wǎng)頁(yè)一個(gè)網(wǎng)頁(yè)的講。如果你是以設(shè)計(jì)者的角度來(lái)講解的話,只有你自己能聽懂,也只有你自己可能愿意聽。我們應(yīng)該站在使用者角度來(lái)講解項(xiàng)目。比如我要講解一個(gè)網(wǎng)上書店,先打開主頁(yè),然后分類瀏覽,瀏覽后可能要搜索書籍,加入購(gòu)物車,登錄,注冊(cè),下定單等等。用戶怎么用,我們?cè)趺粗v,這樣用戶更容易理解。

  2、?? 提高軟件的可讀性。

  很多程序員都知道,如果軟件沒(méi)有可讀性。那么就無(wú)法協(xié)同開發(fā),因?yàn)閯e人無(wú)法閱讀你的代碼。同樣軟件沒(méi)有可讀性,可能過(guò)一段時(shí)間自己都看不懂自己寫的代碼了,這樣的代碼可能就成了一次性代碼,再也不能修改和使用了。

  怎樣提高軟件的可讀性。有經(jīng)驗(yàn)的編程人員會(huì)告訴你:使用規(guī)范的命名,合理的分層結(jié)構(gòu),完整的文檔及注釋。我不會(huì)這樣跟你說(shuō),因?yàn)闄z驗(yàn)軟件可讀性的標(biāo)準(zhǔn)不僅僅是這些。那么我告訴你,要想讓你的軟件具有很好的可讀性,你應(yīng)該這樣做:把你的代碼給你班上的所有同學(xué)和老師閱讀。如果他們能夠看懂,那么你的代碼具有很好的可讀性。如果連老師都看不懂,那么你的代碼可讀性就非常差。同樣,作為程序員要有很好的溝通能力和語(yǔ)言表達(dá)能力。那么怎樣訓(xùn)練自己的表達(dá)能力以及知道自己的表達(dá)能力是否過(guò)關(guān)呢?當(dāng)同學(xué)遇到問(wèn)題,給同學(xué)講解,如果他能聽懂,說(shuō)明你的表達(dá)能力不錯(cuò),如果所有人都聽不懂,你的溝通和表達(dá)一定存在問(wèn)題。我們把自己的代碼給其他人看,一方面可能檢驗(yàn)自己的代碼是否具有可讀性,另一方面也可以幫助其他同學(xué)。同樣,同學(xué)有問(wèn)題我們幫助講解,一方面可以提高和檢驗(yàn)自己的表達(dá)能力,也能幫助其他同學(xué)學(xué)習(xí)知識(shí)。記住:幫助別人就是幫助自己。一個(gè)晚上一個(gè)瞎子提著燈籠,路上一個(gè)行人看到這個(gè)瞎子對(duì)他說(shuō),你一個(gè)瞎子,提著燈籠干什么,又看不見。瞎子說(shuō):我提著燈籠,是為了照亮別人,讓別人看清楚,以至于不撞到我。幫助別人就是幫助自己呀!世界級(jí)軟件大師Eric Gamma(設(shè)計(jì)模式之父、JUnit設(shè)計(jì)者、Eclipse架構(gòu)師)說(shuō)的好:“我們每個(gè)人都需要?jiǎng)e人的關(guān)懷和幫助,每個(gè)人也需要關(guān)懷和幫助別人。

  3、?? 具有良好的復(fù)用性和靈活性。

  使用面向?qū)ο蟮拈_發(fā)技術(shù),能很好的支持復(fù)用性和靈活性。封裝和繼承是用來(lái)復(fù)用的,多態(tài)是用來(lái)實(shí)現(xiàn)靈活性的。

  復(fù)用非常重要,可以開發(fā)大型應(yīng)用程序。我們到處可以看到復(fù)用技術(shù),封裝是讓變動(dòng)的事物和不變的事物彼此隔離,不變的事物就可以復(fù)用了。而繼承很明顯在復(fù)用基類代碼??蚣芗夹g(shù)也是在復(fù)用,用戶控件是在復(fù)用,母版頁(yè)是在復(fù)用,三層結(jié)構(gòu)也是在復(fù)用代碼。復(fù)用不是復(fù)制。復(fù)用是重復(fù)調(diào)用,復(fù)制是到處拷貝代碼。復(fù)用是很好的,復(fù)制是很差的。

  用戶的需求經(jīng)常變化,那么怎么提高軟件的應(yīng)對(duì)變化的特性(也就是靈活性)。多態(tài)性是用來(lái)實(shí)現(xiàn)靈活性的。我舉一個(gè)接口的例子,在Java和C#中都有接口,為什么要使用接口,為什么要用接口作為方法的參數(shù)。在計(jì)算機(jī)中我們可以看到USB接口,那么為什么用USB接口呢?因?yàn)槭褂肬SB接口后,就可以連接所有使用USB接口的設(shè)備了,今天你可以接打印機(jī),明天可以接鼠標(biāo),后天可以接移動(dòng)硬盤,再后天你可以接數(shù)碼相機(jī),只要它們是USB接口的。所以接口可以根據(jù)你的變化來(lái)適應(yīng)你所需要的設(shè)備,程序中的接口一模一樣。如何能根據(jù)用戶的變化做出快速的反應(yīng)呢?這就需要我們的軟件寫的靈活?,F(xiàn)在我們聽說(shuō)的敏捷軟件開發(fā)也是如此。何為敏捷,在環(huán)境變化的情況下能快速的做出反應(yīng)叫敏捷。

  所以我們應(yīng)該深入的理解面向?qū)ο蟮乃枷?#xff0c;提高程序的復(fù)用性和靈活性。

  4、?? 高強(qiáng)度的測(cè)試,保證軟件的健壯性。

  很多人不重視軟件測(cè)試,認(rèn)為測(cè)試是在浪費(fèi)時(shí)間。那么我告訴你,在軟件開發(fā)中,幾乎所有人都會(huì)參與測(cè)試,但不是所有人都會(huì)寫代碼,系統(tǒng)分析師對(duì)軟件功能最了解,他會(huì)做系統(tǒng)測(cè)試,軟件設(shè)計(jì)師對(duì)模塊與模塊的關(guān)系最為清楚,他會(huì)做集成測(cè)試,程序員對(duì)自己寫的代碼最清楚,他會(huì)做單元測(cè)試(或叫模塊測(cè)試)。測(cè)試人員還會(huì)做專門的測(cè)試。如果沒(méi)有進(jìn)行很好的測(cè)試,軟件在使用過(guò)程中出現(xiàn)了問(wèn)題,以后別人可能再也不使用你的軟件了,測(cè)試是保證軟件質(zhì)量最關(guān)鍵的一個(gè)因素。對(duì)于測(cè)試我們要注意以下兩點(diǎn):1)盡可能早的做測(cè)試。測(cè)試越早,發(fā)現(xiàn)問(wèn)題也越早,那么問(wèn)題也更容易解決。2)盡可能多的做測(cè)試。測(cè)試的用例越多,發(fā)現(xiàn)的問(wèn)題也越多,使用的時(shí)候出現(xiàn)的問(wèn)題也就越少,軟件的質(zhì)量也就越高。

  如果軟件沒(méi)有進(jìn)行有效的測(cè)試,你既得不到功勞,也沒(méi)人欣賞你的苦勞,你獲得最多的將只是疲勞。

  為什么軟件要有健壯性?對(duì)于一個(gè)人你肯定不希望自己長(zhǎng)得非常的肥胖,因?yàn)檫@樣做什么都不方便,效率會(huì)非常低。長(zhǎng)得太胖,是因?yàn)橛卸嘤嗟娜?#xff0c;而對(duì)于程序就是多余的廢代碼,很明顯廢代碼多了,會(huì)影響程序的執(zhí)行效率的。同樣一個(gè)人長(zhǎng)得太瘦了,什么事也干不了,還可能經(jīng)常得病,哪個(gè)公司也不愿意要這種人。而對(duì)于程序,代碼太少了,實(shí)現(xiàn)不了功能,而且可能因?yàn)闆](méi)有進(jìn)行異常處理造成運(yùn)行不正常,這樣的軟件誰(shuí)也不愿意使用。我們需要的人是長(zhǎng)的非常健壯的人,做事效率高,不生病,看起來(lái)身體均稱。而對(duì)于代碼,執(zhí)行效率高,不出錯(cuò),代碼有很好的可讀性。

  5、?? 學(xué)習(xí)解決問(wèn)題的方法而不僅僅是知識(shí)本身。

  很多學(xué)生學(xué)習(xí)編程是靠記憶,這是非常錯(cuò)誤的,一個(gè)人在一年中80%的知識(shí)是會(huì)忘記的。我可以跟大家說(shuō),我的記憶力是非常差的,但是我記住的東西是不會(huì)輕易忘記的。因?yàn)槲沂强坷斫庥洃?。而且?duì)于每一項(xiàng)技術(shù),我會(huì)去深入的理解,所以我記憶的非常深刻。

  好,我們舉個(gè)例子,你看我怎樣理解。在學(xué)生學(xué)習(xí)Java的時(shí)候,我會(huì)問(wèn)學(xué)生==號(hào)是比較地址相等還是值相等。大部分學(xué)生回答地址相等,有的學(xué)生回答值相等。我說(shuō):“全錯(cuò)”。很明顯,他們沒(méi)有理解。值類型變量存放的是數(shù)值,引用類型變量存放的是對(duì)象的地址。那么兩個(gè)值類型變量比較肯定是比較值相等了,你說(shuō)3==5是比較地址相等嗎?引用類型變量因?yàn)榇娣诺氖菍?duì)象的地址,那么相等比較當(dāng)然是地址相等了。

  學(xué)生學(xué)習(xí)自加運(yùn)算符++時(shí),有一次晚自習(xí),班長(zhǎng)給學(xué)生輔導(dǎo),問(wèn)所有學(xué)生,5++等于幾?所有學(xué)生都說(shuō)等于6。幸好被我聽到。我相信他們都知道++是將自己加一,也都能分清楚變量和常量,可是合在一起運(yùn)用都不知道了,但是你跟他們一講,他們都會(huì)理解,而且會(huì)理解的非常深刻。我對(duì)學(xué)生說(shuō):“5++是錯(cuò)誤的。不能這樣用。自加是改變自身的值。而5是一個(gè)常量,常量的值是不能改變的。這不是自相矛盾嗎?所以自加和自減運(yùn)算符只能用在變量上”。

  6、?? 遇到問(wèn)題不可怕,關(guān)鍵在于你是否能解決問(wèn)題。

  很多學(xué)生去參加面試,回來(lái)后非常不解的跟我說(shuō),面試單位給我出了個(gè)程序或者小項(xiàng)目,要我做完了過(guò)兩天再拿給他看。這不相當(dāng)是開卷考試嗎?我跟他說(shuō),如果我是一個(gè)面試官,我也會(huì)這么做。因?yàn)槲铱粗氐?#xff0c;不是你記住了多少知識(shí),而是你能解決多少問(wèn)題。因?yàn)槊總€(gè)人都會(huì)遇到問(wèn)題,老師也是如此,遇到問(wèn)題不可怕,我們可以看書,可以上網(wǎng)查閱資料,可以問(wèn)其他人,只要問(wèn)題解決了,就非常好。

轉(zhuǎn)載于:https://www.cnblogs.com/zhaoxinxue/archive/2013/06/14/3127290.html

總結(jié)

以上是生活随笔為你收集整理的如何编写优秀软件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。