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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何编写优秀软件

發布時間:2024/1/1 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何编写优秀软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  作為每一名程序員,都希望自己能編寫出非常優秀的軟件,而要寫出好的軟件,并非易事,需要有良好的編程習慣,一流的技術水平和豐富的實踐經驗。作為北大青鳥的一名老師,我一直從事著ACCP課程的教學工作。通過多年的開發經驗和教學經驗以及在學生中發現的問題,我現在來談談軟件開發,希望能幫助各位學員編寫出優秀的軟件,成為出色的軟件工程師。

  1、?? 需要的便是最好的。對于公雞來說,麥粒勝過鉆石。

  需要的東西才是最好的。對于公雞來說,鉆石對它沒有任何價值,它不能吃,也不能用。而對于人來說,鉆石可能非常有用,因為我們需要。

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

  有些學生在考試的時候,更改試題的題目,不按題目要求來做,這是非常錯誤的。我跟他們說,試題就是用戶的需求,如果試題要求的你沒有做,就不能得分,做多了不能加分。同樣,用戶要求你開發一個軟件,你沒有按照他的要求來開發,他不會給你錢,你開發了多余的功能,他也不會多給你錢。我們開發軟件,一定要按照用戶的要求來開發,需要的便是最好的。

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

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

  很多程序員都知道,如果軟件沒有可讀性。那么就無法協同開發,因為別人無法閱讀你的代碼。同樣軟件沒有可讀性,可能過一段時間自己都看不懂自己寫的代碼了,這樣的代碼可能就成了一次性代碼,再也不能修改和使用了。

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

  3、?? 具有良好的復用性和靈活性。

  使用面向對象的開發技術,能很好的支持復用性和靈活性。封裝和繼承是用來復用的,多態是用來實現靈活性的。

  復用非常重要,可以開發大型應用程序。我們到處可以看到復用技術,封裝是讓變動的事物和不變的事物彼此隔離,不變的事物就可以復用了。而繼承很明顯在復用基類代碼。框架技術也是在復用,用戶控件是在復用,母版頁是在復用,三層結構也是在復用代碼。復用不是復制。復用是重復調用,復制是到處拷貝代碼。復用是很好的,復制是很差的。

  用戶的需求經常變化,那么怎么提高軟件的應對變化的特性(也就是靈活性)。多態性是用來實現靈活性的。我舉一個接口的例子,在Java和C#中都有接口,為什么要使用接口,為什么要用接口作為方法的參數。在計算機中我們可以看到USB接口,那么為什么用USB接口呢?因為使用USB接口后,就可以連接所有使用USB接口的設備了,今天你可以接打印機,明天可以接鼠標,后天可以接移動硬盤,再后天你可以接數碼相機,只要它們是USB接口的。所以接口可以根據你的變化來適應你所需要的設備,程序中的接口一模一樣。如何能根據用戶的變化做出快速的反應呢?這就需要我們的軟件寫的靈活。現在我們聽說的敏捷軟件開發也是如此。何為敏捷,在環境變化的情況下能快速的做出反應叫敏捷。

  所以我們應該深入的理解面向對象的思想,提高程序的復用性和靈活性。

  4、?? 高強度的測試,保證軟件的健壯性。

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

  如果軟件沒有進行有效的測試,你既得不到功勞,也沒人欣賞你的苦勞,你獲得最多的將只是疲勞。

  為什么軟件要有健壯性?對于一個人你肯定不希望自己長得非常的肥胖,因為這樣做什么都不方便,效率會非常低。長得太胖,是因為有多余的肉,而對于程序就是多余的廢代碼,很明顯廢代碼多了,會影響程序的執行效率的。同樣一個人長得太瘦了,什么事也干不了,還可能經常得病,哪個公司也不愿意要這種人。而對于程序,代碼太少了,實現不了功能,而且可能因為沒有進行異常處理造成運行不正常,這樣的軟件誰也不愿意使用。我們需要的人是長的非常健壯的人,做事效率高,不生病,看起來身體均稱。而對于代碼,執行效率高,不出錯,代碼有很好的可讀性。

  5、?? 學習解決問題的方法而不僅僅是知識本身。

  很多學生學習編程是靠記憶,這是非常錯誤的,一個人在一年中80%的知識是會忘記的。我可以跟大家說,我的記憶力是非常差的,但是我記住的東西是不會輕易忘記的。因為我是靠理解記憶。而且對于每一項技術,我會去深入的理解,所以我記憶的非常深刻。

  好,我們舉個例子,你看我怎樣理解。在學生學習Java的時候,我會問學生==號是比較地址相等還是值相等。大部分學生回答地址相等,有的學生回答值相等。我說:“全錯”。很明顯,他們沒有理解。值類型變量存放的是數值,引用類型變量存放的是對象的地址。那么兩個值類型變量比較肯定是比較值相等了,你說3==5是比較地址相等嗎?引用類型變量因為存放的是對象的地址,那么相等比較當然是地址相等了。

  學生學習自加運算符++時,有一次晚自習,班長給學生輔導,問所有學生,5++等于幾?所有學生都說等于6。幸好被我聽到。我相信他們都知道++是將自己加一,也都能分清楚變量和常量,可是合在一起運用都不知道了,但是你跟他們一講,他們都會理解,而且會理解的非常深刻。我對學生說:“5++是錯誤的。不能這樣用。自加是改變自身的值。而5是一個常量,常量的值是不能改變的。這不是自相矛盾嗎?所以自加和自減運算符只能用在變量上”。

  6、?? 遇到問題不可怕,關鍵在于你是否能解決問題。

  很多學生去參加面試,回來后非常不解的跟我說,面試單位給我出了個程序或者小項目,要我做完了過兩天再拿給他看。這不相當是開卷考試嗎?我跟他說,如果我是一個面試官,我也會這么做。因為我看重的,不是你記住了多少知識,而是你能解決多少問題。因為每個人都會遇到問題,老師也是如此,遇到問題不可怕,我們可以看書,可以上網查閱資料,可以問其他人,只要問題解決了,就非常好。

轉載于:https://www.cnblogs.com/zhaoxinxue/archive/2013/06/14/3127290.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。